我正在使用BigQuery视图从BigQuery表中获取昨天的数据,然后尝试使用Dataprep写入日期分区表中。
我的第一个问题是Dataprep无法正确拾取DATE
类型的列,但是可以将它们转换为TIMESTAMP
的工作(感谢Elliot)。
但是,在使用Dataprep并设置输出BigQuery表时,您只有3个选项:现有表Append
,Truncate
或Drop
。如果表是按日期分区的,并且您使用Truncate
,它将删除所有现有数据,而不仅仅是该分区中的数据。
还有另一种应该使用的方式吗?我的替代方法是使用Dataprep覆盖表,然后使用Cloud Composer运行一些SQL将这些数据推送到日期分区表中。理想情况下,我只想使用Dataprep来执行此操作,但现在似乎不可能。
BigQuery表架构:
分区详细信息:
我要提取的数据很简单。一口气:
date | name
2018-08-08 | Josh1
2018-08-08 | Josh2
在另一个流程中:
date | name
2018-08-09 | Josh1
2018-08-09 | Josh2
在两种情况下它都会覆盖数据。
答案 0 :(得分:-1)
您可以创建分区的table bases on DATE。写入分区表的数据会自动传递到适当的分区。
写入分区表的数据会根据分区列中的日期值(以UTC表示)自动传递到适当的分区。
追加数据以将新数据添加到分区。
您可以使用bq命令创建表:
bq mk --table --expiration [INTEGER1] --schema [SCHEMA] --time_partitioning_field date
time_partitioning_field是定义要用于分区的字段的内容。