Azure Data Flow中获取上一年指定日期及派生列嵌套IF配置方法
Azure Data Flow 派生列条件表达式实现
直接使用以下表达式即可满足你的需求:
(DateColumn1 >= addYears(trunc(utcNow(), 'year'), -1)) && ((DateColumn2 < addMonths(addYears(trunc(utcNow(), 'year'), -1), 1)) || isNull(DateColumn2)) ? 'true' : 'false'
表达式拆解说明:
- 上一年1月1日的构造:
addYears(trunc(utcNow(), 'year'), -1)utcNow()获取当前UTC时间trunc(utcNow(), 'year')将当前时间截断到当年1月1日addYears(..., -1)对截断后的日期减1年,得到上一年1月1日
- 上一年2月1日的构造:
addMonths(addYears(trunc(utcNow(), 'year'), -1), 1)- 在上述上一年1月1日的基础上,调用
addMonths(..., 1)加1个月,得到上一年2月1日
- 在上述上一年1月1日的基础上,调用
- 条件逻辑:
- 先判断
DateColumn1 >= 上一年1月1日 - 再判断
DateColumn2 < 上一年2月1日或者DateColumn2为空(isNull(DateColumn2)) - 用
&&和括号确保逻辑优先级,当两个条件同时满足时返回'true',否则返回'false'
- 先判断
备选方案(基于字符串构造日期)
如果更习惯用字符串拼接方式生成目标日期,也可以用以下表达式:
(DateColumn1 >= toDate(concat(string(year(utcNow())-1), '-01-01'))) && ((DateColumn2 < toDate(concat(string(year(utcNow())-1), '-02-01'))) || isNull(DateColumn2)) ? 'true' : 'false'
内容的提问来源于stack exchange,提问作者Nezko1
相关产品推荐
相关产品推荐

