分析师经常要把「筛大额、按金额排序、只要前 N 行」一次做完,或把订单与客户按编码对齐后列出名称和金额,甚至直接交出一段查询语句,让结果落成工作空间里的一张新表。源表必须只读,跨表时更不能凭「列名碰巧相同」就乱连。

如果采用传统手工方式,只能先筛选再排序再另存,跨表还要 VLOOKUP 或多次复制粘贴。连接键一旦凭感觉对齐,订单里对不上的客户编码也会被胡乱补空或笛卡尔放大。过程无法沉淀为可回溯、可自动复跑的工作流。

DT-Bot 的 「NP-SQL」 算子专为解决此类自然语言或查询出新表而设计。它按自然语言或直接写查询,在工作空间表上查出一张新结果表。源表只读。跨表时连接键来自已确认的表关系,不凭列名相同就乱连。未点名结果表时,新表名是「源表名_NP-SQL」。

一、 核心能力与适用场景

「NP-SQL」算子聚焦于一次查询写出新表,覆盖以下三大核心能力:

核心能力 解决什么业务问题 典型业务场景
自然语言出表 用一句话完成过滤、排序、取前 N,并点名结果表。 筛出金额大于 100 的行,按金额从大到小,只要前 2 行。
跨表对齐 多表按已确认关系对齐后列出指定列;对不上的键不进结果。 订单表与客户表按客户编码对齐,列出订单号、客户名称、金额。
直接写查询 已经会写查询语句时,直接执行并落成工作空间表。 SELECT ... FROM 订单表 WHERE ... ORDER BY ...

多表关联后再过滤、汇总、排序、取前 N,可以一次出表。只要按键对齐后的明细、不要相关系数,也走本算子。

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

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

比较维度 「NP-SQL」算子 「聚合计算」算子 「表格截取」算子 「匹配填充」算子
主要定位 自然语言或查询出新表,可跨表 单表压行、口径清楚 按区域切列切行、不带计算 按键把字段填回原表
输出机制 源表只读,另写结果表 源表只读,另写短表 写出截取后的新表 在目标表上填列,不是另查一张宽表
典型动作 过滤+排序+前 N;按关系对齐;执行查询语句 按门店加总 按 Excel 区域切一块 把客户名称填回订单行
如何选择 “一句话或一段查询出新表;跨表键已在表关系里确认” “单表压行即可,不必写查询” “只切区域,不要过滤计算” “字段要回到原表每一行,不要新结果表”

两列相不相干请用「相关分析」。单表只要条件子集、不必排序取前 N 的复合查询,也可考虑「筛选器」。

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

「NP-SQL」算子支持自然语言或直接写查询,建议遵循以下标准的三要素编写公式:

【用到哪几张表】 + 【要什么结果:过滤 / 关联 / 汇总 / 排序 / 列,或直接给查询语句】 + 【结果表名(可选)】

1. 表

  • 单表:从 “订单表” 筛出...;
  • 跨表:从 “订单表” 和 “客户表” 按客户编码对齐...——连接键必须来自已确认的表关系,不凭列名相同就乱连;
  • 默认当前流转表:未点名且未写查询对象时,继承上一节点连线流入的数据表。

2. 要什么结果

  • 自然语言:过滤、关联、汇总、排序、取前 N、列出哪些列;
  • 直接查询:把完整查询语句交给本节点执行,结果落成工作空间表。

3. 结果名

  • 点名则用你写的表名(如「大额订单」);未点名时新表名是「源表名_NP-SQL」。源表只读。
从 “订单表” 和 “客户表” 按客户编码对齐,只要已付订单的客户名称和金额,输出 “已付订单”。

四、 核心功能与图解实战

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

场景 1:自然语言出表(过滤 + 排序 + 前 N)

业务背景:销售经理只要金额大于 100 的大额订单,按金额从大到小看前 2 笔,并单独落成「大额订单」供例会使用。底稿「订单表」必须只读。

【处理前:订单表】

订单号 金额
O1 80
O2 150
O3 220
O4 90

【执行提示词】

从 “订单表” 筛出金额大于 100 的行,按金额从大到小,只要前 2 行,输出 “大额订单”。

【处理后:大额订单(新表;源表只读)】

订单号 金额 变更说明
O3 220 220 > 100,金额最大,第 1
O2 150 150 > 100,第 2

逻辑详解:O1(80)、O4(90)未过线;过线后按金额降序只留前 2 行。结果表按提示词命名为「大额订单」。源表四行原样只读。


场景 2:跨表对齐(对不上的键不进结果)

业务背景:订单要带上客户名称才能对账。两张表按客户编码对齐;订单里多出来的编码,客户表没有就不应出现在结果里,不能凭空补名。

【处理前:订单表】

订单号 客户编码 金额
O1 C01 120
O2 C02 80
O3 C99 50

【处理前:客户表】

客户编码 客户名称
C01 张三
C02 李四

【执行提示词】

从 “订单表” 和 “客户表” 按客户编码对齐,列出订单号、客户名称、金额。

【处理后:订单表_NP-SQL(新表)】

订单号 客户名称 金额 变更说明
O1 张三 120 C01 对齐成功
O2 李四 80 C02 对齐成功

逻辑详解:O3 的 C99 在客户表里没有,对不上,不会出现。未点名结果表,新表名为「订单表_NP-SQL」。连接键来自已确认的表关系,不凭列名相同就乱连。两张源表都只读。


场景 3:直接写查询

业务背景:分析师已经写好过滤与排序语句,只需在工作空间执行并落成表,不必再翻译成另一套自然语言。

【处理前:订单表】

订单号 金额
O1 80
O2 150
O3 220

【执行提示词】

SELECT 订单号, 金额 FROM 订单表 WHERE 金额 > 100 ORDER BY 金额 DESC

【处理后:订单表_NP-SQL(新表)】

订单号 金额 变更说明
O3 220 满足金额 > 100,降序第 1
O2 150 满足金额 > 100,降序第 2

逻辑详解:O1(80)被 WHERE 去掉。未点名结果表,新表名为「订单表_NP-SQL」。源表只读。

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

Q1:跨表时会不会因为两表都有「客户编码」就自动连上?

答:不会。 连接键来自已确认的表关系,不凭列名相同就乱连。跨表前请先在表关系里确认路径。

Q2:未点名结果表时新表叫什么?源表会被覆盖吗?

答:未点名时新表名是「源表名_NP-SQL」。源表只读,不会被结果覆盖。

Q3:订单里有、客户表没有的编码,会出现在结果里吗?

答:场景 2 的口径是对不上就不进结果(O3 / C99 不会出现)。需要「把字段填回原表每一行」时,请改用 「匹配填充」。

Q4:单表压行、只切区域、两列相关,为什么不建议写在本算子里?

答:单表压行、口径清楚请用 「聚合计算」。按 Excel 区域切列切行、不带计算请用 「表格截取」。两列相不相干请用 「相关分析」。本算子适合自然语言或查询一次出表,尤其是跨表且关系已确认的场景。

六、 关联算子导航