← ClaudeAtlas

dolphindb-sql-programminglisted

为 DolphinDB / DolphinScript SQL 编写、审查和优化��供规则集。 Use when 用户需要编写、改写、审查或优化 DolphinDB SQL,包括 select/exec/update/delete、 where 条件、group by/context by/cgroup by/pivot by、aj/wj/pwj、时间窗口、数组向量、 SQL 元编程、分布式 SQL、执行计划和 SQL Trace。
dolphindb/DolphinX_Skill · ★ 8 · API & Backend · score 57
Install: claude install-skill dolphindb/DolphinX_Skill
# DolphinDB SQL 编程 ## 使用流程 按以下流程使用本 skill: 1. 判断输入是否属于 DolphinDB / DolphinScript SQL。若不是,回复“请提供 DolphinDB SQL 或 DolphinScript 表查询代码。” 2. 明确任务意图:过滤与分区、时序关联与窗口、分组与组内计算、结果整形、SQL 元编程、执行语义或性能优化。 3. 明确输出形态:每组一行、明细等长、累计分组、二维透视、左表等长、数组向量、动态查询结果或更新删除结果。 4. 依据本文件规则选择 SQL 入口。需要案例时,阅读对应 `references/scene-*.md`。 5. 审查代码时,按各章节的反例和检查清单确认是否需要改写。若代码已符合规则,直接说明无需改写。 ## 总规�� ### 规则 01:DolphinDB SQL 不是标准 SQL 的简单扩展 DolphinDB SQL 与 DolphinScript 变量、函数、向量函数、时序连接、数组向量、元编程和分布式执行机制共同工作。不要用普通 SQL 惯性替代 `context by`、`cgroup by`、`pivot by`、`aj/wj/pwj` 等 DolphinDB 专用入口。 ### 规则 02:数据已在表中时,优先保留 SQL 承载层 过滤、投影、分组、关联、窗口、透视、更新、删除和结果整形都可在 SQL 内完成。过早取出列向量、子表或中间表,会增加扫描、合并和重新分组成本。 ### 规则 03:SQL 可直接衔接 DolphinScript 变量和函数 SQL 可引用脚本变量、表对象、自定义函数和内置函数,也可作为变量值、函数参数和返回值。未使用 catalog 时,分布式表应通过 `loadTable` 等函数取得表对象后查询。 ### 规则 04:标准 SQL 写法可用,但写入方式需判断 DolphinDB 支持 `create table`、`insert into`、`select` 等标准 SQL 风格,也支持 catalog 访问分布式表。分布式表大量写入时,一般优先评估 `append!` 或 `tableInsert`,不要默认使用 `insert into`。 ### 规则 05:先按输出形态选择分组入口 每组一行使用 `group by`;明细等长输出使用 `context by`;累计分组输出使用 `cgroup by`;二维透视使用 `pivot by`。入口选择应由输出形态决定,而不是只看是否存在分组键。 ### 规则 06:过滤阶段优先缩小数据范围 能用键集合过滤时,优先 `exec key from dim where ...` 得到键向量,再用 `where key in keys` 过滤主表。仅为筛选主表而做 `join`,通常会引入不必要的连接成本。 ### 规则 07:`where` 条件需要区分普通条件和序列条件 普通条件可使用逗号或 `and`,并优先放置高选择性条件。条件包含 `deltas`、`ratios`、`ffill`、`move`、`prev`、`cumsum` 等序列相关函数时,应使用 `and`,避免逗号的逐层过滤改变序列上下文。 ### 规则 08:分布式查询必须检查分区剪枝 分布式查询应尽量使用分区列或系统可识别的分区表达式。不要对分区列使用字符串格式化、任意算术、链式比较,或使用非分区时间列期待分区剪枝。分布式查询的 `where` 子句不应使