Добавочная загрузка и потоки из ADF в Snowflake
Я пытаюсь постепенно загружать файлы из моего большого двоичного объекта Azure в таблицу Snowflake. После этого в Snowflake я помещаю потоки в эту таблицу и загружаю данные в целевую таблицу.
Я не могу выполнять инкрементную загрузку из Azure в Snowflake. Я пробовал много способов, но не работал. Я прикрепляю изображения двух моих разных способов (конвейеров), чтобы сделать то же самое.
В этом конвейере я просто добавил 3 дополнительных столбца, которые мне нужны в моей раковине.
В этом конвейере я попытался создать условное разбиение
Оба эти варианта не сработали. Пожалуйста, подскажите, как это сделать.
1 ответ
Вы можете добиться этого, выбрав « Разрешить обновление» в настройках приемника в разделе «Метод обновления».
Ниже приведены мои репродукционные детали:
- Это промежуточная таблица в виде снежинки, в которую я загружаю дополнительные данные.
- Исходный файл - Дополнительные данные
a) Этот файл содержит записи, которые существуют в промежуточной таблице ( StateCode = 'AK' & 'CA' ), поэтому эти 2 записи должны быть обновлены в промежуточной таблице с новыми значениями в Flag.
б) Остальные 2 записи ( StateCode = 'FL' и 'AZ' ) должны быть вставлены в промежуточную таблицу.
- Настройки источника потока данных:
- Добавление
DerivedColumn
преобразование для добавления столбца modified_date, который находится не в исходном файле, а в таблице приемника.
- Добавление
AlterRow
Преобразование: когда вы используете метод Upsert, преобразование AlterRow является обязательным для включения условия upsert.
a) В состоянии вы можете упомянуть, что нужно вставлять строки только в том случае, если уникальный столбец (StateCode в моем случае) не равен нулю .
- Добавление
sink
преобразование в AlterRow с промежуточной таблицей Snowflake в качестве набора данных приемника.
a) В настройках приемника выберите Метод обновления как Разрешить вставку и укажите столбец Ключ (уникальный), на основе которого должно произойти обновление в таблице приемника.
- После запуска конвейера вы можете увидеть результаты в раковине.
a) Поскольку StateCode AK и CA уже существует в таблице, обновляются только другие значения столбцов (flag и modified_date) для этих строк .
б) StateCode AZ и FL не найдены в таблице стадии (приемника), поэтому эти строки вставляются .