Клуб Яндекс.Метрики

Error code 400. Query is too complicated. Please reduce the date interval or sampling

Пост в архиве.

Добрый день.

Подскажите в чем причина данной ошибки. Возникает время от времени, не регулярно. Ниже привожу лог с выводом ошибок, описание запросов достаточно понятно.

29-11-17 18:42:24:401 ERROR [Connector-yandex] { code: 400,

  desc: 'Query is too complicated. Please reduce the date interval or sampling.',

  raw:

   [{ error_type: 'query_error',

       message: 'Query is too complicated. Please reduce the date interval or sampling.' }] } 

       Unhandled error in getData GET https://api-metrika.yandex.ru/stat/v1/data { 

  date1: '2017-11-15',

  date2: '2017-11-22',

  ids: '43374844',

  dimensions: 'ym:s:lastTrafficSource',

  metrics: 'ym:s:visits,ym:s:ecommercePurchases,ym:s:productPurchasedUniq,ym:s:ecommerceRevenue,ym:s:ecommerceRevenuePerVisit,ym:s:ecommerceRevenuePerPurchase',

  sort: '-ym:s:ecommerceRevenue,-ym:s:visits',

  lang: 'en' }

ИЛИ

29-11-17 18:42:25:054 ERROR [Connector-yandex] { code: 400,

  desc: 'Query is too complicated. Please reduce the date interval or sampling.',

  raw:

   [{ error_type: 'query_error',

       message: 'Query is too complicated. Please reduce the date interval or sampling.' }] } 

       Unhandled error in getData GET https://api-metrika.yandex.ru/stat/v1/data {

  date1: '2017-11-15',

  date2: '2017-11-22',

  ids: '43374844',

  dimensions: 'ym:s:productName',

  metrics: 'ym:s:visits,ym:s:productImpressions,ym:s:productImpressionsUniq,ym:s:productBasketsQuantity,ym:s:productPurchasedQuantity',

  sort: 'ym:s:productPurchasedQuantity,-ym:s:visits',

  lang: 'en' }

Если эти запросы могут показаться сложными, то вот такой сложным совсем не кажется:

29-11-17 18:42:25:317 ERROR [Connector-yandex] { code: 400,

  desc: 'Query is too complicated. Please reduce the date interval or sampling.',

  raw:

   [{ error_type: 'query_error',

       message: 'Query is too complicated. Please reduce the date interval or sampling.' }] }

Unhandled error in getData GET https://api-metrika.yandex.ru/stat/v1/data{ 

  date1: '2017-11-22',

  date2: '2017-11-29',

  ids: '43374844',

  dimensions: 'ym:pv:URLPath',

  metrics: 'ym:pv:pageviews',

  sort: '-ym:pv:pageviews',

  lang: 'en' }

Буду признателен, если кто-нибудь сможет прояснить ситуацию. Надо понять как минимум, как обработать данные ошибки, а в идеале их  избежать.

2 комментария
Так же при обработке столкнулся с проблемой. Подпишусь интересно найти решение. OCTOBOARD, если вдруг решение найдено, поделитесь пожалуйста.

?ids=<id>&metrics=ym:s:pageviews&filters=EXISTS(ym:pv:URL=*'<url>')&date1=2020-07-01&date2=2020-07-31  

Пытаюсь получить просмотры за месяц. Какое-то оличество отрабатывает, потом на рандомном url возвращает аналогичную ошибку:

Error code 400. Query is too complicated. Please reduce the date interval or sampling
Для себя решил проблему, через проверку статуса запроса. При этой ошибке API корректно возвращает код 400. Соответственно делаю повторную попытку запроса, если с первого раза получил 400, пока не получу 200. В рабочей версии буду делать 3 попытки после чего класть ошибку в лог и переходить к следующему урлу

Простой пример обработки (py):


def make_request(url):
    status_code = 0
    while status_code != 200:
        headers = {
            'Authorization': token
        }
        test_request = construct_url(url)
        response = requests.get(test_request, headers = headers)
        response_json = response.text
        status_code = response.status_code
    return response_json