ADF Data Flow将负计算结果赋值为null时表达式报错如何解决?
ADF Data Flow时长差值计算报错修复方案
你写的表达式报错核心是ADF数据流的表达式运算规则中,只要TOTAL_HOURS或PREVIOUS_TOTAL_HOURS任意一个为NULL,lesser()函数就无法返回合法的布尔值,导致iif分支判断失效。
方案1:空值直接返回NULL(默认适配你的场景)
如果业务逻辑中两个字段任意一个为空时,计算结果也应为空,使用如下表达式即可:
iif( or(isNull(TOTAL_HOURS), isNull(PREVIOUS_TOTAL_HOURS), TOTAL_HOURS < PREVIOUS_TOTAL_HOURS), null(), TOTAL_HOURS - PREVIOUS_TOTAL_HOURS )
逻辑说明:
- 先校验两个字段是否存在空值,存在则直接返回NULL,避免空值参与运算
- 再判断当前总时长是否小于上一周期总时长,满足则返回NULL
- 上述两个条件都不满足时,返回两个字段的正差值
方案2:空值默认按0计算
如果业务允许空值字段默认按0参与计算,可以用coalesce函数做空值替换,表达式如下:
iif( coalesce(TOTAL_HOURS, 0) < coalesce(PREVIOUS_TOTAL_HOURS, 0), null(), coalesce(TOTAL_HOURS, 0) - coalesce(PREVIOUS_TOTAL_HOURS, 0) )
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

