-1

情况:

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

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

逻辑:

  1. 使用 UNION 查找在这 9 个表中更新/插入的 Id 集
  2. 将 UNION 查询的结果分别与 9 个表中的每一个进行内连接

联合查询示例:

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 次?

4

1 回答 1

2

您可以使用Data Flow来实现。例如,

  1. 创建源 1:运行查询以获取源数据集。
  2. 创建源 2。
  3. 添加一个Join active以加入 Source 1 和 Source 2。

这是数据流概述: 在此处输入图像描述

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

于 2020-10-22T01:41:27.203 回答