在订单商品、问卷兴趣与标签字段里,业务系统经常把多个值写进同一格:一格写「水杯,毛巾,杯子」,兴趣用分号隔开,标签用竖线或「 / 」连接。不拆开就无法按单品、单兴趣统计,下游筛选也会把整格当成一个不可切分的词。

如果采用传统手工方式,只能靠分列后再手工复制其它列、逐行插入,分隔符写错则一行原样留下;空段、首尾空格和整格本来就是空的行,处理口径也难以统一。

DT-Bot 的 「单元格拆行」 算子专为解决此类一格多值按分隔符拆成多行、其它列原样复制的问题而设计。一次只拆一列。默认就地改源表;写了结果名则写新表。未说分隔符则默认英文逗号。拆完后各段去首尾空格,空段丢掉;整格本来就是空的,仍保留一行空值。

一、 核心能力与适用场景

「单元格拆行」算子聚焦于单元格内多值的行向展开,覆盖以下三大核心能力:

核心能力 解决什么业务问题 典型业务场景
按英文逗号拆(默认) 把一格里用逗号隔开的多个值拆成一行一个值,其它列跟着复制。 订单的商品列一格写了「水杯,毛巾,杯子」,要拆成一行一个商品才能统计。
按中文逗号、分号、竖线等单字符拆 分隔符不是英文逗号时必须写明,避免误用默认逗号导致整格不拆。 问卷兴趣用分号隔开,要拆成一行一个兴趣;标签用竖线隔开,要展开后再筛选。
按多字符分隔并写出新表 分隔字符串原样使用,不要当成正则;写了结果名则保留源表、另存展开表。 商品列按「 / 」拆成多行,输出「订单商品_展开」。

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

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

比较维度 「单元格拆行」算子 「行操作」算子 「表格拆分」算子 「透视反透视」算子
主要定位 一格多值拆成多行,仍是一张表 一格拆成多列,或清洗字符,行数不变 一张表拆成多张表 宽表收成名称 + 值
输出机制 默认可就地;写了结果名则写新表 就地更新原表(单元格 / 列级) 源表只读,写出多张新表 就地或另存,改变表形态
典型动作 按分隔符拆行、其它列复制、去空段 去空格、替换、正则提取、分列 按渠道、季度、行数拆堆 反透视成长表
如何选择 “商品列一格多个品,要一行一个品” “把一格拆成多列,行数不能变” “按渠道拆成天猫、京东各一张” “把月份宽表收成名称+值长表”

注意:一次只拆一列。

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

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

【目标表】 + 【列与分隔符】 + 【结果名(可选)】

1. 目标表表达

  • 单表精准点名:明确拆哪一张表,例如 把 “订单商品” 的商品列按逗号拆成多行;
  • 默认当前流转表:若提示词中未显式提及表名,算子将默认继承上一节点连线流入的数据表。

2. 列与分隔符表达

  • 点名要拆的列:一次只拆一列;
  • 未说分隔符:默认英文逗号;
  • 必须写明的分隔符:中文逗号、顿号、分号、竖线、斜杠、空格、换行,或「 / 」这类多字符;
  • 多字符分隔:分隔字符串原样使用,不要当成正则。

3. 结果名与拆完规则

  • 不写结果名:就地改源表;
  • 写了结果名:写出新表,源表保持未展开;
  • 拆完后:各段去首尾空格,空段丢掉;整格本来就是空的,仍保留一行空值。

示例:

把 “订单商品” 的商品列按逗号拆成多行。

对应三段:

  1. 表:订单商品
  2. 列:商品;分隔符:英文逗号
  3. 结果:就地改源表

四、 核心功能与图解实战

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

场景 1:按英文逗号拆(默认就地)

业务背景:订单商品列把多个品写在同一格,中间用英文逗号隔开。统计单品销量前必须拆成一行一个商品;空商品的订单仍要留一行,不能丢掉。

【处理前:订单商品】

订单号 商品
O1 水杯,毛巾,杯子
O2 纸巾
O3 (空)

【执行提示词】

把 “订单商品” 的商品列按逗号拆成多行。

【处理后:订单商品(就地更新)】

订单号 商品 变更说明
O1 水杯 由一格拆出第 1 段
O1 毛巾 由一格拆出第 2 段,订单号复制
O1 杯子 由一格拆出第 3 段,订单号复制
O2 纸巾 单值,仍是一行
O3 (空) 整格本来就是空的,仍保留一行空值

逻辑详解:O1 变成 3 行,其它列跟着复制。O2 无需展开。O3 整格为空,保留一行空值,而不是删行。未写结果名,源表被就地展开。


场景 2:按分号拆(须写明分隔符)

业务背景:问卷兴趣用分号隔开。若误用默认英文逗号,整格不会被拆开,后续无法按单兴趣筛选。

【处理前:兴趣表】

姓名 兴趣
张三 跑步;游泳;阅读
李四 绘画

【执行提示词】

把 “兴趣表” 的兴趣列按分号拆成多行。

【处理后:兴趣表(就地更新)】

姓名 兴趣 变更说明
张三 跑步 按分号拆出第 1 段
张三 游泳 按分号拆出第 2 段,姓名复制
张三 阅读 按分号拆出第 3 段,姓名复制
李四 绘画 无分号,仍是一行

逻辑详解:必须按提示词中的分号拆开。同一能力也可以写:按中文逗号拆、按顿号拆、按竖线拆、按斜杠拆、按空格拆、按换行拆。分隔符与格子里真实使用的符号必须一致。


场景 3:多字符分隔、写出新表

业务背景:商品列用「 / 」(两侧带空格)连接。分析师希望保留未展开的源表,另存一张「订单商品_展开」给统计节点。

【处理前:订单商品】

订单号 商品
O1 水杯 / 毛巾 / 杯子
O2 纸巾

【执行提示词】

把 “订单商品” 的商品列按 “ / ” 拆成多行,输出 “订单商品_展开”。

【处理后:新表「订单商品_展开」】

订单号 商品 变更说明
O1 水杯 按多字符「 / 」拆出第 1 段,首尾空格已去掉
O1 毛巾 按「 / 」拆出第 2 段
O1 杯子 按「 / 」拆出第 3 段
O2 纸巾 单值,仍是一行

逻辑详解:分隔字符串原样使用,不要当成正则。写了结果名「订单商品_展开」,源表保持未展开。若格子里实际是英文逗号而提示词写「 / 」,则不会按逗号拆开。

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

Q1:为什么执行后源表行数变多了,没有生成新表?

答:这是默认机制。未写结果名时,本节点就地改源表,一行变多行。若需要保留未展开的底表,请在提示词里写出结果名,例如 输出 “订单商品_展开”。

Q2:拆完后空格、空段和整格为空分别怎么处理?

答:各段去首尾空格;中间空段丢掉;整格本来就是空的,仍保留一行空值。因此「水杯, ,杯子」会得到水杯、杯子两行,而整格为空的订单不会被删掉。

Q3:一次能拆两列吗?一格拆成多列该用谁?

答:一次只拆一列。一格拆成多列、行数不变,请用「行操作」。一张表拆成多张,请用「表格拆分」。宽表收成名称 + 值,请用「透视反透视」。

Q4:中文逗号、顿号、竖线和「 / 」不写明可以吗?

答:未说分隔符时默认英文逗号。中文逗号、顿号、分号、竖线、斜杠、空格、换行或「 / 」这类多字符,都要写明,否则整格会按错误分隔符原样留下。

六、 关联算子导航