Фабрика данных Azure - внутреннее присоединение к таблице с помощью SQL-запроса внутри активности хранимой процедуры
Ситуация:
У меня две базы данных DB1 и DB2. DB1 имеет 9 таблиц (из этих 9 любая из таблиц может обновляться только с помощью столбца для отслеживания этого изменения, то есть столбца TIME_STAMP).
Теперь я пытаюсь перенести только обновленные / новые записи из этих 9 таблиц из DB1 в DB2 (каждая таблица в DB1 сопоставляется с одной таблицей в DB2) с помощью фабрики данных Azure, а затем выполнить свой последний запрос к таблицам в DB2. У меня есть доступ только для чтения на DB1.
Логика:
- Найдите набор идентификаторов с помощью UNION, который был обновлен / вставлен в эти 9 таблиц.
- Внутреннее соединение результата запроса UNION с каждой из 9 таблиц индивидуально
Пример запроса Union:
SELECT DISTINCT idcolumn
FROM table1
WHERE TIME_STAMP BETWEEN '2020-11-06T13:14:13.807Z' AND '2020-11-07T13:14:13.807Z'
UNION
SELECT DISTINCT idcolumn
FROM table2
WHERE TIME_STAMP BETWEEN '2020-11-06T13:14:13.807Z' AND '2020-11-07T13:14:13.807Z'
UNION
SELECT DISTINCT idcolumn
FROM table3
WHERE TIME_STAMP BETWEEN '2020-11-06T13:14:13.807Z' AND '2020-11-07T13:14:13.807Z'
UNION
SELECT DISTINCT idcolumn
FROM table4
WHERE TIME_STAMP BETWEEN '2020-11-06T13:14:13.807Z' AND '2020-11-07T13:14:13.807Z'
И аналогично для 5 других таблиц.
Проблема:
Есть ли способ в ADF, с помощью которого я могу найти результат запроса на объединение только один раз, а затем объединить полученные данные со всеми 9 таблицами за один раз, вместо того, чтобы выполнять запрос объединения 9 раз с каждой таблицей в 9 различных действиях копирования?
1 ответ
Вы можете добиться этого с помощью потока данных. Например,
- Создать источник 1: запустите запрос, чтобы получить исходный набор данных.
- Создать источник 2.
- Добавьте активное соединение, чтобы присоединиться к источнику 1 и источнику 2.
Просто с активным копированием в конвейере ADF это невозможно. Мы не можем присоединить активный источник A Copy к источнику B copy active.