问题描述
情况:
我有两个数据库DB1和DB2。 DB1有9个表(在这9个表中,任何一个表都可以仅更新列以跟踪更改,即TIME_STAMP列)。
现在,我尝试使用Azure数据工厂仅将这9个表中的已更新/新记录从DB1引入DB2(DB1中的每个表都映射到DB2中的一个表),然后对DB2中的表运行最终查询。我只有DB1的读取权限。
逻辑:
- 使用已在这9个表中更新/插入的UNION查找ID的集合
- 分别将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次?
解决方法
您可以使用Data Flow来实现。例如,
- 创建源1:运行查询以获取源数据集。
- 创建源2。
- 添加Join active与源1和源2相连。
只有在ADF管道中激活了“复制”,这是不可能的。我们无法将A Copy active源加入B copy active源。