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

如何将表中两列合并为record类型新列以实现后续逆透视操作

问题原因

你的代码报错是因为Record.SelectFields的作用是从现有行记录中提取已存在的字段,无法直接生成自定义结构的新record,同时你没有正确定义Score、Comments、ReportKey三个自定义字段。

单字段构造实现代码

如果要单独生成S1Q1Record列,正确写法如下:

let
    Source = Base5s,
    step1 = Table.FirstN(Source,3),
    step2 = Table.AddColumn(step1, "S1Q1Record", each [
        Score = [S1Q1],
        Comments = [S1Q1Comments],
        ReportKey = "S1Q1"
    ])
in
    step2

Power Query中直接用[字段名=值, 字段名=值]的语法就可以构造自定义record。

批量生成所有SxQxRecord列(推荐)

不需要手动逐个写25个AddColumn步骤,用以下代码可以自动遍历生成所有S1Q1到S5Q5对应的record列:

let
    Source = Base5s,
    // 生成所有题目编号列表 S1Q1 到 S5Q5
    QuestionList = List.TransformMany({1..5}, (s)=> List.Transform({1..5}, (q)=> "S"&Text.From(s)&"Q"&Text.From(q))),
    // 批量添加所有Record列
    AddAllRecordColumns = List.Accumulate(QuestionList, Source, (state, currentQ)=>
        Table.AddColumn(state, currentQ&"Record", each [
            Score = Record.Field(_, currentQ),
            Comments = Record.Field(_, currentQ&"Comments"),
            ReportKey = currentQ
        ])
    ),
    // 可选:删除原来的题目得分、评论列,只保留Id和新生成的Record列,方便后续逆透视
    KeepNeededColumns = Table.SelectColumns(AddAllRecordColumns, {"Id"} & List.Transform(QuestionList, (q)=> q&"Record"))
in
    KeepNeededColumns

后续逆透视得到目标表

生成所有Record列后,执行以下操作即可得到仅含Id、ReportKey、Score、Comments的结构化表:

  • 选中Id列,右键选择「逆透视其他列」
  • 点击生成的值列右上角的展开按钮,选择展开Score、Comments、ReportKey三个字段
  • 删除不需要的属性列即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:39:00