【发布时间】:2015-07-24 09:14:43
【问题描述】:
在 azure datafactory 中,如何在不重复的情况下将数据从 blob 复制到 sql,即如果管道以每 15 分钟的切片运行,那么如何避免获取重复数据
【问题讨论】:
标签: azure azure-sql-database azure-data-factory
在 azure datafactory 中,如何在不重复的情况下将数据从 blob 复制到 sql,即如果管道以每 15 分钟的切片运行,那么如何避免获取重复数据
【问题讨论】:
标签: azure azure-sql-database azure-data-factory
该解决方案不是自动的,但您可以使用复制活动,并使用 SQL 接收器中的存储过程来处理可能已经存在的行。也许是 TSQL Merge 语句,或者是里面的 Insert / Update 语句。
https://azure.microsoft.com/en-us/documentation/articles/data-factory-copy-activity/
为 SQL Sink 调用存储过程。将数据复制到 SQL Server 或 Azure SQL 数据库时,可以配置和调用用户指定的存储过程。
谢谢,杰森
【讨论】:
我遇到了同样的问题,我发现您可以将切片开始时间和切片结束时间添加到存储过程中,并使用它们作为任何其他参数过滤查询,这将帮助您按切片加载数据,而不是相同的数据切片数,希望够清楚。
"typeProperties": {
"storedProcedureName": "sp_sample",
"storedProcedureParameters": {
"DateTime": "$$Text.Format('{0:yyyy-MM-dd HH:mm:ss}', SliceStart)"
}
}
https://docs.microsoft.com/en-us/azure/data-factory/data-factory-stored-proc-activity
【讨论】:
我遇到了同样的问题,发现此链接很有帮助: https://www.mssqltips.com/sqlservertip/6365/incremental-file-load-using-azure-data-factory/
在我们的例子中,我们只将文件添加到 blob 存储,之后再也不修改它们,因此我们的工作就是简单地选择最近 15 分钟内创建的新文件并将它们添加到 SQL 容器中。到目前为止,链接中描述的增量复制过程似乎效果很好。
我可以想象,在某些情况下,您可能需要添加一个存储过程以在此之后作用于 SQL 容器,但我们不需要它。
【讨论】: