Power BI无分隔符时拆分列值为多行的技术求助
解决方案:基于已知颜色列表的精准拆分(Power Query实现)
核心思路是用你手中的完整颜色列表去匹配提取,而非尝试找分隔符拆分——因为你的数据本质是固定颜色集合的拼接,这是最可靠的方案。
具体操作步骤
1. 创建颜色参考列表
- 打开Power Query编辑器,点击「主页」→「输入数据」,把所有完整颜色值(包括带空格、标点的,比如
. Light blue、Neon Pink、Navy Blue (Royal))输入到单列表格中,将表格命名为ColorList,列名改为Color,选择「仅创建连接」后关闭。
2. 处理原始数据
- 加载你的原始数据到Power Query编辑器(假设表名为
OriginalData,列是ID和Values)。 - 添加自定义列:点击「添加列」→「自定义列」,输入以下代码:
= List.Select(ColorList[Color], (color) => Text.Contains([Values], color))
这段代码会遍历颜色列表,把当前行Values中包含的所有颜色收集成一个列表。
- 点击自定义列右侧的「展开」按钮,选择「到新行」,此时每个匹配到的颜色会拆分为单独一行,同时保留对应
ID。 - 删除原
Values列,将自定义列重命名为Values,即可得到目标结果。
关键细节处理
- 如果存在颜色包含关系(比如
Blue和Navy Blue (Royal)),必须把长颜色放在颜色列表的前面,这样Text.Contains会优先匹配长值,避免误拆分。 - 对于
Green. Light blue这类带特殊符号的组合,只要颜色列表里包含Green和. Light blue,就能精准提取。
完整M代码示例(直接编辑高级编辑器)
替换OriginalData和ColorList为你的实际表名即可使用:
let Source = OriginalData, #"Added Custom" = Table.AddColumn(Source, "MatchedColors", each List.Select(ColorList[Color], (color) => Text.Contains([Values], color))), #"Expanded MatchedColors" = Table.ExpandListColumn(#"Added Custom", "MatchedColors"), #"Removed Columns" = Table.RemoveColumns(#"Expanded MatchedColors",{"Values"}), #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"MatchedColors", "Values"}}) in #"Renamed Columns"
内容的提问来源于stack exchange,提问作者Sweepster
相关产品推荐
相关产品推荐

