用Java执行Bigquery Merge DML。

问题描述 投票:0回答:1

我在Bigquery中做了一个DML指令,每隔一小时运行一次,类似于这个指令。

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管道内使用这样的指令。

谢谢你们!我有一个DML指令,是为了执行Bigquery MERGE语句而做的。

java google-cloud-platform google-bigquery google-cloud-dataflow
1个回答
1
投票

看起来你是想做CDC--你可以看一下新的Dataflow模板之一,它可以做到 MERGE 疾控中心业务 此处

© www.soinside.com 2019 - 2024. All rights reserved.