在azure datafactory中如何将数据从blob复制到sql而不重复?

时间:2015-05-13 07:51:40

标签: azure azure-sql-database azure-data-factory

在azure datafactory中如何将数据从blob复制到sql而不重复,即如果管道在每15分钟的片段运行,那么如何避免获取重复数据

3 个答案:

答案 0 :(得分:1)

解决方案不是自动的,但您可以使用复制活动,并使用SQL接收器中的存储过程来处理可能已存在的行。也许是TSQL Merge语句,或者里面的Insert / Update语句。

https://azure.microsoft.com/en-us/documentation/articles/data-factory-copy-activity/

调用SQL Sink的存储过程。将数据复制到SQL Server或Azure SQL数据库时,可以配置和调用用户指定的存储过程。

谢谢,杰森

答案 1 :(得分:0)

我遇到了同样的问题,我发现您可以将切片开始时间和切片结束时间添加到存储过程中,并使用它们作为任何其他参数过滤查询,这将有助于您按切片加载数据而不是相同的数据是你拥有的切片数量,希望它足够清楚。

"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

答案 2 :(得分:0)

我遇到了同样的问题,发现此链接很有帮助: https://www.mssqltips.com/sqlservertip/6365/incremental-file-load-using-azure-data-factory/

在我们的情况下,我们仅将文件添加到Blob存储中,之后再也不会对其进行修改,因此工作是简单地挑选在最近15分钟内创建的新文件并将其添加到SQL容器中。到目前为止,该链接中描述的“增量复制”过程似乎效果很好。

我可以想象,在某些情况下,您可能需要在此之后添加一个存储过程以对SQL容器执行操作,但是我们并不需要它。