[英]Partitioning a table in BigQuery by file
我想创建一个根据文件名分区的表。 例如,假设我有一千个销售文件,每个日期一个,例如:
Files/Sales_2014-01-01.csv
, Files/Sales_2014-01-02.csv
,...我想根据文件名(本质上是日期)对表进行分区。 有没有办法在 BQ 中做到这一点? 例如,我想执行类似于以下内容的加载作业(伪代码):
bq load gs://Files/Sales*.csv PARTITION BY filename
我能做的最接近的事情是什么?
当表中有 TIMESTAMP、DATE 或 DATETIME 列时,首先使用Time-unit column partitioning创建分区表。 当您将数据加载到表中时,BigQuery 会根据列中的值自动将数据放入正确的分区中。 要使用 bq CLI 创建时间单位列分区的空分区表,请参考以下命令:
bq mk -t \
--schema 'ts:DATE,qtr:STRING,sales:FLOAT' \
--time_partitioning_field ts \
--time_partitioning_type DAILY \
mydataset.mytable
然后将所有销售文件加载到该时间单位列分区表中。 它会自动将数据放入正确的分区。 以下命令将 gs://mybucket/ 中多个文件的数据加载到 mydataset 中名为 mytable 的表中。 模式将被自动检测到。 请参阅此链接以获取更多信息。
bq load \
--autodetect \
--source_format=CSV \
mydataset.mytable \
gs://mybucket/mydata*.csv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.