Power Query Editor日期区间条件列失效问题求助
Power Query条件列结果停在51的问题分析与解决
问题原因
- 条件匹配顺序逻辑错误:Power Query的条件列是从上到下依次匹配,满足即返回。如果你的第一个区间条件仅设置
[日期] >= 2022/7/18就返回51,所有7/18之后的日期都会触发这个条件直接返回51,不会进入后续的8/8、8/30区间判断,导致结果卡在51。 - 区间边界定义不完整:每个中间区间需要同时限定上下边界,比如7/18及之后且8/8之前,必须同时设置
>=7/18和<8/8,否则范围会覆盖后续所有区间。
Power Query是否支持Between参数?
Power Query没有直接的Between参数,但可以通过**组合两个比较运算符(>=和</<=)**实现区间判断,不管是在条件列可视化界面还是直接写M语言都能实现。
正确的实现方法
方法1:可视化条件列界面设置
按以下顺序添加条件(从上到下):
- 条件:
[你的日期列] < #date(2022,7,18)→ 返回值:31 - 条件:
[你的日期列] >= #date(2022,7,18) and [你的日期列] < #date(2022,8,8)→ 返回值:51 - 条件:
[你的日期列] >= #date(2022,8,8) and [你的日期列] < #date(2022,8,30)→ 返回值:71 - 否则:返回值:91
方法2:直接编写M语言(更简洁)
在Power Query的"添加列"选项卡选择"自定义列",输入以下公式(替换之前的表名和日期列为你的实际名称):
= Table.AddColumn(之前的表名, "区间对应值", each if [日期列] < #date(2022,7,18) then 31 else if [日期列] < #date(2022,8,8) then 51 else if [日期列] < #date(2022,8,30) then 71 else 91 )
注:这里利用条件判断的顺序,前面的条件已经排除了更早的日期,后续条件只需判断小于下一个区间的起始即可,逻辑更简洁。
内容的提问来源于stack exchange,提问作者Tomas Joe Gemine
相关产品推荐
相关产品推荐

