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

Google cloud platform 使用Dataprep仅写入日期分区表中的日期分区,google-cloud-platform,google-bigquery,google-cloud-dataprep,Google Cloud Platform,Google Bigquery,Google Cloud Dataprep,我使用BigQuery视图从BigQuery表中获取昨天的数据,然后尝试使用Dataprep写入一个日期分区表 我的第一个问题是Dataprep无法正确地选择DATE类型列,但将它们转换为TIMESTAMP是可行的(感谢Elliot) 但是,当使用Dataprep并设置输出BigQuery表时,您只有3个选项可供选择:Append、Truncate或Drop现有表。如果表是日期分区的,并且您使用Truncate,它将删除所有现有数据,而不仅仅是该分区中的数据 有没有其他我应该使用的方法?我的替代

我使用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  |
+------------|--------+

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

您可以创建一个分区。写入分区表的数据会自动传递到相应的分区


写入分区表的数据将根据分区列中的日期值(以UTC表示)自动传递到相应的分区

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

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

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

时间分区字段定义了将用于分区的字段。

从中,您可以使用Dataprep的“Datetime(timestamp)”类型写入BigQuery表中的
时间戳,对吗?不过,我认为没有办法使用日期。谢谢@ElliottBrossard提供的信息。我设法用
时间戳
让它正常工作,但出现了另一个问题。编辑了这个问题。是否有功能请求线程?您可以向提交功能请求。我有相同的问题!您在DataPrep中成功完成了吗?您好,华章:无法选择分区。目标表文本框不可编辑,您必须从GUI中选择它。理想情况下,我希望安排这个dataprep作业,以便它导入数据的最新日期,而不是硬编码分区。我相信这可能是Dataprep的错误用例@MT467,我最终只是用SQL编写了查询,并使用Composer进行了调度。如何使用Dataprep写入分区?写入分区表的数据会自动传递到相应的分区您只需将数据发送到分区表,而无需“指定”分区。有没有办法用Dataprep截断该分区?据我所知,您只能截断整个表,而不仅仅是我更了解的特定分区,如果您想一天覆盖分区中的数据几次,请纠正我的错误。如果是这种情况,您可以将数据加载到一个临时表中,使用分区装饰器,您可以使用该临时表来编写_TRUNCATE