【发布时间】:2018-10-12 05:00:11
【问题描述】:
我想在 bigquery 中创建一个从谷歌云存储加载数据的外部表。 在从 Web UI 创建表期间,Partitioning Type 选项被禁用。 有什么方法可以创建分区外部表吗? 我的数据已经在 GCS 上按日期格式进行了分区 例如:/somepath/data/dt=2018-03-22
【问题讨论】:
标签: google-bigquery
我想在 bigquery 中创建一个从谷歌云存储加载数据的外部表。 在从 Web UI 创建表期间,Partitioning Type 选项被禁用。 有什么方法可以创建分区外部表吗? 我的数据已经在 GCS 上按日期格式进行了分区 例如:/somepath/data/dt=2018-03-22
【问题讨论】:
标签: google-bigquery
当您使用文件名作为变量 (_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
...这些查询只会打开名称与此模式匹配的文件。
【讨论】: