[英]Generating and storing JSON files from the run-time parameters passed to Azure Data Factory v2 pipeline?
[英]How do I store run-time data in Azure Data Factory between pipeline executions?
我一直在关注 Microsoft 的教程,以从 SQL Server 数据库增量/增量加载数据。
它使用水印(时间戳)来跟踪自上次以来更改的行。 本教程使用管道中的“存储过程”活动将水印存储到 Azure SQL 数据库,以便下次执行时可以重复使用。
拥有一个 Azure SQL 数据库来存储那一点点元信息似乎有点过分(顺便说一下,我的源数据库是只读的)。 我宁愿将它存储在 Azure 中的其他地方。 也许在 blob 存储或其他地方。
简而言之:有没有一种简单的方法来跟踪这种类型的数据,或者我们是否仅限于使用存储过程(或 Azure 函数等)?
我遇到了一个非常相似的场景,我发现您无法在 ADF 中存储任何水印信息 - 至少不能以您可以轻松访问的方式存储。
最后,我刚刚创建了一个基本层 Azure SQL 数据库,将我的水印/配置信息存储在我已经在管道中使用的 SQL 服务器上。
这样做的好处是,当我的解决方案扩展到多个业务部门,所有业务部门都具有不同的数据库时,我仍然可以通过简单地添加一个列来跟踪每个 BU 特定水印信息用于哪个 BU 来维护每个业务部门的水印信息。
Blob 存储确实是一个更便宜的选择,但我发现它比仅在现有数据库中使用额外的数据库/表需要更多的努力。
我同意能够在 ADF 本身中为小型配置项维护一个小型数据集真的很有用 - 这可能是向 Microsoft 提出的一个好建议!
有一种方法可以通过使用复制活动来实现这一点,但是在'LookupOldWaterMarkActivity'中获取最新水印很复杂,仅供参考。
数据集设置:
复制活动设置:
源数据集和汇数据集是相同的。 将附加列中的表达式更改为@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}
通过这个,您可以将水印保存为 .txt 文件中的列。 但是很难通过Lookup 活动获得最新的水印。 因为您的 'LookupOldWaterMarkActivity' 输出将是这样的:
{
"count": 1,
"value": [
{
"Prop_0": "11/24/2020 02:39:14",
"Prop_1": "11/24/2020 08:31:42"
}
]
}
密钥名称由 ADF 生成。 如果你想得到“11/24/2020 08:31:42”,你需要得到列数,然后使用这样的表达式: @activity('LookupOldWaterMarkActivity').output.value[0][Prop_(column count - 1)]
获取最新水印的方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.