Power BI转换编辑器中基于两列创建条件列并实现表透视的方法
双列判定条件列的可落地实现路径
- 用GUI条件列完成双规则判定(无需写代码)
打开「添加条件列」弹窗时,初始界面默认会带你先选一个基准列做判定,很容易让人误以为条件列只支持单字段判定。实际上完成第一个判定规则(state_id 等于 1)的设置后,直接点击弹窗内的「添加子句」按钮,就能新增并列的判定行,将第二行的列选择为owner、规则设为等于 1,两行判定的逻辑连接关系选「与」,最后给所有不满足条件的情况设置返回值为0,点击确认就能直接生成匹配业务逻辑的0/1标记列。这是Power Query原生支持的功能,不存在双列无法判定的限制,多数人操作受阻都是因为没注意到「添加子句」的按钮入口。 - 用自定义列写M公式实现灵活判定
点击「添加列」选项卡下的「自定义列」,输入判定公式:= if [state_id] = 1 and [owner] = 1 then 1 else 0
如果原表中的state_id、owner字段存在文本格式存数字的情况,可以在公式里提前做类型转换,避免判定逻辑失效:= if Number.From([state_id]) = 1 and Number.From([owner]) = 1 then 1 else 0
确认公式里的字段名和原表列名完全匹配、没有命名冲突,就能直接生成对应标记列。这种方式后续调整判定逻辑时,不需要反复点选GUI选项,直接修改公式即可。
匹配目标的透视操作流程
生成双条件标记列之后,后续操作流程和你之前用单字段完成透视的逻辑完全一致,不会有额外阻碍:
- 检查标记列的数据类型为整数,保证透视聚合时的兼容性
- 选中生成的0/1标记列,点击「转换」选项卡下的「透视列」功能
- 在透视设置面板中,将值列选为需要整合到同一行的日期字段,聚合方式根据业务需求选择:如果同一
ticket_id、同一标记值下仅对应1条日期,选「不要聚合」即可;如果存在多条匹配日期,可选择「最大值」「最小值」或文本合并类聚合,实现所有相关日期在同一ticket_id行下铺开的效果 - 透视完成后,逐行检查标记为1的列下的日期匹配结果,可将生成的0、1标识列重命名为符合业务语义的列名,再对空值做对应业务规则的补全即可
操作避坑:不要尝试在透视功能的设置界面内嵌套写双列判定逻辑,Power Query的透视功能仅支持基于现有表的独立字段做值映射,先把双列判定的标记固化为独立列,再执行透视,就能完全规避操作报错的问题。
内容的提问来源于stack exchange,提问作者Omar AlSaghier
相关产品推荐
相关产品推荐

