繁体   English   中英

按文件对 BigQuery 中的表进行分区

[英]Partitioning a table in BigQuery by file

我想创建一个根据文件名分区的表。 例如,假设我有一千个销售文件,每个日期一个,例如:

  • Files/Sales_2014-01-01.csvFiles/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM