Explorer не использует разделы BigQuery - PullRequest
0 голосов
/ 21 сентября 2018

У нас есть данные за несколько лет в виде разделенных во времени таблиц Google BigQuery (разделенных по дням), и мы хотели бы просмотреть их с помощью функции проводника.Однако запросы панели инструментов Explorer, написанные для нас, не используют эти разделы должным образом.В качестве примера:

Я хочу видеть валовой доход и показы с 2018-09-01 по 2018-09-05.Я использую проводник, чтобы выбрать дату в качестве измерения, валовой доход и показы в качестве метрик, и использую фильтр даты, щелкнув 2018-09-01 в качестве начала и 2018-09-05 в качестве конца:

SELECT
  SUM(t0.revenue) AS t0_qt_4bw5pro3qb,
  SUM(t0.paid_impressions) AS t0_qt_63zplro3qb,
  FORMAT_TIMESTAMP('%Y%m%d', TIMESTAMP(t0.date)) AS t0_qt_f1ghgro3qb
FROM
  `project.dataset.table` AS t0
WHERE
  FORMAT_TIMESTAMP('%Y%m%d', TIMESTAMP(t0.date)) BETWEEN '20180901'
  AND '20180905'
GROUP BY
  t0_qt_f1ghgro3qb
ORDER BY
  t0_qt_f1ghgro3qb DESC;

Этозапрос, который Проводник производит для меня.Тем не менее, если я посмотрю на прогнозируемые расходы, в нем говорится, что это будет стоить более 200 МБ.Он не использует разделы должным образом.Если я изменю следующее:

WHERE FORMAT_TIMESTAMP('%Y%m%d', TIMESTAMP(t0.date)) BETWEEN '20180901'
AND '20180905'

на

WHERE date BETWEEN '2018-09-01' AND '2018-09-05'

, то стоимость запроса сократится до менее чем 1% (1,47 МБ) вышеупомянутой стоимости, что подтверждает мое подозрение, чтоИсходный запрос проводника неправильно использует секционированную таблицу.

Если я вручную выберум расширенный фильтр с датами, большими или равными 20180901 и меньшими или равными 20180905, то создается следующий запрос:

SELECT
  SUM(t0.revenue) AS t0_qt_4bw5pro3qb,
  SUM(t0.paid_impressions) AS t0_qt_63zplro3qb,
  FORMAT_TIMESTAMP('%Y%m%d', TIMESTAMP(t0.date)) AS t0_qt_f1ghgro3qb
FROM
  `project.dataset.table` AS t0
WHERE
  (t0.date >= PARSE_DATE('%Y%m%d', '20180901')
    AND t0.date <= PARSE_DATE('%Y%m%d', '20180905'))
GROUP BY
  t0_qt_f1ghgro3qb
ORDER BY
  t0_qt_f1ghgro3qb DESC;

Это уменьшает размер до 1,47 МБ и, таким образом, использует правильные разделы.

Я бы очень хотел использовать обычный фильтр даты, так как он прост в использовании и экономит многопо сравнению с выбранным вручную расширенным фильтром и добавлением определенного диапазона дат, особенно если вы часто используете функцию Explorer.

Так что я не уверен, является ли это ошибкой или я что-то делаюнеправильно.Рассматриваемая таблица разделена на DAY в столбце даты, который имеет тип DATE и сохраняет дату в формате «ГГГГ-ММ-ДД».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...