SuperAPI AI 工具集

docyrus-custom-query

数据与分析

查看项目

更新于 10-16 05:07

技能介绍

用途:管理 Docyrus 中保存的自定义查询记录(tenant_custom_query)。这类记录是命名、可复用、参数化的查询模板,正文为 DSQL(基于 appSlug.dataSourceSlug 表的逻辑 SQL,存于 dsql_query 列),并声明输出字段、运行时过滤器(参数)及可选的透视/计算配置。与临时 dsql 查询不同,保存后的记录可被应用代码调用。

主要能力:记录 CRUD 走 dev/architect API,按应用范围操作;执行走 reports API,按查询 id 加运行时过滤值运行。命令均位于 docyrus dsql 下:list-custom-query、get-custom-query、create-custom-query、update-custom-query、delete-custom-query、run-custom-query。创建时 name、fields 及 --dsqlQuery/--query 之一为必填,推荐 --dsqlQuery。

使用方式:先确认登录 docyrus auth who --json,无会话则 docyrus auth login。先用 docyrus-dsql-query-design 发现 schema 并编写、验证 SELECT,通过 docyrus dsql query 临时运行确认无误后再保存。用 {{filter FILTERS.status "t.status"}} 等绑定替换硬编码条件,未传过滤器编译为 1=1。创建示例:docyrus dsql create-custom-query --appSlug base --name "Tasks by status" --dsqlQuery '...' --fields '[…]' --filters '[…]'。运行前可加 --debug true 查看编译 SQL(不执行),--simulate true 返回 EXPLAIN ANALYZE;正式运行 docyrus dsql run-custom-query --queryId <id> --filters '{…}',返回 { data, meta: { count, compiledQuery } }。前端无生成的集合助手,需用 @docyrus/api-client 的 RestApiClient.runCustomQuery(id, options),options 为运行体 { offset?, filters?, debug?, simulate? },读取 result.data 与 result.meta.count。

限制与规则:DSQL 优先,旧版原始 SQL 仅用于既有记录;保存前必须先验证正文;fields[].slug 需与 SELECT 列表一致;参数只能通过 {{filter}} 绑定,禁止拼接用户输入;CRUD 需 --appId/--appSlug,运行只需 --queryId;删除为软归档;运行时 filters 规则的 field 必须与模板中的 {{filter FILTERS.<field> …}} 对应。记录列结构、fields/filters JSON 结构、操作符与运行契约见 references/custom-query-record-reference.md。