Azure 数据工厂 - 在存储过程 activity 内部加入 table 和 SQL 查询

Azure Data Factory - Inner join a table with a SQL query inside stored procedure activity

情况:

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

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

逻辑:

  1. 在这9table
  2. 中使用UNION找到得到updated/inserted的Id集合
  3. 将 UNION 查询的结果分别与 9 个 table 中的每一个

联合查询示例:

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 个 table 也是如此。

问题:

在 ADF 中有没有一种方法可以让我只找到联合查询结果一次,然后一次性将结果数据与所有 9 个 table 连接起来,而不是 运行ning联合查询 9 次,每个 table 在 9 个不同的副本 activity?

您可以通过 Data Flow 实现。例如,

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

以下是数据流概览:

只要在 ADF 管道中启用复制,这是不可能的。我们无法将 A Copy active 源连接到 B copy active 的源。