ADF映射数据流中Case聚合转换后输出为空的排查求助
解决ADF映射数据流中AGGREGATE转换空输出问题
问题根源
你当前使用的case函数语法不符合ADF映射数据流的规则,且缺少else分支的明确处理,导致聚合后无法正确捕获目标数据。
正确实现步骤
1. 修正CASE表达式语法
ADF映射数据流中的case函数语法为:
case(<条件>, <满足时返回值>, <不满足时返回值>)
单条件判断时必须明确指定else分支为null(和原SQL逻辑对齐),否则不满足条件的行不会返回null,可能干扰聚合结果。
2. 正确的聚合列表达式
在AGGREGATE转换的聚合列中,分别配置:
- 生成
LTPC_Date列:max(case(METER == 'LTPC', READING_DATE, null())) - 生成
LTPC列(对应原SQL的PAGE_COUNT):max(case(METER == 'LTPC', PAGE_COUNT, null()))
3. 额外排查点
- 确认
METER字段的值是否严格匹配'LTPC'(ADF字符串匹配大小写敏感),若存在大小写不一致,可改用equalsIgnoreCase作为条件:max(case(equalsIgnoreCase(METER, 'LTPC'), READING_DATE, null())) - 检查输入数据源
mv_latest_asset_read中是否存在METER='LTPC'的行,若本身无数据,聚合后自然为空。 - 确保分组键
ASSET_ID已正确添加到AGGREGATE转换的分组依据中。
逻辑验证
原SQL逻辑为:按Asset_ID分组,仅取METER='LTPC'行的READING_DATE和PAGE_COUNT最大值,其他行对应字段视为null不参与聚合。修正后的ADF表达式完全对齐该逻辑,只要数据源存在匹配数据,即可输出非空结果。
内容的提问来源于stack exchange,提问作者sayan nandi
相关产品推荐
相关产品推荐

