You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerQuery如何将列表转换为带指定前缀的布尔值对应列?

PowerQuery 列表列转布尔标记列实现方案

该需求可直接在PowerQuery中实现,无需额外工具,以下是两种操作方式:

方式一:界面可视化操作(适合新手)

  • 第一步:将原始数据表导入PowerQuery编辑器,确认vendors列为列表类型。如果输入是[4,7,13]这类文本格式,先选中该列,点击「转换」选项卡 -> 「解析」-> 「JSON」,即可转为PowerQuery可识别的列表格式。
  • 第二步:选中vendors列,右键选择「重复列」,生成vendors - 复制列。
  • 第三步:点击vendors - 复制列右上角的扩展按钮(双箭头图标),选择「扩展到新行」,将每个列表元素拆分为单独行。
  • 第四步:选中扩展后的vendors - 复制列,点击「转换」选项卡 -> 「格式」-> 「添加前缀」,输入预设前缀vendor.确认。
  • 第五步:点击「添加列」选项卡 -> 「自定义列」,公式输入= true,列名设置为「标记」,确认。
  • 第六步:选中添加了前缀的vendors - 复制列,点击「转换」选项卡 -> 「透视列」,值列选择「标记」,聚合函数选择「不要聚合」,确认。
  • 第七步:框选所有vendor.开头的列,点击「转换」选项卡 -> 「替换值」,查找值输入null,替换为false,即可得到目标结果。

方式二:M代码直接实现(适合大数据量,无需手动调整)

直接打开PowerQuery的「高级编辑器」,替换原有代码为以下内容,按需修改数据源和前缀即可:

let
    // 替换为你自己的数据源导入步骤
    源 = Excel.CurrentWorkbook(){[Name="你的表名"]}[Content],
    // 若vendors列已经是列表格式,可删除下一行代码
    列表转换 = Table.TransformColumns(源, {{"vendors", Json.Document}}),
    // 自动提取所有出现过的唯一vendor编号
    所有编号 = List.Distinct(List.Combine(列表转换[vendors])),
    // 按前缀生成列名
    自定义前缀 = "vendor.",
    目标列名 = List.Transform(所有编号, each 自定义前缀 & Text.From(_)),
    // 批量生成布尔标记列
    结果表 = Table.AddColumns(列表转换, List.Zip({目标列名, List.Transform(所有编号, (n)=> each List.Contains([vendors], n))}))
in
    结果表

该方案运行效率更高,新增vendor编号时无需修改操作步骤,刷新即可自动生成对应新列。

内容的提问来源于stack exchange,提问作者Klaus Stadler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:57:01