使用Dataprep仅写入日期分区表中的日期分区

时间:2018-08-23 15:54:49

标签: google-cloud-platform google-bigquery google-cloud-dataprep

我正在使用BigQuery视图从BigQuery表中获取昨天的数据,然后尝试使用Dataprep写入日期分区表中。

我的第一个问题是Dataprep无法正确拾取DATE类型的列,但是可以将它们转换为TIMESTAMP的工作(感谢Elliot)。

但是,在使用Dataprep并设置输出BigQuery表时,您只有3个选项:现有表AppendTruncateDrop。如果表是按日期分区的,并且您使用Truncate,它将删除所有现有数据,而不仅仅是该分区中的数据。

还有另一种应该使用的方式吗?我的替代方法是使用Dataprep覆盖表,然后使用Cloud Composer运行一些SQL将这些数据推送到日期分区表中。理想情况下,我只想使用Dataprep来执行此操作,但现在似乎不可能。

BigQuery表架构:

enter image description here

分区详细信息:

enter image description here

我要提取的数据很简单。一口气:

date | name
2018-08-08 | Josh1
2018-08-08 | Josh2

在另一个流程中:

date | name
2018-08-09 | Josh1
2018-08-09 | Josh2

在两种情况下它都会覆盖数据。

1 个答案:

答案 0 :(得分:-1)

您可以创建分区的table bases on DATE。写入分区表的数据会自动传递到适当的分区。

  

写入分区表的数据会根据分区列中的日期值(以UTC表示)自动传递到适当的分区。

追加数据以将新数据添加到分区。

您可以使用bq命令创建表:

bq mk --table --expiration [INTEGER1] --schema [SCHEMA] --time_partitioning_field date 

time_partitioning_field是定义要用于分区的字段的内容。