Проблемы с часовым поясом в BigQuery (для разбиения и запроса) - PullRequest
2 голосов
/ 11 марта 2019

У нас есть система управления кампаниями. Мы создаем и проводим кампании на разных каналах. Когда пользователь щелкает / получает доступ к любому из Adv (как часть кампании), система генерирует журнал. Наша система размещена в GCP. С помощью функции экспорта журналы экспортируются в BigQuery

.

В BigQuery таблица журналов разделена с использованием поля «timestamp» (время создания журнала). Мы понимаем, что BigQuery хранит даты в часовом поясе UTC, поэтому разделы также основаны на времени UTC

Используя эту таблицу журналов, мы должны генерировать отчеты в день. Отчеты могут соответствовать количеству показов за день в кампании. И мы должны показать эти отчеты по времени ETC.

Поскольку таблица BigQuery разбита по часовому поясу UTC, для запроса на день ETC может потребоваться сканирование нескольких разделов. Обращался ли кто-нибудь к этой проблеме или имел предложения по оптимизации хранилища и запросов, чтобы он в полной мере использовал возможность раздела BigQuery

Мы планируем использовать GCP Data studio для отчетов.

1 Ответ

2 голосов
/ 11 марта 2019

BigQuery должен быть достаточно умным, чтобы фильтровать правильные часовые пояса при работе с разделами.

Например:

SELECT MIN(datehour) time_start, MAX(datehour) time_end, ANY_VALUE(title) title
FROM `fh-bigquery.wikipedia_v3.pageviews_2018` a
WHERE DATE(datehour) = '2018-01-03'

5.0s elapsed, 4.56 GB processed

enter image description here

Для этого запроса мы обработали 4,56 ГБ в разделе 2018-01-03.Что, если мы хотим скорректировать день в США?Давайте добавим это в предложение WHERE:

 WHERE DATE(datehour, "America/Los_Angeles") = '2018-01-03'

 4.4s elapsed, 9.04 GB processed

enter image description here Теперь этот запрос автоматически сканирует 2 раздела, так как он должен проходить по дням.Для меня это достаточно хорошо, поскольку BigQuery может автоматически это выяснить.

Но что, если вы хотите постоянно оптимизировать для одного часового пояса?Вы можете создать сгенерированный смещенный столбец DATE и использовать его для PARTITION для.

...