【发布时间】:2018-08-23 15:54:49
【问题描述】:
我正在使用 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 |
+------------|--------+
在这两种情况下都会覆盖数据。
【问题讨论】:
-
从BigQuery Data Type Conversions,您可以使用Dataprep 的“日期时间(时间戳)”类型写入BigQuery 表中的
TIMESTAMP,对吗?不过,我认为没有办法使用DATE。 -
感谢@ElliottBrossard 提供的信息。我已经设法使用
TIMESTAMP让它工作,但又出现了另一个问题。编辑了问题。某处是否有功能请求线程? -
您可以向Cloud Dataprep issue tanker提交功能请求。
-
我也有同样的问题!你在 DataPrep 中做到了吗?
-
嗨华章:无法选择分区。目标表文本框不可编辑,您必须从 GUI 中选择它。理想情况下,我想安排这个数据准备作业,以便它导入最新日期的数据而不是硬编码分区。我相信这可能是 Dataprep 的错误用例。 @MT467,我最终只是用 SQL 编写查询并使用 Composer 进行调度
标签: google-cloud-platform google-bigquery google-cloud-dataprep