如何在Power BI中用M Query按条件合并单列内以|开头的行
Power Query M 实现跨行拼接操作步骤
假设你导入的原始数据单列名为Column1,按以下步骤操作即可:
步骤1:添加索引列(保证行顺序不打乱)
点击上方菜单栏「添加列」→「索引列」→「从0开始」,生成从0计数的索引列。
步骤2:添加分组标记列
点击「添加列」→「自定义列」,输入如下M公式,注意把#"添加索引"替换为你上一步的实际步骤名:
= let // 提取所有行的文本内容 AllRows = Table.Column(#"添加索引", "Column1"), // 生成分组ID:非|开头的行ID+1,|开头的行和前一个ID保持一致 GroupIDList = List.Skip( List.Generate( () => [CurrentID = 0, RowNum = 0], each [RowNum] <= List.Count(AllRows), each [ RowNum = [RowNum] + 1, CurrentID = if Text.StartsWith(AllRows{[RowNum]}, "|") then [CurrentID] else [CurrentID] + 1 ], each [CurrentID] ), 1 ) in GroupIDList
点击确定后,点击自定义列右上角的扩展按钮,选择「扩展到新行」,得到每一行对应的GroupID分组标识。
步骤3:分组拼接同组内容
点击上方菜单栏「转换」→「分组依据」,按如下参数设置:
- 分组依据:选择刚生成的
GroupID列 - 新列名:输入
合并后内容 - 操作:选择「自定义」
- 公式:输入
Text.Combine([Column1], " ")
点击确定后,即可得到你需要的拼接后结果。
可选优化
如果你的原始数据行首可能存在空格导致|开头判断失效,可以在添加索引列之前,先添加一步自定义列清洗原始文本:
= Text.TrimStart([Column1])
内容的提问来源于stack exchange,提问作者The Frog
相关产品推荐
相关产品推荐

