基于HEADER3条件去除HEADER1重复值的Power BI M语言需求
Power BI M代码实现按HEADER3元素数量去重HEADER1
实现步骤:
- 添加元素数计算列:给数据表新增一列,计算HEADER3列的元素数量——空值记为0,非空则按
:::分割后统计列表长度。 - 分组筛选:按HEADER1分组,在每个分组里筛选出元素数量最少的行;如果同组内有多个行元素数相同,默认保留第一个匹配行(可按需调整)。
完整M代码示例
假设你的原始表名为原始数据表,替换成实际表名即可:
let // 加载原始数据表 源 = 原始数据表, // 添加HEADER3元素数计算列:空值返回0,非空则分割后取长度 添加元素数列 = Table.AddColumn(源, "HEADER3元素数", each if [HEADER3] = null or [HEADER3] = "" then 0 else List.Count(Text.Split([HEADER3], ":::")) ), // 按HEADER1分组,每组筛选元素数最小的行 按HEADER1分组 = Table.Group(添加元素数列, {"HEADER1"}, { {"保留行", each Table.First(Table.Sort(_, {"HEADER3元素数", Order.Ascending})), type table} }), // 展开保留的行,仅保留原始表列 展开保留行 = Table.ExpandTableColumn(按HEADER1分组, "保留行", Table.ColumnNames(源) ) in 展开保留行
关键逻辑说明
- 空值处理:直接把空的HEADER3记为0个元素,确保空值在筛选时优先级最高。
- 分组筛选:先对每组内的行按元素数升序排序,再取第一行,确保拿到元素数最少的记录;如果同组内有多个行元素数相同,可把
Table.First换成Table.Last或其他逻辑调整保留规则。 - 清理计算列:展开时只取原始表的列,自动去掉新增的"HEADER3元素数"列,不影响最终结果。
内容的提问来源于stack exchange,提问作者Rasec Malkic
相关产品推荐
相关产品推荐

