报表数据获取指南
本文说明希悦 OpenAPI 中报表数据相关接口的用途、字段结构及调用顺序。
本手册覆盖以下 2 类接口能力:
Reporting:读取报表参数、查询定义和查询结果Dataset:直接读取底层数据集记录
本文仅覆盖数据读取场景,不包含报表设计、数据集建模及写入接口。
1. 接口范围
报表数据读取相关接口能力如下:
| 接口能力 | 作用 | 在本指南中的用途 |
|---|---|---|
Reporting |
获取报表中定义的筛选参数、查询列表并执行查询 | 按报表定义口径读取结果数据 |
Dataset |
直接查询底层数据集记录 | 读取底层明细数据,用于联调、校验或补数 |
2. 对接前准备
2.1 鉴权
平台使用 OAuth 2.0 获取 access_token。详见 docs/oauth.md。
Token 接口:
POST /api/v3/oauth/tokens
业务接口请求头:
Authorization: Bearer {access_token}
X-School-Id: {school_id}
要求:
Authorization用于传递访问令牌。X-School-Id按平台通用约定传递学校上下文。
2.2 权限范围
读取报表数据时,通常需要以下 Scope:
reporting.read_all:读取报表中的参数、查询定义和查询结果dataset.read_all:直接读取数据集记录
注意:
Reporting相关 3 个接口都要求reporting.read_all。Dataset记录查询接口要求dataset.read_all。
2.3 分页与查询参数约定
分页
报表查询结果接口和数据集记录接口都支持以下分页参数:
| 参数 | 类型 | 说明 |
|---|---|---|
paginated |
integer |
是否分页,默认 1 |
page |
integer |
页码,默认 1 |
per_page |
integer |
每页数量,默认 20 |
分页响应头约定详见 docs/conventions.md。
报表参数
执行报表查询时,查询参数通过 params 传递,参数值为 JSON 字符串。例如:
params={"semester_id":"202401","grade_ids":["7","8"]}
请求时应对该字符串进行 URL Encode。
数据集动态筛选
查询数据集记录时,动态筛选参数遵循 {field}_{operator} 语法。例如:
id_in=1,2name_like=张三status_in=enabled,disabledcreated_at_egt=2026-03-01 00:00:00
3. 数据关系图
report
├── parameter
└── query
├── fields
└── rows
dataset
└── dataset_record
report query
└── 通常依赖一个或多个 dataset
关键关系:
- 一个
report下可以定义多个筛选参数parameter - 一个
report下可以定义多个查询query - 执行单个
query后,返回字段定义fields和数据行rows rows中的键通常与fields.name对应- 报表查询通常基于一个或多个
dataset计算得出 - 当报表结果不能满足联调或明细分析需求时,可直接查询
dataset记录
4. 总体调用顺序
推荐调用顺序如下:
- 通过 OAuth 获取 Token
- 确认应用已开通
reporting.read_all;如需直接查询数据集,再确认dataset.read_all - 调用报表参数接口,识别必填参数、默认值和可选项
- 调用报表查询列表接口,确认报表下可执行的查询
- 按目标查询和参数组合执行报表查询
- 根据
fields解析rows,并转换为下游所需结构 - 如需校验口径、排查问题或补充明细,再直接查询相关数据集记录
5. 第一步:获取报表参数
接口:
GET /v3/reporting/reports/{id_or_name}/parameters
OpenAPI: 获取报表中定义的参数
说明:
{id_or_name}支持传入报表 ID 或报表名称- 通过报表中心后台页面 url 获取,例如:
https://chalk-c3.seiue.com/admin/report-center/reports/8879/7621/detail中的7621就是报表 ID - 该接口用于获取报表中定义的筛选项及其传参要求
请求参数:
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id_or_name |
path | string |
是 | 报表 ID 或报表名称 |
返回字段:
| 字段 | 类型 | 可为空 | 描述 |
|---|---|---|---|
type |
string |
否 | 参数类型,可选值:input、select、multi-select、date-range |
name |
string |
否 | 参数名,执行查询时作为 params 中的键名 |
label |
string |
否 | 参数显示名称 |
required |
boolean |
是 | 是否必填 |
options |
array<object> |
是 | 下拉选项,元素包含 key、label |
default_value |
string 或 array<string> 或 null |
是 | 默认值 |
6. 第二步:获取报表下的查询列表
接口:
GET /v3/reporting/reports/{id_or_name}/queries
OpenAPI: 获取报表下的所有查询
说明:
- 一个报表下可能包含多个查询,例如汇总查询、明细查询、透视查询
- 执行查询前,应先获取目标
query_id
请求参数:
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id_or_name |
path | string |
是 | 报表 ID 或报表名称 |
返回字段:
| 字段 | 类型 | 可为空 | 描述 |
|---|---|---|---|
id |
integer |
否 | 查询 ID |
school_id |
integer |
否 | 学校 ID |
report_id |
integer |
否 | 所属报表 ID |
label |
string |
否 | 查询名称 |
7. 第三步:执行报表查询并获取结果
接口:
GET /v3/reporting/reports/{id_or_name}/queries/{query_id}/records
OpenAPI: 执行报表中的单个查询
说明:
- 该接口执行报表中的单个查询并返回结果
params使用 JSON 字符串传递, key 对应参数定义中的name, value 则是实际传入的参数值,如果是 options 类型的参数,则 value 应该是 Option 的key而非label- 支持分页
请求参数:
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id_or_name |
path | string |
是 | 报表 ID 或报表名称 |
query_id |
path | integer |
是 | 查询 ID |
params |
query | string |
否 | 查询参数,使用 JSON 字符串传递 |
paginated |
query | integer |
否 | 是否分页,默认 1 |
page |
query | integer |
否 | 页码,默认 1 |
per_page |
query | integer |
否 | 每页数量,默认 20 |
返回结构:
| 字段 | 类型 | 描述 |
|---|---|---|
fields |
array<object> |
查询结果字段定义 |
rows |
array<object> |
查询结果数据行 |
fields 中常用字段:
| 字段 | 类型 | 描述 |
|---|---|---|
kind |
string |
字段类型,可选值:int、float、decimal、string、text、date、timestamp、enum、attachment |
position |
integer |
字段顺序 |
name |
string |
字段名,通常对应 rows 中的键名 |
label |
string |
字段显示名称 |
label_in_path |
array<string> |
路径形式的显示名称,常见于透视表 |
is_dynamic |
boolean |
是否动态字段 |
返回示意:
{
"fields": [
{
"kind": "string",
"position": 0,
"name": "student_name",
"label": "学生姓名",
"is_dynamic": false
},
{
"kind": "decimal",
"position": 1,
"name": "total_score",
"label": "总分",
"is_dynamic": false
}
],
"rows": [
{
"student_name": "张三",
"total_score": "632.5"
}
]
}
8. 第四步:直接查询数据集记录
接口:
GET /v3/uds/datasets/{name}/records
OpenAPI: 查询数据集记录
说明:
- 该接口直接读取数据集记录,不经过报表展示层
- 适用于明细补数、联调验证及报表口径排查
- 支持分页、排序、字段裁剪与关联展开
请求参数:
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
name |
path | string |
是 | 数据集名称 |
created_at_egt |
query | string |
否 | 创建时间起始值,格式 YYYY-MM-DD HH:MM:SS |
created_at_elt |
query | string |
否 | 创建时间结束值,格式 YYYY-MM-DD HH:MM:SS |
updated_at_egt |
query | string |
否 | 更新时间起始值,格式 YYYY-MM-DD HH:MM:SS |
updated_at_elt |
query | string |
否 | 更新时间结束值,格式 YYYY-MM-DD HH:MM:SS |
sort |
query | string |
否 | 排序字段,前缀 - 表示倒序 |
fields |
query | string |
否 | 返回字段,多个字段用逗号分隔 |
expand |
query | string |
否 | 需要展开的关联字段,多个字段用逗号分隔 |
paginated |
query | integer |
否 | 是否分页,默认 1 |
page |
query | integer |
否 | 页码,默认 1 |
per_page |
query | integer |
否 | 每页数量,默认 20 |
补充说明:
- 支持任意
{field}_{operator}形式的动态筛选参数 expand取值由目标数据集已开放的关联字段决定