У нас есть данные за несколько лет в виде разделенных во времени таблиц 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 и сохраняет дату в формате «ГГГГ-ММ-ДД».