Выполнение Bigquery Merge DML с Java - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть инструкция 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)

Эта инструкция, которую мы пытаемся выполнить, не нуждается в каких-либо преобразованиях, но другие в будущем will.

И поэтому мы подумываем об использовании DataFlow с Apache Beam.

Я пытаюсь выполнить этот оператор MERGE внутри Apache Beam pipe, что-то похожее на this:

pipeline.apply(
                "DEPARTMENT - RUN MERGE WITH INSERT AND UPDATE STATEMENTS",
                BigQueryIO.readTableRows().fromQuery(MERGE_DEPARTMENT_I_U).usingStandardSql());

Проблема в том, что когда мы запускаем этот код для DataFlow, он не работает.

Мне было интересно, будет ли это лучшим решением для выполнения Bigquery MERGE заявления с использованием Java.

И я хотел, чтобы ваше мнение узнало, можно ли использовать такие инструкции внутри Apache Beam pipe.

Спасибо, ребята!

1 Ответ

1 голос
/ 30 апреля 2020

Похоже, вы пытаетесь сделать CD C - Вы можете взглянуть на один из новых шаблонов потока данных, который делает MERGE для CD C операций здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...