【发布时间】:2020-08-15 04:02:39
【问题描述】:
我有一个 DML 指令在 Bigquery 中运行,每小时运行一次,类似于这个:
MERGE dataset.DetailedInventory T
USING dataset.Inventory S
ON T.product = S.product
WHEN NOT MATCHED AND quantity < 20 THEN
INSERT(product, quantity, supply_constrained, comments)
VALUES(product, quantity, true, ARRAY<STRUCT<created DATE, comment STRING>>[(DATE('2016-01-01'), 'comment1')])
WHEN NOT MATCHED THEN
INSERT(product, quantity, supply_constrained)
VALUES(product, quantity, false)
我们正在尝试执行的这条指令不需要任何转换,但未来的其他指令会。
因此,我们正在考虑将 DataFlow 与 Apache Beam 结合使用。
我正在尝试在 Apache Beam 管道中执行此 MERGE 语句,类似于:
pipeline.apply(
"DEPARTMENT - RUN MERGE WITH INSERT AND UPDATE STATEMENTS",
BigQueryIO.readTableRows().fromQuery(MERGE_DEPARTMENT_I_U).usingStandardSql());
问题是当我们把这段代码放在 DataFlow 上运行时它不起作用。
我想知道这是否是使用 Java 执行 Bigquery MERGE 语句的最佳解决方案。
我想让你的意见知道是否可以在 Apache Beam 管道中使用类似的指令。
谢谢你们!
【问题讨论】:
标签: java google-cloud-platform google-bigquery google-cloud-dataflow