在Azure DataFactory中如何将数据从Blob复制到SQL而不重复IE,如果管道在每15分钟的切片中运行,则如何避免获得重复的数据
该解决方案不是自动的,但是您可以使用复制活动,并在SQL接收器中使用存储过程来处理可能已经存在的行。也许TSQL合并语句或内部插入/更新语句。
https://azure.microsoft.com/en-us/documentation/articles/data-factory-copy-activity/
调用SQL接收器的存储过程。将数据复制到SQL Server或Azure SQL数据库时,可以配置并调用用户指定的存储过程。
谢谢,杰森
我遇到了相同的问题,我发现您可以将切片启动时间和切片终止时间添加到您的存储过程中,并使用它们作为其他任何参数过滤查询,这将帮助您要通过切片加载数据,而不是与您拥有的切片数相同的数据,希望它足够清楚。
"typeProperties": {
"storedProcedureName": "sp_sample",
"storedProcedureParameters": {
"DateTime": "$$Text.Format('{0:yyyy-MM-dd HH:mm:ss}', SliceStart)"
}
}
https://learn.microsoft.com/en-us/azure/data-factory/data-factory-stored-proc-activity
我有同样的问题,发现此链接有帮助:https://www.mssqltips.com/sqlservertip/6365/incremental-file-load-load-using-usis-data-factory/
在我们的情况下,我们仅将文件添加到blob存储中,并且在此之后切勿对其进行修改,因此工作是只需在最新15分钟内挑选创建的新文件,然后将它们添加到SQL容器中。到目前为止,链接中描述的增量副本过程似乎效果很好。
我可以想象,在某些情况下,您可能需要添加一个存储过程以在此之后对SQL容器作用,但是我们不需要它。