观远数据开放平台
8.4.0
  • 8.4.0
  • 8.3.0
  • 8.2.0
  • 8.1.0
  • 7.4.0
  • 7.3.0
首页官网社区英文版
文档
  • 帮助中心
  • 观远学堂
首页官网社区英文版
文档
  • 帮助中心
  • 观远学堂
8.4.0
  • 8.4.0
  • 8.3.0
  • 8.2.0
  • 8.1.0
  • 7.4.0
  • 7.3.0
  1. 卡片
  • 用户
    • 批量创建用户
      POST
    • 批量删除用户
      POST
    • 批量修改用户属性
      POST
    • 批量获取用户是否存在
      POST
    • 通过属性值获取用户列表
      POST
    • 获取用户列表
      POST
    • 通过loginId获取用户信息
      POST
    • 修改用户状态
      POST
  • 开发指南
    • Token 鉴权
    • 常见概念
  • 数据集
    • 清空数据集数据
      GET
    • 数据集删除_V2
      POST
    • 使用parquet文件更新数据集
      GET
    • 获取数据集列表
      POST
    • 修改数据集路径
      POST
    • 数据集删除
      POST
    • 搜索数据集列表
      POST
    • 查询特定数据集的数据结构
      POST
    • 批量修改数据集更新方式
      POST
    • 获取指定数据集有使用权限的用户列表
      POST
    • 上传数据集
      POST
    • 获取数据集下载授权Token
      GET
    • 下载数据集数据
      POST
    • 获取数据集数据
      POST
    • 创建数据集
      POST
    • 更新数据集字段注释
      POST
    • 触发数据集读取数据文件并更新
      GET
    • 通过 TaskID 查询数据集更新结果
      GET
    • 修改数据集schema
      POST
    • 更新数据集
      POST
    • 修改数据集字段别名
      POST
    • 修改数据集名称
      POST
    • 提供修改SQL模型结构接口
      POST
    • 获取数据集目录列表的接口,支持指定目录搜索
      POST
    • 批量查询数据集基本信息
      POST
    • 批量查询数据集权限信息
      POST
  • 仪表板
    • 获取页面列表
    • 根据页面名称关键词搜索页面
    • 获取指定页面有读权限的用户列表
    • 以树状结构获取页面列表
    • 以PDF或者图片模式导出仪表板
    • 获取仪表板导出文件
    • 获取页面基本信息
    • 获取页面信息
    • 获取仪表板智能洞察
    • 删除仪表板
  • 卡片
    • 获取卡片数据
      POST
    • 基于数据集创建卡片接口,提供生成随机ID的接口
      POST
    • 获取卡片智能洞察
      POST
    • 获取卡片数据_V2
      POST
  • 订阅预警
    • 查询订阅列表
    • 查询预警列表
    • 通知发送历史查询记录
    • 下载自定义渠道推送文件
    • 启用/关闭订阅
    • 启用/关闭预警
  • 权限
    • 获取指定用户能访问的页面列表
    • 获取指定用户能访问的数据集列表
    • 修改指定用户与各个页面的访问及归属关系
    • 修改指定用户与各个数据集的访问及归属关系
    • 获取指定用户组能访问的页面列表
    • 获取指定用户组能访问的数据集列表
    • 修改指定用户组与各个页面的访问及归属关系
    • 修改指定用户组与各个数据集的访问及归属关系
    • 通用资源权限授权与解除
    • 对指定用户或用户组进行资源授权
    • 取消指定用户或用户组的资源授权
  • 资源操作
    • 将指定用户下辖有所有者权限的资源迁移至其他用户组或用户
    • 将指定用户组下有所有者权限的资源迁移至其他用户组或用户
    • 通用资源列表清单
  • 卡片导出
    • 卡片导出接口使用说明
    • public api 卡片导出
    • public api 任务状态轮询
    • public-api 卡片导出文件下载
  • session
    • session创建or更新
    • 查询数据集的session配置
  • 文件夹
    • 创建文件夹目录
    • 修改文件夹目录
    • 删除文件夹接口
    • 文件夹新增授权接口
    • 文件夹删除权限接口
    • 批量查询文件夹权限信息
  • 数据账户
    • 创建数据账户
  • 身份认证
    • 用户登录
    • 通过用户的loginId登录
    • 用户登出
  • 用户管理
    • 用户管理概述
    • 用户组
      • 批量创建用户组
      • 批量修改用户组
      • 删除指定用户组
      • 获取用户组列表
      • 添加单个用户组
      • 删除用户组V2接口
    • 用户组成员
      • 将用户添加至用户组
      • 将用户从用户组删除
      • 获取指定用户组下直接挂载的用户列表
      • 获取指定用户直接所属的用户组列表
    • 角色
      • 查询某一用户的角色信息
      • 为某一用户增添自定义角色
      • 为某一用户解绑自定义角色
    • 用户关联账号
      • 关联账号配置介绍
      • 配置用户外部关联账号
      • 删除用户的关联账号
      • 查询用户的外部关联账号
  • 系统相关
    • 获取监控信息
  • 指标中心
    • 获取指标主题
    • 获取指标主题下的文件夹列表
    • 获取指定主题和文件夹下的指标列表
    • 获取指标详情
    • 获取指标数据
  • 血缘
    • 查询资源血缘
    • 查询字段血缘
  • 洞察agent
    • 创建洞察Agent任务
    • 查询对话详情
  1. 卡片

获取卡片数据_V2

POST
/public-api/v2/card/{cardId}/data
通过指定图表卡片 ID 获取卡片数据。V2 与原获取卡片数据接口共用取数处理逻辑,业务参数含义及成功响应结构一致;V2 使用下述鉴权方式,并通过 X-Public-User-Id 指定操作用户。

鉴权与操作用户#

选择一种鉴权方式;两种方式均须传入 X-Public-User-Id:
方式凭证要求
OAuth2 应用授权Authorization: Bearer <access_token>应用获得 legacy-public-api:full-access scope,凭证和应用有效,并满足许可、IP 白名单等授权要求。
集成 TokenX-Public-Token: <集成Token>使用统一账户集成 Token,并满足该 Token 的校验要求。
X-Public-User-Id 传 Token 所属租户内的用户 loginId(登录账号),不是内部 uId;用户必须存在且启用,并具有卡片读取功能权限及目标卡片的读取权限。应用授权不会替代用户的资源权限校验。

OAuth2 获取 Token#

使用已创建应用凭证的 client_id 和 client_secret,通过 HTTP Basic 认证申请 Token,授权类型为 client_credentials。TOKEN_ENDPOINT 使用应用凭证返回的 tokenEndpoint;默认对外地址为 https://<BI域名>/backend/oauth2/token,以目标环境配置为准。
读取响应中的 access_token,有效期以 expires_in 为准。这里需要 OAuth2 应用访问令牌,不是登录会话 Token 或个人访问 Token(PAT)。

OAuth2 查询示例#

BI_BASE_URL 为 BI 服务对外 API 地址前缀;例如网关统一使用 /backend 时填写 https://<BI域名>/backend。

集成 Token 查询示例#

查询与分页#

offset 从 0 开始。常见表格解析器未传时按 0 处理。
limit 是本次期望返回的条数,实际结果还受图表类型、卡片设置和租户查询限制影响,没有全接口统一的固定默认值。
chartMain.hasMoreData 表示本次分页之后是否仍有数据;chartMain.limitInfo.hasMoreData 表示查询结果是否超过查询行数上限,两者含义不同。
chartMain.count 是当前图表解析/查询范围下的行数,可能经过限制,不保证是底层数据集总行数。

筛选条件字段说明#

字段说明
filters本次查询额外应用的字段过滤条件列表。每项通常使用 name、filterType、filterValue 描述字段、过滤方式和过滤值。服务端按 name 匹配卡片数据集字段的原名或别名,并填入对应字段 ID;多个条件共同参与查询。
filters[].name筛选字段名称。服务端用该值匹配目标卡片数据集字段的原名或别名;名称应与卡片中实际字段保持一致。若有多个同名/同别名字段,代码取首个匹配字段。
filters[].filterType过滤类型。常用值:GT 大于、GE 大于等于、LT 小于、LE 小于等于、BT 闭区间、EQ 等于、NE 不等于、IN 属于列表、NI 不属于列表;STARTSWITH/ENDSWITH/CONTAINS 分别表示以指定文本开头/结尾/包含,NOT_ 前缀表示取反;IS_NULL 为空,NOT_NULL 不为空。
filters[].filterValue过滤值列表,元素使用字符串;数值和日期也按字符串传入。例如 GT 配 ["10"],BT 配 ["10","20"] 表示大于等于 10 且小于等于 20,IN 配 ["华东","华南"] 表示匹配任一候选值。具体值格式须与字段类型及过滤类型一致。后端模型还允许数组元素为 null,用于支持空值的过滤类型。
数值示例:{"name":"销售额","filterType":"BT","filterValue":["10","20"]}。字段名与值须替换为目标卡片的实际字段和业务值。

动态参数字段说明#

字段是否必填说明
dpId是动态参数 ID。使用目标卡片或数据集中已定义参数的真实 ID。
name是动态参数名称,与参数定义保持一致。
valueType是动态参数值类型。常用 NUMBER(数值)、DATE(日期)、STRING(字符串);后端模型将此字段作为字符串读取,未在此处限定枚举。
defaultValue否本次查询使用的参数值。必须按字符串传入,例如数值参数传 "25";此接口通过该字段读取传入值。
fdId否动态参数应用的字段 ID,可选。
customize否是否为自定义动态参数,可选。
multiple否是否为多值动态参数,可选。defaultValue 仍是字符串,应与已有参数配置约定保持一致。
optionValue否动态参数的可选值列表,可选。
inheritParent否是否继承父作用域参数,可选。
paramType否作用域参数类型:WORKFLOW 为工作流参数,DATADRIVEN 为数据驱动参数;可选。
参数值通过 defaultValue 传入,数值也使用字符串;不要另起 value 字段。省略 dynamicParams 时沿用卡片已有动态参数配置。

zoneFilter(自助取数查询配置)#

zoneFilter 是自助取数专用查询参数,放在请求体顶层,为可选对象,也可传 null。它只作用于本次取数,不保存卡片配置。

参数结构#

字段类型说明
zoneDataobject本次查询的行、列、指标、表头筛选和排序布局。
zoneData.row / column / metricarray<object>字段条目包含key、name、metaType;实际按卡片字段key匹配。
zoneData.filtersarray<object>表头筛选:key、filterType、filterValue;还支持name、metaType、advFilter、advFilterContent、filterLevel、aggrType。
zoneData.sortingarray<object>排序:key、ordering(asc/desc);还支持name、metaType、customSort、isPinYinOrder。
detailModebooleantrue按明细模式查询;省略或false走普通透视模式。
hasGrandTotalOnRow / hasGrandTotalOnColumnboolean普通透视模式的行/列区域总计开关。
grandTotalobjectonRow.position为TOP/BOTTOM;onColumn.position为LEFT/RIGHT,均使用字符串。
cellMergeobjectnoMergeColumn、noMergeRow分别控制是否取消列/行单元格合并。
excludeConditionConfigobjectallResultsAreZero、resultsSumAreZero、allResultsAreNull和filterLevel(DETAIL/AGGREGATION/RESULT)。
详细子字段、类型和枚举见下方 Body 参数中的 zoneFilter 参数树。除字段条目实际需要key外,其他子字段按需传入;可选字段也接受null,数组中的字段条目应为对象。

使用时的关键区别#

1.
字段按key定位:key来自目标卡片的区域字段配置,不是数据集fdId,也不是字段名称;通常仅传key即可取原字段定义。筛选key须存在于调整后的行、列或指标中;排序key可从行、列、指标或已有排序字段中匹配。
2.
传zoneData会重建展示区域:整个zoneData省略时保留原行/列/指标;一旦传入对象,缺少的row、column、metric会成为空区域。需要保留哪些字段,就显式提供完整列表;空数组表示清空。不要只传zoneData.filters而遗漏需要保留的区域。
3.
排序的省略和空数组不同:zoneData.sorting省略时沿用原排序,传[]清空排序。customSort结构为 { "turnedOn": true, "sortOrder": ["华东", "华南"], "sortUnspecifiedValues": true },turnedOn=true且sortOrder非空时才启用。
4.
普通filters仍可使用:顶层filters按字段名或别名匹配;zoneData.filters是按key匹配的表头筛选,两者的结构和用途不同。filterValue为字符串列表,数值/日期也按字符串填写,必要时元素可为null。
5.
排除条件需显式保留:普通透视模式下传入zoneFilter但省略excludeConditionConfig时,本次查询不沿用卡片原有排除配置;需要保留时把原配置显式传回。

示例一:保留原字段,按明细模式取数#

{
  "view": "GRAPH",
  "zoneFilter": {
    "detailMode": true
  }
}

示例二:选择区域字段,筛选并排序#

下列key是占位符,请替换为卡片的真实key。row/column/metric列表也应按卡片实际需要完整填写;示例中的空column表示清空列区域。
{
  "view": "GRAPH",
  "offset": 0,
  "limit": 100,
  "zoneFilter": {
    "detailMode": false,
    "zoneData": {
      "row": [
        {
          "key": "<ROW_FIELD_KEY>"
        }
      ],
      "column": [],
      "metric": [
        {
          "key": "<METRIC_FIELD_KEY>"
        }
      ],
      "filters": [
        {
          "key": "<ROW_FIELD_KEY>",
          "filterType": "IN",
          "filterValue": [
            "华东",
            "华南"
          ]
        }
      ],
      "sorting": [
        {
          "key": "<METRIC_FIELD_KEY>",
          "ordering": "desc"
        }
      ]
    }
  }
}

示例三:总计与合并设置#

{
  "view": "GRAPH",
  "zoneFilter": {
    "detailMode": false,
    "hasGrandTotalOnRow": true,
    "hasGrandTotalOnColumn": true,
    "grandTotal": {
      "onRow": {
        "position": "BOTTOM"
      },
      "onColumn": {
        "position": "RIGHT"
      }
    },
    "cellMerge": {
      "noMergeColumn": true,
      "noMergeRow": true
    }
  }
}

返回数据的读取方式#

表格/透视形态中,chartMain.data 为单元格矩阵,结合 row 与 column 的元信息和表头读取;单元格的 v 是原始值,显示格式由对应格式配置解释。
row、column 的表头、格式索引和字段标识用于解释结果布局;这些并非数据集字段清单的另一份副本。
chartMain.meta.axes 为卡片显示配置透传;没有在该后端接口中定义的单位、枚举和前端渲染细节不作额外约束。

常见错误#

情况响应判断
用户不存在或停用、卡片不存在、无读取权限通常 HTTP 200,result=fail,读取对象 error 中的业务错误码及消息。
集成 Token 缺失或无效通常 HTTP 403,返回 result/response/error 包络。
OAuth2 Token 无效、过期或未通过认证HTTP 401,error 为字符串;具体原因见 message。
OAuth2 scope 不足或应用授权校验失败HTTP 403,error 为字符串,例如 insufficient_scope;具体原因见 message。
OAuth2 应用调用超过限制HTTP 429,读取顶层 error、message、status。
OAuth2 鉴权错误与业务错误的结构不同,不能只检查 result 判断所有失败响应。

请求参数

Path 参数

Header 参数

Body 参数application/json

示例
省略zoneData,沿用原区域字段后转为明细表取数。
{
    "view": "GRAPH",
    "zoneFilter": {
        "detailMode": true
    }
}

请求示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
cURL
curl --location --request POST '/public-api/v2/card/<CARD_ID>/data' \
--header 'X-Public-User-Id: operator@example.com' \
--header 'Content-Type: application/json' \
--data-raw '{
    "view": "GRAPH",
    "zoneFilter": {
        "detailMode": true
    }
}'

返回响应

🟢200业务处理结果
application/json
成功或业务失败;HTTP 200 时必须继续检查 result。
Headers

Body

示例
{
    "result": "ok",
    "response": {
        "chartMain": {
            "offset": 0,
            "data": [
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 739
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ],
                [
                    {
                        "v": 700
                    }
                ]
            ],
            "column": {
                "meta": [
                    {
                        "title": "度量",
                        "metaType": "METRIC",
                        "headerFormat": null,
                        "isMPH": true
                    }
                ],
                "values": [
                    [
                        {
                            "title": "单价",
                            "type": "metric",
                            "originTitle": "单价",
                            "alias": null,
                            "fmt_idx": 0,
                            "fdType": "LONG",
                            "fdId": "l99eda651f429419a900b156",
                            "headerFormat": null,
                            "key": "zCxQmiQVKI",
                            "miniChart": null,
                            "annotation": "",
                            "sortField": "c1",
                            "emptyCol": false
                        }
                    ]
                ],
                "fieldFormat": {
                    "dimThreshold": [],
                    "linkFormat": []
                },
                "metricFieldFormat": {
                    "numberFormat": [
                        null
                    ],
                    "conditionFormat": [
                        null
                    ],
                    "linkFormat": [
                        null
                    ]
                },
                "columnFieldFormat": {
                    "numberFormat": [
                        null
                    ]
                }
            },
            "count": 12,
            "meta": {
                "dynamicParameters": [],
                "axes": {
                    "categoryAxis": {
                        "showTitle": false,
                        "title": null,
                        "autoStep": true,
                        "step": "",
                        "distance": "",
                        "visible": true
                    },
                    "mainAxis": {
                        "tickInterval": null,
                        "max": "",
                        "unit": null,
                        "tickPosition": null,
                        "autoTickInterval": true,
                        "visible": true,
                        "min": "",
                        "distance": "",
                        "autoExtremes": true,
                        "showGridLine": true,
                        "title": null,
                        "showTitle": false,
                        "minorTickPosition": null
                    },
                    "navigator": {
                        "showNavigator": false,
                        "fixedValueAxis": true
                    }
                }
            },
            "hitCache": true,
            "extra": {
                "headerSortings": null
            },
            "limit": 10,
            "hasMoreData": true,
            "limitInfo": {
                "dataLimit": 20000,
                "colLimit": 100,
                "hasMoreData": false,
                "hasMoreCol": false
            },
            "row": {
                "fieldFormat": {
                    "dimThreshold": [
                        null
                    ],
                    "linkFormat": [
                        {
                            "type": "text"
                        }
                    ]
                },
                "rowFieldFormat": {
                    "numberFormat": [
                        null
                    ]
                },
                "meta": [
                    {
                        "fdId": "f070df980c55f4de2ad01b91",
                        "title": "店铺名称",
                        "originTitle": "店铺名称",
                        "alias": null,
                        "fdType": "STRING",
                        "metaType": "DIM",
                        "parentFdName": null,
                        "granularity": null,
                        "headerFormat": null,
                        "key": "UltHzhtQbN",
                        "annotation": "",
                        "sortField": "c0"
                    }
                ],
                "values": [
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "北京分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "云南分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "青海分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "江苏分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "山东分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "湖南分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "上海分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "广东分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "吉林分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ],
                    [
                        {
                            "titleType": "STRING",
                            "granularity": null,
                            "title": "浙江分店",
                            "num_fmt_idx": 0,
                            "emptyCol": false
                        }
                    ]
                ]
            },
            "config": null
        },
        "view": "GRID",
        "rawDataNotChanged": false,
        "chartType": "BASIC_COLUMN",
        "cardType": "CHART"
    }
}
🟠401OAuth2 认证失败
🟠403鉴权或授权失败
🟠429OAuth2 应用调用受限
修改于 2026-11-03 02:54:40
上一页
获取卡片智能洞察
下一页
查询订阅列表