Как обновить таблицу в Snowflake, используя Azure Data Factory - PullRequest
0 голосов
/ 16 июня 2020

У меня есть две таблицы в снежинке с именами table1 и table2. Table1 - это исходная таблица, которая содержит инкрементные данные, а table2 - целевая таблица.

Итак, мой вариант использования: я должен взять данные из table1 и обновить данные в table2, но этот процесс должен быть выполнен с использованием Azure Фабрика данных.

Я пытался создать поток данных в ADF, но это не позволило мне напрямую подключиться к снежинке, так как ее нет в списке поддерживаемых источников. Встроенный коннектор «снежинка» поддерживает только действие копирования данных. Поэтому в качестве работы я сначала создал операцию копирования, которая копирует данные из снежинки в azure blob. Затем использовал Azure Blob в качестве источника для потока данных для создания моей реализации scd1 и сохранил вывод в файлах csv.

Теперь у меня вопрос, как мне обновить данные в целевой таблице2. Потому что, если я напрямую использую действие копирования для копирования файлов csv в снежинку, это приведет к дублированию записей на стороне снежинки. Например, допустим, что table2 содержит строку

id,name,age,data
1234,kristopher,24,somedata

, а table1 содержит

id,name,age,data
1234,kristopher,24,some-new-data

Итак, теперь у меня есть данные table1 в csv, которые необходимо загрузить в снежинку. Если я загружаю напрямую, результат будет выглядеть примерно так.

id,name,age,data
1234,kristopher,24,somedata
1234,kristopher,24,some-new-data

Но мне нужно только

1234,kristopher,24,some-new-data

Сообщите мне, если требуются дополнительные пояснения. Я новичок в Azure Data Factory и Snowflake.

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 июля 2020

вы можете поместить свой логин в хранимую процедуру снежинки, а затем выполнить сохраненный pro c в ADF

0 голосов
/ 16 июня 2020

Как вы заметили, потоки данных ADF в настоящее время не поддерживают наборы данных Snowflake в качестве источника.

Теоретически вы могли бы следовать этому шаблону проектирования , но похоже, что для выполнения описанного вами требования потребуется много работы. Альтернативой может быть go вниз по маршруту Azure Function, но опять же, я бы выбрал компромисс между требованиями и необходимыми усилиями.

Если бы это не обязательно было в ADF, то быстрым подходом было бы использовать Snowflake Task , чтобы запланировать некоторые SQL для управления поведением SCD за вас.

Надеюсь, это поможет.

С уважением, Дэн.

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