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

如何用Power Query将带评分的多列答案转为规范化行结构

Power Query 处理带对应Answer Score的CSV规范化方案

针对你的需求,这里提供适配新CSV结构的Power Query M代码,能自动将每组Answer N和Answer N Score转成单独一行,最终输出符合Salesforce导入要求的表结构:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{
        {"Card Name", type text}, 
        {"Sec Name", type text}, 
        {"Question Text", type text}, 
        {"Answer 1", type text}, 
        {"Answer 1 Score", Int64.Type}, 
        {"Answer 2", type text}, 
        {"Answer 2 Score", Int64.Type}
    }),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Card Name", "Sec Name", "Question Text"}, "Attribute", "Value"),
    #"Added Index" = Table.AddIndexColumn(#"Unpivoted Columns", "Index", 0, 1, Int64.Type),
    #"Calculated Group ID" = Table.AddColumn(#"Added Index", "Group ID", each Number.Floor([Index]/2)),
    #"Pivoted Column" = Table.Pivot(#"Calculated Group ID", List.Distinct(#"Calculated Group ID"[Attribute]), "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Index", "Group ID", "Card Name"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{
        {"Answer 1", "Answer"}, 
        {"Answer 1 Score", "Answer Score"}
    }),
    #"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each not List.IsEmpty(List.RemoveNulls({[Answer], [Answer Score]})))
in
    #"Filtered Rows"

代码步骤详解

  1. Source:加载Excel中名为Table1的数据源,和你原代码逻辑一致。
  2. Changed Type:更新数据类型定义,新增对Answer N Score列的类型设置(这里用整数类型,若你的分数是小数,可改成Decimal.Type,纯文本则用type text)。
  3. Unpivoted Columns:将除Card Name、Sec Name、Question Text外的所有列逆透视,把每个Answer和Score拆成单独行,生成Attribute(原列名)和Value(对应内容)两列。
  4. Added Index:添加索引列,为后续分组做标记。
  5. Calculated Group ID:通过索引除以2取整生成分组ID,确保每组Answer N和Answer N Score被分到同一组。
  6. Pivoted Column:按分组ID透视数据,把同一组的Answer和Score重新转回列结构。
  7. Removed Columns:删除不需要的中间列(索引、分组ID)以及Card Name(最终输出不需要该列)。
  8. Renamed Columns:将列名统一改成Answer和Answer Score,匹配Salesforce的导入要求。
  9. Filtered Rows:过滤掉Answer和Score都为空的无效行,保证数据干净。

扩展性说明

如果后续CSV新增更多Answer配对(比如Answer 3、Answer 3 Score),无需修改核心逻辑,只需在Changed Type步骤中新增对应列的类型定义即可,代码会自动识别分组处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:55:14