【问题标题】:Executing Bigquery Merge DML with Java使用 Java 执行 Bigquery Merge DML
【发布时间】: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


    【解决方案1】:

    看起来您正在尝试执行 CDC - 您可以查看新的 Dataflow 模板之一,它为 CDC 操作 MERGE 执行 here

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2018-12-18
    • 2017-08-16
    相关资源
    最近更新 更多