如何从ADF复制活动获取SOQL统计值作为存储过程参数?
解决Azure数据工厂复制活动SOQL统计值传递给存储过程的问题
问题原因
你用@activity('CopyObject').output.rowscopied得到1是正常的——因为你的SOQL聚合查询返回单行单列的统计结果,复制活动仅复制了这一行数据到Blob,所以rowscopied统计的是复制的行数,而非实际的统计数值。
正确获取统计值的方法
复制活动执行聚合查询后,实际统计结果会被封装在output.value数组中,你需要从数组的第一个元素里提取对应字段值:
情况1:未给统计结果设置别名
你的原始SOQL返回的统计字段默认名为expr0,直接用以下表达式获取数值:
@activity('CopyObject').output.value[0].expr0
情况2:给统计结果设置别名(推荐,提升可读性)
先修改SOQL,给统计结果指定别名:
Select COUNT() AS recordCount from Accounts WHERE SystemModstamp > 2022-09-01T17:11:54Z AND SystemModstamp <= 2022-09-01T17:23:20Z
然后用别名字段获取统计值:
@activity('CopyObject').output.value[0].recordCount
验证方式
在ADF调试模式下,查看复制活动的输出详情,找到value数组中的具体字段名,确认后再调整表达式即可。
内容的提问来源于stack exchange,提问作者Priyanka2304
相关产品推荐
相关产品推荐

