Azure数据工厂-在存储过程活动内部使用SQL查询内部联接表

问题描述

情况:

我有两个数据库DB1和DB2。 DB1有9个表(在这9个表中,任何一个表都可以仅更新列以跟踪更改,即TIME_STAMP列)。

现在,我尝试使用Azure数据工厂仅将这9个表中的已更新/新记录从DB1引入DB2(DB1中的每个表都映射到DB2中的一个表),然后对DB2中的表运行最终查询。我只有DB1的读取权限。

逻辑:

  1. 使用已在这9个表中更新/插入的UNION查找ID的集合
  2. 分别将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. 创建源1:运行查询以获取源数据集。
  2. 创建源2。
  3. 添加Join active与源1和源2相连。

这是数据流概述: enter image description here

只有在ADF管道中激活了“复制”,这是不可能的。我们无法将A Copy active源加入B copy active源。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...