在对照表与指标竖排报表链路中,分析师经常面对「指标在行、地区在列」的宽表,后续透视或出表却需要「地区在行、指标在列」;或者月份竖排,需要翻成横排表头。这与按维度求和的透视不是同一件事。

如果采用传统手工方式,不仅要整表复制、选择性粘贴「转置」,而且空单元格、表头来源和是否另存都容易失手,也无法形成可回溯、可自动复跑的工作流。

DT-Bot 的 「行列转置」 算子专为解决此类整表翻轴而设计。它把整张表行变列、列变行,默认就地改源表;写了结果名则写新表。默认用第一列的取值当新表头。不聚合、不指定列维。

一、 核心能力与适用场景

「行列转置」算子聚焦于整表行轴与列轴对调,覆盖以下三大核心能力:

核心能力 解决什么业务问题 典型业务场景
第一列当新表头(默认) 第一列的取值成为新表头,该列列名成为新表第一列。 对照表「指标在行、地区在列」翻成「地区在行、指标在列」。
点名某一列当新表头 明确指定用哪一列的取值当新表头,而不是默默依赖列顺序。 用「指标」列当新表头,避免列顺序变化后翻错轴。
纯矩阵翻轴 / 写出新表 不要用某一列当表头,原表头当作矩阵第一行一起翻;写了结果名则源表不改。 整表当纯矩阵翻轴,新表头为列1、列2…;输出「对照表_转置」。

二、 边界指南:它与相近算子有何区别?

在构建数据工作流时,理解算子之间的职责边界至关重要:

比较维度 「行列转置」算子 「透视反透视」算子 「表头整理」算子
主要定位 整表翻轴,行变列、列变行 指定谁做列、格子里求和或计数 只改列名或列顺序,不翻轴
输出机制 默认就地改源表;写了结果名则写新表 源表只读,写出新表 就地或另存新表
典型动作 第一列当新表头、点名列当新表头、纯矩阵翻轴 透视交叉表、反透视成长表 修改列名、剔除冗余列、调整列顺序
如何选择 “整表翻过来,格子原样落入对应位置,不要求和” “按地区做行、月份做列,金额求和” “只把英文字段名改回中文,表还是原来的宽窄”

不聚合、不指定列维。新列数超过 512 会拒绝。空单元格原样保留。

三、 提示词编写规范与公式

「行列转置」算子支持自然语言直接表达,建议遵循以下标准的三要素编写公式:

【目标表范围】 + 【转置动作】 + 【表头来源与输出】

1. 目标表范围表达

  • 单表精准点名:明确指定单张表名称,例如 把 “对照表” 行列转置,第一列当新表头;
  • 默认当前流转表:若提示词中未显式提及表名,算子将默认继承上一节点连线流入的数据表。

2. 表头来源表达

  • 第一列当新表头(默认):第一列当新表头;未写时也按此默认执行;
  • 点名某一列:用 “指标” 列当新表头;
  • 纯矩阵翻轴:不要用某一列当新表头——原表头会当作矩阵第一行一起翻,新表头为列1、列2…。

3. 结果名(可选)

  • 不写则改源表;
  • 写了结果名则写新表,源表不改,例如 输出 “对照表_转置”。

示例对应三段:

  1. 表:对照表
  2. 表头:第一列取值当新表头
  3. 结果:就地改源表

四、 核心功能与图解实战

以下结合真实企业数据场景,展示「行列转置」在不同需求下的处理效果:

场景 1:第一列当新表头(默认)

业务背景:对照表当前是「指标在行、地区在列」,后续出表需要「地区在行、指标在列」。格子里的数值必须原样落入对应位置,不能对格子求和。

【处理前:对照表】

指标 华东 华北
销售额 100 80
订单数 10 8

【执行提示词】

把 “对照表” 行列转置,第一列当新表头。

【处理后:对照表(就地更新)】

指标 销售额 订单数 变更说明
华东 100 10 原「华东」列翻成行;销售额 100、订单数 10 原样落入
华北 80 8 原「华北」列翻成行;销售额 80、订单数 8 原样落入

逻辑详解:第一列列名「指标」成为新表第一列;第一列取值「销售额」「订单数」成为新表头。原来的华东、华北变成行。这不是透视,没有对格子做求和。空单元格会原样保留。


场景 2:点名某一列当新表头

业务背景:对照表第一列恰好是「指标」,分析师希望把表头来源写死,避免以后列顺序调整后仍按「第几列」去翻。

【处理前:对照表】

指标 华东 华北
销售额 100 80
订单数 10 8

【执行提示词】

把对照表行列转置,用 “指标” 列当新表头。

【处理后:对照表(就地更新)】

指标 销售额 订单数 变更说明
华东 100 10 点名「指标」列当新表头,结果与默认第一列策略相同
华北 80 8 数值原样落入,不聚合

逻辑详解:点名列与默认第一列在本例中不产生第二套翻法,因为「指标」本来就是第一列。若以后「指标」不再位于第一列,仍应点名该列,而不是改口去指定列维或求和。


场景 3:纯矩阵翻轴并写出新表

业务背景:需要把对照表当作纯矩阵翻转,不要用某一列当新表头;原表头要当作矩阵第一行一起翻。源对照表必须保留导入原样,结果落到新表。

【处理前:对照表】

指标 华东 华北
销售额 100 80
订单数 10 8

【执行提示词】

把对照表整表转置,不要用某一列当新表头,输出 “对照表_转置”。

【处理后:对照表(源表不改)】

指标 华东 华北 变更说明
销售额 100 80 写了结果名,源表保持 2 行 × 3 列原样
订单数 10 8 写了结果名,源表保持导入原样

【处理后:对照表_转置(新表)】

列1 列2 列3 变更说明
指标 销售额 订单数 原表头作为第一行一起翻
华东 100 10 原「华东」列翻成行
华北 80 8 原「华北」列翻成行

逻辑详解:新表头为列1、列2、列3(或同类编号)。原表头「指标、华东、华北」会作为矩阵第一行一起翻。空单元格原样保留。不聚合、不指定列维。新列数超过 512 会拒绝。

五、 常见问题与操作贴士(FAQ)

Q1:什么时候就地改源表,什么时候会多一张新表?

答:未写输出名时,「行列转置」默认就地改源表,工作空间不会多出新表名。提示词写了输出名(如「对照表_转置」)则源表应仍原样,结果落在新表。
就地转置后再执行下一条,会在已经翻过的表上再翻一次,核验前请确认当前表形态。

Q2:转置会对格子求和吗?和「透视反透视」怎么选?

答:不会求和。本算子只翻轴,格子原样落入对应位置,不聚合、不指定列维。
指定谁做列、格子里求和,请用 「透视反透视」。只改列名或列顺序、不翻轴,请用 「表头整理」。

Q3:空单元格和新列数有什么限制?

答:空单元格原样保留,不会被填成 0 或空串策略以外的值。新列数超过 512 会拒绝——本算子面向对照表翻轴,不是高基数列展开。

Q4:不写「第一列当新表头」会怎样?

答:默认仍用第一列的取值当新表头,该列列名成为新表第一列。只有明确写「不要用某一列当新表头」时,才走纯矩阵翻轴,原表头当作矩阵第一行一起翻。

六、 关联算子导航