Skip to main content

datadata-rest-api

本技能提供对 Datadata 平台 Rest API 的完整参考文档,在使用 Datadata Rest API 之前,**必须先加载本技能**。 本技能提供完整的 API 端点说明和 urllib.request(零额外依赖)调用示例。 首要用例是生成爬虫、ETL、批处理脚本,同时适用于所有需要直接调用 Datadata API 的场景。 涵盖数据源查询、SQL 执行、结果下载、Dataspace SQL 执行全流程。 使用场景: 1. 生成独立 Python 脚本(爬虫、ETL、批处理) 2. 生成定时任务脚本,比如每天定时爬去最新金融数据,并写入 Data Space 数据空间。

Informações da origem

Repositório
datadata-team/datadata-skills
Última atividade na origem
3 de julho de 2026 às 11:29
Idioma detectado do SKILL.md
chinês
Estrelas
0
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
4 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
datadata-rest-api
description
本技能提供对 Datadata 平台 Rest API 的完整参考文档,在使用 Datadata Rest API 之前,**必须先加载本技能**。 本技能提供完整的 API 端点说明和 urllib.request(零额外依赖)调用示例。 首要用例是生成爬虫、ETL、批处理脚本,同时适用于所有需要直接调用 Datadata API 的场景。 涵盖数据源查询、SQL 执行、结果下载、Dataspace SQL 执行全流程。 使用场景: 1. 生成独立 Python 脚本(爬虫、ETL、批处理) 2. 生成定时任务脚本,比如每天定时爬去最新金融数据,并写入 Data Space 数据空间。
## 功能概览 本 skill 提供 Datadata REST API 的完整参考文档,通过 `urllib.request`(仅标准库,零额外依赖)展示所有端点的调用方式。 **首要用例**是生成独立 Python 脚本(爬虫、ETL、批处理),但 API 文档本身是通用的 — 任何需要直接调用 Datadata API 的场景均可参考。 > **交互式操作(聊天中执行查询、探索数据等)请使用 `datadata-manual` skill。** MCP 已完整覆盖搜索、查询、Data Spaces 等日常交互功能。 ### 核心能力 - **REST API 参考** — 所有端点的完整说明,含请求/响应示例 - **urllib.request 调用模板** — 即拿即用的 Python 代码片段 - **数据源操作** — 搜索、元信息、表结构、Schema 扫描 - **SQL 查询** — execute-adhoc(只读,异步)、结果下载(NDJSON/CSV) - **Dataspace SQL 执行** — 通过 execute 端点运行任意 DuckDB SQL(建表/写入/改表/删表),同步返回 - **设备授权** — 脚本中自动获取/刷新 API Key ## 使用场景 | 场景 | 示例 | | ----------------- | ---------------------------------------------- | | 生成爬虫脚本 | "帮我写一个爬虫抓取数据写入 Data Space" | | ETL 批处理 | "写个脚本每天从 MySQL 导出数据到 CSV" | | 自动化数据流水线 | "生成脚本定时查询 Datadata 并发送报告" | | 查阅 API 文档 | "Datadata 的 execute-adhoc 接口怎么调?" | | Datadata API 集成 | "给我一个 Python 示例调用 Datadata API 查数据" | > 以下场景请使用 **`datadata-manual`** skill: > > - 聊天中交互式查询数据("帮我查一下销售数据") > - 探索数据源结构("看看这个 datasource 有哪些表") > - 设置表/列注释、触发扫描等即时操作 ## 概念 - **Datasource** — 查询目标的数据源。不同类型的 datasource(dataspace、MySQL、ClickHouse、CSV 等)有不同的表命名约定。 - **Data space** — 录入数据的目标,`dataspace` 类型 datasource(旧类型名 `ducklake` 已废弃)。通过 `POST /dataspaces/{datasourceId}/execute` 执行任意 DuckDB SQL 来管理表结构与数据。 - **读 / 写分离** — **查询/读取任何数据走 `execute-adhoc`**(查询引擎,把 dataspace 作为只读数据源挂载);**修改某个 dataspace 内的表结构或数据走 `POST /dataspaces/{id}/execute`**(单一 dataspace,同步执行)。 - **Query** (`execute-adhoc`) — **只读**抽象,包含 SQL 脚本、datasource 绑定和查询引擎类型。 - **Execution** — `execute-adhoc` 查询的后台执行实例。通过 `/executions/{id}/result` 异步获取结果。(Dataspace SQL 执行是同步的,无 execution。) ## API Key ### 手动设置(推荐用于脚本) ```bash export DATADATA_API_KEY="ak_..." export DATADATA_BASE_URL="https://www.datadata.com" # 可选,本地开发时覆盖 ``` API Key 在 Datadata 网页端创建:登录 → 头像 → Settings → API Keys → 创建新 Key。 所需权限: - `datasources:read` — 查询元信息 - `queries:execute-adhoc` — 执行 SQL(读取查询) - `executions:get` — 获取查询结果 - `datasources:scan` — 设置注释、触发扫描 > **Dataspace SQL 执行(`POST /dataspaces/{id}/execute`)当前无需特殊权限** — 有效 API Key(登录)即可,无需 `data-spaces:write`。 ### 设备授权(适用于无人值守脚本) 脚本中可通过设备授权自动获取 API Key(有效期 90 天): ```python # Step 1: 发起设备授权 resp = _request(f"{BASE_URL}/api/v1/api-keys/device-flow/code", method="POST") print(f"请打开: {resp['verificationUriComplete']}") # Step 2: 等待用户完成登录后换取 token resp2 = _request(f"{BASE_URL}/api/v1/api-keys/device-flow/token", method="POST", payload={"deviceCode": resp["deviceCode"]}) api_key = resp2["apiKey"]["key"] ``` ## Python 请求模板 所有脚本的基础模板(仅标准库,零依赖): ```python import json, urllib.request, os API_KEY = os.environ.get("DATADATA_API_KEY", "ak_...") BASE_URL = os.environ.get("DATADATA_BASE_URL", "https://www.datadata.com") def _request(url, method="GET", payload=None): headers = {"X-Datadata-Api-key": API_KEY, "Accept": "application/json"} data = json.dumps(payload).encode() if payload else None if payload: headers["Content-Type"] = "application/json" req = urllib.request.Request(url, data=data, headers=headers, method=method) with urllib.request.urlopen(req) as resp: raw = resp.read().decode() return json.loads(raw) if raw else None ``` ## 规则 ### 🔴 搜索数据源:必须让用户确认,禁止自动选用 搜索结果**绝不能**由 Agent 自动选取。将结果以序号列表呈现,等待用户明确选择。 ### 🔴 最小操作原则:完成一步即停 Agent 只执行用户**明确要求**的操作。生成脚本后立即停止,不要自动运行或推断后续步骤。 ### 🔴 生成的脚本必须零依赖 只使用 Python 标准库(`urllib.request`、`json`、`os` 等),不依赖 `requests`、`pandas` 等第三方库。 ### 查询只读 `execute-adhoc` **仅支持 SELECT**(只读查询引擎,dataspace 以只读方式挂载)。INSERT/UPDATE/DELETE/DDL 请使用 Dataspace SQL 执行端点 `POST /dataspaces/{datasourceId}/execute`。 ### 结果处理 生成的脚本应将查询结果保存到文件,不要硬编码打印大数据集。 ## References | 文档 | 说明 | | ---------------------------------------------------------- | ---------------------------------- | | [./references/api.md](./references/api.md) | REST API 端点完整参考 | | [./references/query-guide.md](./references/query-guide.md) | 查询引擎、表命名、标识符引用 | | [./references/data-spaces.md](./references/data-spaces.md) | Dataspace SQL 执行(爬虫写入必备) | ### 相关 skill - **`datadata-dql`** — DQL(Starlark)数据处理脚本编写
Ver no GitHub