You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查Azure Data Warehouse(ADW)新增复制行及排查数据差异?

我来给你几个实用的方案,帮你追踪ADF V1里具体复制的行,解决行计数不匹配、重复行的问题:

方案1:启用复制活动的详细日志并落地到存储账户

这是最直接的方式,利用ADF V1自带的日志功能获取行级复制信息:

  • 打开ADF V1的复制活动配置,找到日志设置模块,勾选「启用复制日志」选项。
  • 指定一个Azure Blob存储账户(或ADLS Gen1)作为日志存储位置,设置好容器和路径前缀。
  • 每次复制任务完成后,系统会自动生成日志文件,里面包含成功复制行的主键、复制时间戳,甚至失败行的详细报错信息。你可以直接下载日志文件用Excel分析,或者用SQL Server的OPENROWSET函数解析查询:
    SELECT * FROM OPENROWSET(
        BULK 'your-log-path/copy-log-*.json',
        DATA_SOURCE = 'YourAzureBlobStorage',
        FORMAT = 'CSV',
        FIELDTERMINATOR = '|',
        ROWTERMINATOR = '\n'
    ) AS LogData
    
方案2:在源SQL数据库添加复制追踪字段

从源头上标记已复制的行,方便后续对比:

  • 在本地SQL DB的目标表中新增两个字段:Last_Copied_Datetime(datetime类型)和Is_Copied(bit类型,默认值0)。
  • 修改ADF V1复制活动的源查询,只选取未复制的增量行:
    SELECT * FROM [YourSourceTable] 
    WHERE Is_Copied = 0 
    OR Last_Copied_Datetime > '@pipeline().parameters.LastCopyTime'
    
  • 在复制活动成功完成后,添加一个存储过程活动,调用本地SQL DB的存储过程,将本次复制的行标记为已复制:
    UPDATE [YourSourceTable]
    SET Is_Copied = 1, Last_Copied_Datetime = GETDATE()
    WHERE [PrimaryKey] IN (@CopiedPrimaryKeys)
    
  • 这样你就能通过查询源表的追踪字段,快速对比ADW中的数据,找出遗漏或重复的行。
方案3:在Azure Data Warehouse中添加复制元数据字段

从目标端记录每次复制的行信息:

  • 在ADW的目标表中新增两个字段:ADF_Copy_Timestamp(datetime类型)和Copy_Run_ID(varchar(50)类型)。
  • 修改ADF V1复制活动的字段映射,将ADF系统变量@pipeline().RunId映射到Copy_Run_ID,同时将当前时间映射到ADF_Copy_Timestamp。
  • 每次复制任务完成后,你可以在ADW中通过Run ID查询本次复制的所有行:
    SELECT * FROM [YourADWTable]
    WHERE Copy_Run_ID = '@pipeline().RunId'
    
  • 对比不同Run ID的行数据,就能快速发现重复复制的行(同一源行出现在多个Run ID结果中)。
方案4:用自定义活动做行级校验

如果需要实时校验源和目标的行差异:

  • 创建一个ADF V1自定义活动,用C#或PowerShell编写逻辑:在复制活动完成后,分别从源SQL DB和ADW抽取本次复制的增量行(基于时间戳或主键范围),然后做行级对比。
  • 将对比结果输出到日志存储,或者配置邮件告警,这样就能及时发现行计数不匹配或重复的问题。

内容的提问来源于stack exchange,提问作者John Wat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:20:39