特殊接口 - 数据治理

查数据集分块上传/下载/预览/探索、维表清空与远程表 CRUD、数据血缘搜索/详情、LabelStudio 代理、SQL(idex)查询任务等接口时

06-二次开发 / API参考
dataset数据集uploaddownload分块上传preview预览explore探索dimension维表远程表create_remote_tableblood数据血缘search node

数据治理特殊接口

涵盖数据集(/dataset_modelview/api)、维表管理(/dimension_table_modelview/api)、数据血缘(/blood)、LabelStudio 代理(/proxy/labelstudio)、SQL 查询 idex(/idex)。

数据集 /dataset_modelview

代码文件:myapp/views/view_dataset.pyroute_base = '/dataset_modelview/api'

数据集详情页渲染协议(多 tab + api/html/table 类型)见 数据集预览接口

上传数据集

POST  /dataset_modelview/api/upload/<dataset_id>
Content-Type: multipart/form-data
参数 位置 类型 说明
dataset_id path int 数据集 ID
filename form string 文件名
partition form string 分区名(可选)
file form file 文件内容
current_chunk form int 分块序号
current_offset form int 字节偏移
total_chunk form int 总分块数
total_size form int 文件总大小

响应:

{"status": 0, "message": "success"}

数据集下载(多文件打包/重定向)

GET  /dataset_modelview/api/download_file/<dataset_id>

响应:

  • 多条 path 时尝试服务端打包为 {name}-{version}.zip 直接下载
  • 否则按首条可用 path 重定向(http(s) 链接 / 目录归档 download_archive / /static 静态路径)
  • 再兜底取首条 download_url 重定向
  • 都为空时返回 400;数据集不存在 404;无权限 401

权限口径:owner* 或包含当前用户,或当前用户为管理员。见 view_dataset.py:426

下载指定数据集

GET/POST  /dataset_modelview/api/download/<dataset_id>
GET/POST  /dataset_modelview/api/download/<dataset_id>/<partition>
参数 位置 类型 说明
dataset_id path int 数据集 ID
partition path string 可选,分区名

响应:

{
  "status": 0,
  "result": {"store_type": "local", "download_urls": ["/static/..."]},
  "message": "success"
}

另有目录归档下载接口 GET /dataset_modelview/api/download_archive/<dataset_id>/<path_index>(见 view_dataset.py:462)。

数据集详情页

GET  /dataset_modelview/api/detail/page/<dataset_id>
参数 位置 类型 说明
dataset_id path int 数据集 ID

响应: JSON,详情页配置(result.header 头部 + result.content[] 多 tab,tab 内 groupContent.type 取值 api/html/table)。数据预览 tab 内嵌 api 类型,value 指向 /dataset_modelview/api/preview/dataset/{id}

⚠️ 已按代码改正:原文档此处写的是 “数据集弹窗预览 GET/POST /dataset_modelview/api/alert/info/<dataset_id>(内嵌 iframe)”,当前代码中详情入口为 detail/page/<dataset_id>view_dataset.py:896),未发现 alert/info 路由,请确认。

预览数据集

GET/POST  /dataset_modelview/api/preview/dataset/<dataset_id>
参数 位置 类型 说明
dataset_id path int 数据集 ID

响应: HTML 表格 / 通用 table 协议({type:"table", value:{columns:[...], rows:[...]}})。读取 CSV 渲染(最多 200 行),媒体列(image/audio/video)自动追加预览列。见 view_dataset.py:1168

说明(已对照源码核实):原文档列出的按名称预览路由 /preview/<dataset_name>/preview/<dataset_name>/<dataset_version>/preview/<dataset_name>/<dataset_version>/<dataset_segment> 在当前 view_dataset.py 中不存在,实际仅提供 /preview/dataset/<dataset_id>view_dataset.py:1168)。

探索数据集

GET/POST  /dataset_modelview/api/explore/<dataset_id>

响应: 302 重定向到 Notebook 编辑器

说明: 复制 data-explore.ipynb 和数据集文件到工作空间,启动 Jupyter Notebook 进行交互式探索。


维表管理 /dimension_table_modelview

代码文件:myapp/views/view_dimension.pyroute_base = '/dimension_table_modelview/api';远程表动态视图 route_base = '/dimension_remote_table_modelview'

清空维表数据

GET/POST  /dimension_table_modelview/api/clear/<dim_id>
参数 位置 类型 说明
dim_id path int 维表 ID

响应: 302 重定向到维表详情页面

说明: 对远程数据库执行 TRUNCATE TABLE

更新远程表

GET  /dimension_table_modelview/api/create_remote_table/<dim_id>

响应: 302 重定向到维表详情页面

说明: 根据维表配置的列信息在远程数据库(MySQL/PostgreSQL)创建或变更表结构。

远程维表 CRUD(动态路由)

GET     /dimension_remote_table_modelview/<dim_id>/api/_info              # 元信息
GET     /dimension_remote_table_modelview/<dim_id>/api/                   # 列表
POST    /dimension_remote_table_modelview/<dim_id>/api/                   # 新增
GET     /dimension_remote_table_modelview/<dim_id>/api/<int:pk>           # 查看
PUT     /dimension_remote_table_modelview/<dim_id>/api/<pk>               # 更新
DELETE  /dimension_remote_table_modelview/<dim_id>/api/<pk>               # 删除
POST    /dimension_remote_table_modelview/<dim_id>/api/upload/            # 批量上传
GET     /dimension_remote_table_modelview/<dim_id>/api/download_template/ # 下载模板
GET     /dimension_remote_table_modelview/<dim_id>/api/download/          # 批量下载
POST    /dimension_remote_table_modelview/<dim_id>/api/multi_action/<name> # 批量操作

说明: 每个维表动态注册一组路由,对远程数据库表进行 CRUD 操作。接口规范同标准化接口


数据血缘 /blood

代码文件:myapp/views/view_blood.pyroute_base = '/blood'

血缘节点/边的通用数据结构与上报约定见 通用血缘链路接口

血缘搜索

GET  /blood/search/node
参数 位置 类型 说明
keyword query string 搜索关键词
node_id query string 指定节点 ID
depth_up query int 上游深度,默认 3
depth_down query int 下游深度,默认 3

响应:

{
  "status": 0,
  "result": {
    "blood": [{"id": "node1", "name": "表名", "type": "table", "children": [...]}],
    "control": {"focus_node_id": "node1", "node_ops": ["detail"], "direction": "horizontal"}
  }
}

说明: BFS 遍历血缘图,匹配 node_id / name / platform / type / label。

血缘节点名称搜索(自动补全)

GET  /blood/search/name
参数 位置 类型 说明
keyword query string 搜索关键词
limit query int 返回条数,默认 20,最大 100

响应:

{
  "status": 0,
  "result": {
    "options": [{"node_id": "id1", "name": "表名", "value": "id1", "label": "表名"}],
    "total": 50
  }
}

血缘节点详情

GET  /blood/show/<node_id>

响应:

{
  "status": 0,
  "result": {
    "tab1": {
      "detail": [{"groupName": "基本信息", "groupContent": [...]}],
      "link": [{"text": "跳转", "url": "/xxx"}]
    },
    "_meta": {"node_id": "id1", "name": "表名", "type": "table"}
  }
}

LabelStudio代理 /proxy/labelstudio

代码文件:myapp/views/view_labelstudio.pyroute_base = '/proxy/labelstudio'

所有接口均为代理接口,转发到 LabelStudio ML Backend。

POST/GET  /proxy/labelstudio/<field>/<model_type>/health     # 健康检查
POST/GET  /proxy/labelstudio/<field>/<model_type>/setup      # 模型初始化
POST/GET  /proxy/labelstudio/<field>/<model_type>/train      # 模型训练
POST/GET  /proxy/labelstudio/<field>/<model_type>/webhook    # Webhook
POST/GET  /proxy/labelstudio/<field>/<model_type>/delete     # 删除模型
POST/GET  /proxy/labelstudio/<field>/<model_type>/predict    # 预测
参数 位置 类型 说明
field path string 标注字段
model_type path string 模型类型

predict 响应:

{"predictions": [{...}]}

另有 /proxy/labelstudio/projects 路由(见 view_labelstudio.py)。


SQL查询 /idex

代码文件:myapp/views/view_sqllab.pyroute_base = '/idex'

SQL 引擎配置

GET/POST  /idex/config

响应: JSON,包含引擎参数配置和可用数据库列表

提交 SQL 查询任务

POST  /idex/submit_task
参数 位置 类型 说明
sql body string SQL 语句
engine body string 引擎类型
database body string 数据库名

响应:

{"task_id": "xxx", "status": "running"}

获取任务状态

GET  /idex/look/<task_id>

响应:

{"status": "running|success|error", "progress": 50}

获取查询结果

GET  /idex/result/<task_id>

响应:

{"columns": ["col1", "col2"], "rows": [[...], [...]], "error": ""}

下载查询结果

GET  /idex/download_url/<task_id>

响应: 重定向到下载 URL 或返回 {"download_url": "..."}

终止查询任务

GET  /idex/stop/<task_id>

响应:

{"status": 0, "message": "success"}
最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki