如何使用数据工厂从表缓存中删除数据?

时间:2018-12-19 16:40:08

标签: sql sql-server azure azure-table-storage azure-data-factory

我有一个数据工厂管道,该管道正在从SQL Server中获取数据并将其复制到表存储中:

Azure Sql Server View --> Table Storage Cache

此步骤基于SQL Server视图中的REPLACE对特定行进行guid

如果从源视图中删除一条记录,我们如何从表存储中删除同一条记录?

2 个答案:

答案 0 :(得分:0)

在“复制活动”期间,我们无法对表数据进行操作。数据工厂不支持此操作。

我创建了一个数据管道,用于将数据从SQL Server复制到表存储以进行测试。在开始“活动复制”之前,您可以根据需要删除或插入记录。您可以在数据工厂中预览数据。复制活动发布并完成后,这意味着您的数据已复制到表存储中。

如果您确实需要删除表存储中的同一记录,则方法之一是可以登录Azure门户并使用“存储资源管理器(预览)”删除记录: enter image description here

希望这会有所帮助。

答案 1 :(得分:-1)

这是一个提示-我已经在生产环境中运行了很多年的代码...的想法是让源对已删除的记录使用时间戳(或更简单的标志),然后让MERGE尊重它。

>
CREATE PROCEDURE [DataFactory].[MergeCompany]
(
  @Company [DataFactory].[CompanyType] READONLY
)
AS
BEGIN

  MERGE INTO [Company] AS TGT
  USING @Company As SRC
  ON TGT.pk = SRC.pk
  --
  WHEN MATCHED AND SRC.aud_delete_date IS NOT NULL
  THEN DELETE
  --
  WHEN MATCHED AND SRC.aud_delete_date IS NULL
  THEN UPDATE SET
     TGT.comp_number     = SRC.comp_number                           
    ,TGT.comp_name       = SRC.comp_name                                
    ,TGT.aud_update_date = SRC.aud_update_date    
    ,TGT.aud_create_date = SRC.aud_create_date                            
  --
  WHEN NOT MATCHED BY TARGET 
  THEN INSERT(
     pk
    ,comp_number    
    ,comp_name      
    ,aud_update_date
    ,aud_create_date                            
  ) 
  VALUES(
     SRC.pk
    ,SRC.comp_number    
    ,SRC.comp_name      
    ,SRC.aud_update_date
    ,SRC.aud_create_date                            
  )
  ; -- Required semicolon

END
GO