PowerBI M语言语法错误排查及多列条件判断实现求助
PowerBI M代码错误分析与需求实现方案
错误原因解析
你的M代码出现Expression.SyntaxError: Token Comma expected错误,核心问题如下:
- 语法缺失:多个列的比较条件之间未添加逻辑运算符(如
and/or)和必要分隔,比如[Fish]> 65 [Goat]> 65这种写法不符合M语言语法规则,导致解释器无法识别。 - 冗余无效逻辑:重复编写了5次完全相同的
if分支,无实际作用,反而加剧代码混乱。 - 类型参数错误:最后一个参数
type "No"是无效写法,M语言中指定列类型需使用type text这类合法标识。
实际需求实现方法
针对「四列中至少三列数值≥65时显示“Yes”,否则显示“No”」的需求,提供两种简洁可行的实现方式:
方法一:计数统计法(推荐,适配列数较多的场景)
通过统计符合条件的列数量来判断,代码更简洁易维护:
CheckValues = Table.AddColumn( #"_2015_2022_TACOS", "YesIfGreater65", let // 将四个列值打包为列表,筛选出≥65的元素并统计数量 qualifiedCount = List.Count(List.Select({[Fish], [Goat], [Pork], [Beef]}, each _ >= 65)) in if qualifiedCount >= 3 then "Yes" else "No", type text // 指定列类型为文本 )
方法二:枚举条件组合法(适合列数较少的场景)
直接枚举所有满足「至少三列≥65」的条件组合:
CheckValues = Table.AddColumn( #"_2015_2022_TACOS", "YesIfGreater65", each // 枚举所有三列达标或四列全达标的情况 ([Fish] >= 65 and [Goat] >= 65 and [Pork] >= 65) or ([Fish] >= 65 and [Goat] >= 65 and [Beef] >= 65) or ([Fish] >= 65 and [Pork] >= 65 and [Beef] >= 65) or ([Goat] >= 65 and [Pork] >= 65 and [Beef] >= 65) then "Yes" else "No", type text )
内容的提问来源于stack exchange,提问作者redfoxbat
相关产品推荐
相关产品推荐

