Использование сопоставления потоков данных в рамках каждого действия конвейера фабрики данных Azure

Сценарий: у меня есть сетевые изменения SQL DB CDC, поступающие в файл csv. В конвейере для каждой строки в файле CSV необходимо проверить наличие обновлений, вставок и удалений, а также внести некоторые изменения в мою базу данных хранилища.

Конвейер:

pipeline

поток данных сопоставления:

поток данных

Проблема:

Как использовать item () из foreach в потоке данных и получить эту запись из файла csv и обработать. Я не вижу поля / параметра на исходном этапе потока данных.


person VT0906    schedule 05.05.2020    source источник


Ответы (2)


Во-первых, вы можете добавить параметр в поток данных:

введите здесь описание изображения

Затем из потока данных щелкните поток данных, установите параметр потока данных с помощью выражения конвейера:

введите здесь описание изображения

Затем вы можете установить Foreach item() в качестве параметра потока данных:

введите здесь описание изображения

Теперь вы можете использовать item () из foreach в потоке данных и получить эту запись из файла csv и обработать.

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

person Leon Yue    schedule 06.05.2020
comment
Из анналов просто потому, что вы МОЖЕТЕ, не означает, что вам СЛЕДУЕТ :) Вы, по сути, используете действие Lookup для чтения каждой строки из файла CSV и отправки ее в поток данных по одной строке за раз. Пожалуйста, не делай этого!! Просто используйте этот CSV-файл в преобразовании источника потока данных. Пусть поток данных прочитает каждую строку и загрузится во фреймы данных в Spark. Вы меня потом поблагодарите! - person Mark Kromer MSFT; 06.05.2020
comment
Спасибо, Леон. Я уже делаю это, как вы упомянули. Нужно ли мне что-то особенное на шаге источника потока данных, чтобы сообщить о чтении из этого параметра вместо набора данных, настроенного для источника? первый исходный шаг потока данных все еще указывает на тот же набор данных, который имеет полный доступ csv - person VT0906; 06.05.2020
comment
@ VT0906 Нет, мы не можем использовать элемент Forach () в качестве исходного набора данных в потоке данных. Единственное, что мы можем сделать, это создать выражение с помощью item (), чтобы отфильтровать данные в полном CSV, добавить активные, такие как alter row или DerivedColumn. - person Leon Yue; 06.05.2020
comment
Да, вы можете использовать @item () в качестве параметра набора данных в своей деятельности потока данных. Рекомендуется использовать преобразование «Источник» в потоке данных для фильтрации файлов CSV для источника. Используйте подстановочный знак в параметрах источника вместо ForEach. ForEach с потоками данных не рекомендуется. Я говорю об этом в нашем перфомансе: docs.microsoft.com/en-us/azure/data-factory/ - person Mark Kromer MSFT; 06.05.2020

Здесь нет необходимости использовать ForEach. Поток данных может считывать каждую строку из исходного файла CDC, и вы можете применить соответствующую операцию вставки, обновления, слияния и удаления в качестве политик в преобразовании Alter Row.

person Mark Kromer MSFT    schedule 05.05.2020
comment
Спасибо, Марк. Я предполагаю, что предлагается использовать условное разделение строк и выполнять процесс. Не могли бы вы дать немного дополнительной информации по этому поводу? - person VT0906; 06.05.2020
comment
Просто используйте преобразование Alter Row. Установите источник как файл CSV. Задайте выражение для каждого условия обновления, вставки, обновления и удаления. - person Mark Kromer MSFT; 06.05.2020