在bigquery中创建分区外部表

时间:2018-05-02 06:47:43

标签: google-bigquery

我想在bigquery中创建一个外部表格,用于从Google云存储中加载数据。 在从Web UI创建表期间,分区类型的选项被禁用。 有什么方法可以创建分区外部表吗? 我的数据已在GCS上按日期格式分区 例如: / somepath / data / dt = 2018-03-22

1 个答案:

答案 0 :(得分:4)

当您将文件名用作变量(_FILE_NAME)时,GCS中的联合表自动充当分区表。

例如,此视图将文件名转换为本机日期:

#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写了一篇关于此事的全文。