youdata-data-model-nl-query
SKILL.md
有数数据模型自然语言查询技能
功能
该技能允许用户通过自然语言或者逻辑sql查询数据模型,无需编写复杂的SQL语句。
依赖环境
- Node.js 20+
- 需要网络连接访问知数平台API
- 需要安装 skill
youdata-env-config并完成配置
使用场景
- 用户想要查询数据模型但不想写复杂的SQL语句
- 需要通过自然语言或者逻辑sql进行数据分析
- 快速获取数据模型的统计信息
- 注意 生成自然语言提问的时候不要丢失用户问题中的日期、维度等筛选条件
使用方法
- 提供数据模型ID (dataModelId)
- 提供自然语言查询或者逻辑sql查询问题
- 技能将调用queryDataModel函数进行智能查询
配置要求
需要在skill目录下 /scripts/env.js 中配置:
tokenKey: 用户的有数tokenKeydomainUrl: API域名
调用示例
- step1:使用 skill
youdata-env-config获取 env(json字符串格式),同一次会话youdata系列的skill可以复用,不用二次生成 - step2:获取当前 SKILL.md 的绝对目录地址 skillFolder
- step3:调用脚本
-- 示例1:自然语言查询
node ${skillFolder}/scripts/index.js <dataModelId> "查询最近7天的销售总额" null <limit> <env>
-- 示例2:逻辑sql查询
node ${skillFolder}/scripts/index.js <dataModelId> null "select sum(销售额) from 订单 where 日期 >= '2023-01-01'" <limit> <env>
参数说明
dataModelId: 数据模型的唯一标识符,用户自然语言输出中指定的模型id、数据模型id 或者问答上文中使用 skill 获取到的 <模型id>question: 自然语言查询问题logicSql: 逻辑sql查询问题limit: 用户自然语言问题中指定的返回结果集的数量,如果用户未指定,则默认 limit = 5000
返回结果
- 返回JSON格式的查询结果,主要包含以下内容:
{
"logPath": "http://127.0.0.1:8888/operation/log/1698585200000", // api 调用日志
"head": ["国家", "地区", "子类别", "客户名称", "利润", "折扣", "数量", "销售额"], //表头
"body": [ //样例数据集
["中国","东北","纸张","赵婵",0,0,2,210],
["中国","中南","复印机","严聪",160.02,0,2,2000.46]
],
"logicSql": "select sum(销售额) from 订单 where 日期 >= '2023-01-01'", // 逻辑sql查询语句
"sqls": [
"select sum(销售额) from 订单 where 日期 >= '2023-01-01'" // 最终数据库查询的执行sql
]
}
- 脚本打印的 logPath 必须 返回给用户,用户可以通过该链接查看 api 调用日志。
错误处理
- 如果没有安装 skill
youdata-env-config,会提示安装该技能 - 缺少参数时会提示正确用法
- 配置不完整时会提示配置信息
- 网络错误会显示具体错误信息
- 脚本查询失败时显示错误信息并立刻终止问答