Azure数据工厂-在查询中引用查找活动

时间:2019-06-03 20:17:25

标签: sql-server azure azure-sql-database azure-data-factory change-tracking

我遵循的是tutorial on Azure Data Factory migration from Azure SQL to Blob through pipelines.,尽管大多数概念都有意义,但是“复制数据”查询有点令人困惑。我有编写Oracle SQL的背景,但是ADF上的Azure SQL却大不相同,我正在努力查找特定的技术文档,可能是因为它尚未被广泛采用。

管道配置如下所示: enter image description here 查询发布在下面:

SELECT data_source_table.PersonID,data_source_table.Name,data_source_table.Age, 
CT.SYS_CHANGE_VERSION, SYS_CHANGE_OPERATION
FROM data_source_table 
RIGHT OUTER JOIN CHANGETABLE(CHANGES data_source_table, 
@{activity('LookupLastChangeTrackingVersionActivity').output.firstRow.SYS_CHANGE_VERSION}) 
AS CT ON data_source_table.PersonID = CT.PersonID 
WHERE CT.SYS_CHANGE_VERSION <= 
@{activity('LookupCurrentChangeTrackingVersionActivity').output.firstRow.CurrentChangeTrackingVersion}

作为“复制数据”查询的结果,输出到接收器Blob:

2,name2,14,4,U
7,name7,51,3,I
8,name8,31,5,I
9,name9,38,6,I

耦合我的问题:

  1. “复制数据”查询中的其他活动有很多外部引用,例如@{activity('...').output.firstRow.CurrentChangeTrackingVersion。有没有办法知道引用外部活动的适当语法?找不到任何好的文档语法,例如.firstRow是什么或changetable输出是什么样。我无法在SSMS中复制此查询,这对我来说有点黑匣子。
  2. SYS_CHANGE_OPERATION 出现在SELECT中,没有表名前缀。这是直接从SourceDataset中的表查询吗? (它指向具有table tracking enabled的data_source_table)我的主要困惑来自表跟踪信息如何存储在启用的表中。有没有一种方法可以显示SSMS中所有表格的跟踪变化?我看到了some documentation on what the return values,但是我很难在表上看不到它的情况下对其进行可视化,因此对一些返回值的输出查询将是不错的选择。
  3. LookupLastChangeTracking活动从表的所有行中查询(当我检查时,它只是一行),但是LookupCurrentChangeTracking活动使用CHANGE_TRACKING function在table_store_ChangeTracking_version中拉出数据接收器的版本。当数据接收器的版本已记录在table_store_ChangeTracking_version中时,为什么使用函数?

很抱歉有很多问题,但是我找不到任何方法可以使学习曲线的难度降低一些。任何指南或资源都很棒!

1 个答案:

答案 0 :(得分:0)

有一篇文章可以通过UI完成相同的事情,它将帮助您更好地理解它。 https://docs.microsoft.com/en-us/azure/data-factory/tutorial-incremental-copy-change-tracking-feature-portal

1。这些是Lookup活动。非常简单的请在这里阅读有关它们的信息。 https://docs.microsoft.com/en-us/azure/data-factory/control-flow-lookup-activity

2.SYS_CHANGE_OPERATION是data_source_table上的一列,所以应该没问题。关于如何存储更改跟踪(CT)的详细信息,我不确定是否所有系统表都在Azure SQL上公开,但是我们在SQL的本地版本上确实没有几个表可以查询需要。但是对于此练习,我认为这将是一个致命的挑战。