2

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

我的第一个问题是 Dataprep 不会正确选择DATE类型列,而是将它们转换为TIMESTAMP工作(感谢 Elliot)。

但是,在使用 Dataprep 并设置输出 BigQuery 表时,您只有 3 个选项:AppendTruncate现有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  |
+------------|--------+

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

4

1 回答 1

0

您可以基于 DATE创建分区表。写入分区表的数据会自动传送到相应的分区。

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

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

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

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

time_partitioning_field 定义了您将用于分区的字段。

于 2019-05-15T00:52:13.473 回答