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

最佳答案

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

例如,此 View 将文件名转换为本地日期:

#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 写了一个完整的故事。

关于google-bigquery - 在 bigquery 中创建分区的外部表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50128628/

10-11 23:17
查看更多