分析师经常要把「筛大额、按金额排序、只要前 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 区域切列切行、不带计算请用 「表格截取」。两列相不相干请用 「相关分析」。本算子适合自然语言或查询一次出表,尤其是跨表且关系已确认的场景。
六、 关联算子导航
- 若只需单表压行汇总、不必写查询:请参考 数据统计 · 聚合计算
- 若只需按区域切列切行、不带计算:请参考 数据处理 · 表格截取
- 若只需两列相关系数长表:请参考 数据统计 · 相关分析
- 若需按键把字段填回原表每一行:请参考 数据处理 · 匹配填充
- 若只需条件子集、不必一次完成排序取前 N:请参考 数据处理 · 筛选器
- 欲下载真实数据表格亲自动手实测:请查阅 数据案例 · NP-SQL案例