Azure Data Factory:如何将复制记录行数保存至ADLS Gen2或发送邮件通知
实现Azure Data Factory复制活动指标的存储与邮件通知
一、将rowsRead/rowsCopied保存到ADLS Gen2
要把复制活动的源端读取行数和目标端复制行数存到ADLS Gen2,核心是先提取活动输出的指标,再写入文件:
步骤1:提取复制活动的指标数据
复制活动执行完成后,可通过以下表达式获取对应数值:- 源端读取行数:
@activity('你的复制活动名称').output.rowsRead - 目标端复制行数:
@activity('你的复制活动名称').output.rowsCopied
可额外拼接执行时间戳方便后续排查:@utcnow()
- 源端读取行数:
步骤2:构建结构化内容
用ADF表达式把指标拼成JSON格式(也可选择CSV),示例表达式:@json(concat('{"executionTime": "', utcnow(), '", "rowsRead": ', string(activity('你的复制活动名称').output.rowsRead), ', "rowsCopied": ', string(activity('你的复制活动名称').output.rowsCopied), ', "activityName": "你的复制活动名称"}'))步骤3:写入ADLS Gen2
新建一个复制数据活动:- 数据源选择「Inline」,将上述表达式填入「Inline内容」,格式选JSON
- 数据目标选择你的ADLS Gen2链接服务,设置文件路径(比如
/copy-logs/),文件名用时间戳避免重复:@concat('copy-result-', replace(utcnow(), ':', '-'), '.json') - 把该活动的依赖设置为原复制任务,确保原活动成功后才执行写入操作
二、发送包含指标的邮件通知
如果要把指标通过邮件发送,需先配置邮件链接服务(Office 365或SMTP),再按以下步骤操作:
步骤1:配置邮件链接服务
在ADF的「链接服务」中新建「Office 365 Outlook」或「SMTP」链接服务,完成身份验证。步骤2:添加「发送邮件」活动
在控制流里添加「发送邮件」活动,依赖原复制活动(仅原活动成功时触发):- 主题:用表达式动态填充,示例:
@concat('复制活动执行完成:', activity('你的复制活动名称').output.rowsRead, '行读取,', activity('你的复制活动名称').output.rowsCopied, '行复制') - 正文:可格式化得更清晰,示例:
@concat('<p>复制活动 <b>', activity('你的复制活动名称').name, '</b> 执行完成:</p>', '<ul>', '<li>源端读取行数:', string(activity('你的复制活动名称').output.rowsRead), '</li>', '<li>目标端复制行数:', string(activity('你的复制活动名称').output.rowsCopied), '</li>', '<li>执行时间:', utcnow(), '</li>', '</ul>') - 填写收件人邮箱,保存后即可在复制活动完成时自动发送邮件
- 主题:用表达式动态填充,示例:
额外提示
- 可用「If Condition」活动判断原复制活动的执行状态(
@activity('你的复制活动名称').status),分别处理成功和失败的情况(比如失败时发送错误通知) - 如果需要批量记录多个复制活动的指标,可将指标写入ADLS的同一个文件(追加模式),或存入Azure SQL数据库后再统一导出
内容的提问来源于stack exchange,提问作者mkn
相关产品推荐
相关产品推荐

