agentsclimarketplace

Datadata dql

Skill datadata-team/datadata-skills/skills/datadata-dql

本技能包含了 Datadata DQL 查询脚本语言的完整参考文档,当使用 Datadata DQL 脚本时,**必须先加载本技能**。 Write DQL data processing scripts for the Datadata platform — a Starlark-based extended scripting language supporting DataFrame/Series operations, SQL queries, HTTP requests, and more. Use when the user needs to write data transformation, data cleaning, data generation, or custom data processing logic.From its SKILL.md

Install
npx -y skills add datadata-team/datadata-skills --skill datadata-dql

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.9 KB, ~2.8k tokens by cl100k_base, as published. Nobody here has run it

Datadata Query Language (DQL) 脚本编写

DQL 是基于 Starlark 的自定义脚本语言,扩展了 Starlark 的语法和标准库,提供数据处理、HTTP 网络调用等能力。

🔴 核心规则

1. 脚本必须有 return 语句

DQL 脚本实际是一个函数的 body,最后必须有 return 语句返回数据,否则执行结果为空。

# ✅ 正确
df = query("SELECT * FROM users")
return df

# ❌ 错误:没有 return,结果为空
df = query("SELECT * FROM users")

2. 编写前必须先阅读 grammar.txt(语法规范)

DQL 基于 Starlark。编写任何 DQL 脚本前,必须先阅读 grammar.txt(Starlark EBNF 语法),严格按其允许的语法结构编写,不得套用 grammar.txt 未定义的语法

3. 必须先阅读对应的 References 文档

禁止仅凭本文档就编写 DQL 代码。 本文档只是索引,实际 API 签名、参数、返回值以 references 为准。

两类"必读"分工grammar.txt语法(所有脚本都要先读,见上一条);各 .mdAPI(按场景读)。

编写代码前至少阅读以下对应文档:

场景必读文档
SQL 查询query.md
HTTP 请求fetch.md
数据转换 / DataFramedataframe.md
Series 操作series.md
时间处理 / 数学 / JSONtime.mdmath.mdjson.md
concat / throw / printbuiltins.md
2D 绘图canvas_drawing.md

4. 关于 API 文档的权威来源

所有函数/类的完整签名定义以 builtins.pyi 为准,各 .md 文件仅为快速参考和示例说明。

5. 所有 DQL 扩展均为内置全局名称

queryfetchconcatthrowjsonmathtimecanvasDataFrameSeries 都是内置的全局名称,无需 import

6. 不确定时先问用户,不要自行猜测

当遇到以下情况时,必须先向用户确认,而不是自行假设:

  • 外部 API 返回的数据结构或字段含义不明确
  • 用户需求中的业务逻辑模糊(如:什么是"异常"、阈值是多少)
  • 数据字段顺序不确定(如 K 线的 [开, 高, 低, 收] 还是 [开, 收, 低, 高]
  • 用户提到的表名、列名在上下文中不存在或不确定
# ❌ 错误:自行猜测字段顺序,导致结果错误
data = resp.body["klines"]
df = DataFrame(data, columns=["time", "open", "high", "low", "close"])  # 猜错了

# ✅ 正确:先输出类型和数据给用户确认
return {"type": type(resp.body), "data": resp.body}  # 让用户确认类型和数据结构
# 然后根据用户反馈再写处理逻辑

工作流程

  1. 阅读语法规范 — 编写前先读 grammar.txt,确认可用语法(见核心规则第 2 条)
  2. 理解用户需求 — 确定脚本的目标(数据转换、数据清洗、数据生成、可视化、HTTP 调用等)
  3. 查询数据 — 使用 query()fetch() 获取数据
  4. 先验证数据再处理 — 用 return 临时返回原始数据确认结构,不要凭猜测写代码
  5. 数据处理 — 使用 Series/DataFrame 的方法进行数据操作(过滤、转换、聚合等)
  6. 生成结果 — 返回处理后的数据或结果对象
  7. 逐步验证 — 每步操作后及时 return 临时返回中间结果来检查,确认后再继续

核心概念

  • DataFrame:二维表格,可访问列 (df['col'])、行 (df[0]),支持分组、排序、合并等操作
  • Series:一维列数据,支持映射 (.map())、过滤、统计聚合等
  • Timestamp:时间戳类型,用于时间序列的滚动窗口和重采样(详见 time.md
  • DType:数据类型包括 int, float, string, date, timestamp

模块和函数速查

以下均为内置全局名称,无需 import,直接使用:

名称用途详见
query(sql, ...)SQL 查询query.md
fetch(url, ...)HTTP 请求fetch.md
DataFrame()二维表格dataframe.md
Series()一维列series.md
math.ceil(x)数学函数math.md
time.time()时间处理time.md
json.dumps(x)JSON 处理json.md
concat([df1, df2])连接数据builtins.md
throw(err)抛出错误builtins.md
print(...)内置函数builtins.md
canvas.Context(w,h)2D 绘图canvas_drawing.md

使用场景

各模块参考文档中均包含实用示例:

输出规则

  • 脚本最后必须有 return 语句,DQL 脚本是函数的 body,无 return 则结果为空
  • 可返回 DataFrame、dict、list 或其他可序列化的数据结构
  • 返回值会自动转换为 JSON 并发送给前端
  • 避免返回过大的数据结构(> 1MB),必要时加入 LIMIT 限制

Starlark 基础

DQL 基于 Starlark,支持:

# 基本类型
x = 42                      # 整数
s = "hello"                 # 字符串
lst = [1, 2, 3]            # 列表
d = {"key": "value"}        # 字典

# 控制流
if x > 0:
    print("positive")
for i in range(5):
    print(i)

# 函数和 Lambda
def add(a, b):
    return a + b
square = lambda x: x * x

详见 Starlark 官方文档

References

本 skill 包含以下参考文档:

文档说明
grammar.txtStarlark EBNF 语法规范(编写前必读)
dataframe.mdDataFrame 完整 API 参考
series.mdSeries 完整 API 参考
query.mdSQL 查询(query)参考
fetch.mdHTTP 请求(fetch)参考
math.md数学函数(math)参考
time.md时间处理(time)参考
json.mdJSON 处理(json)参考
builtins.md内置函数(concat, throw, print 等)参考
canvas_drawing.mdCanvas 2D 绘图 API + 示例

外部资源

What ships with it: 12 files

98.5 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.