Создание секционированной внешней таблицы в bigquery - PullRequest
0 голосов
/ 02 мая 2018

Я хотел создать внешнюю таблицу в bigquery, которая загружает данные из облачного хранилища Google. При создании таблицы из веб-интерфейса опция Тип разделов отключается. Можно ли как-нибудь создать секционированную внешнюю таблицу? Мои данные уже разбиты по формату даты на GCS Пример: / somepath / data / dt = 2018-03-22

1 Ответ

0 голосов
/ 02 мая 2018

Объединенные таблицы в GCS автоматически действуют как многораздельные таблицы, когда вы используете имя файла в качестве переменной (_FILE_NAME).

Например, это представление преобразует имя файла в собственную дату:

#standardSQL
CREATE VIEW `fh-bigquery.views.wikipedia_views_test_ddl`
AS SELECT
  PARSE_TIMESTAMP('%Y%m%d-%H%M%S', REGEXP_EXTRACT(_FILE_NAME, '[0-9]+-[0-9]+')) datehour
  , _FILE_NAME filename
  , line
FROM `fh-bigquery.views.wikipedia_views_gcs`

Позже я могу писать запросы вроде:

#standardSQL
SELECT *
FROM `fh-bigquery.views.wikipedia_views_test_ddl`
WHERE EXTRACT(YEAR FROM datehour)=2015
AND EXTRACT(MONTH FROM datehour)=10
AND EXTRACT(DAY FROM datehour)=21
AND EXTRACT(HOUR FROM datehour)=7

... и эти запросы будут открывать только файлы с именами, соответствующими этому шаблону.

Я написал целую историю об этом на https://medium.com/google-cloud/bigquery-lazy-data-loading-ddl-dml-partitions-and-half-a-trillion-wikipedia-pageviews-cd3eacd657b6.

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