在 azure datafactory 中,如何将数据从 blob 复制到 sql 而不重复,即如果管道以每 15 分钟的切片运行,那么如何避免获取重复数据
3 回答
该解决方案不是自动的,但您可以使用复制活动,并使用 SQL 接收器中的存储过程来处理可能已经存在的行。也许是 TSQL Merge 语句,或者里面的一个 Insert/Update 语句。
https://azure.microsoft.com/en-us/documentation/articles/data-factory-copy-activity/
为 SQL Sink 调用存储过程。将数据复制到 SQL Server 或 Azure SQL 数据库时,可以配置和调用用户指定的存储过程。
谢谢,杰森
我有同样的问题,发现这个链接很有帮助: https ://www.mssqltips.com/sqlservertip/6365/incremental-file-load-using-azure-data-factory/
在我们的例子中,我们只将文件添加到 blob 存储中,之后再也不修改它们,因此工作就是简单地选择最近 15 分钟内创建的新文件并将它们添加到 SQL 容器中。到目前为止,链接中描述的增量复制过程似乎效果很好。
我可以想象,在某些情况下,您可能需要在此之后添加一个存储过程来作用于 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