1. 概述
1.1 版本
| FineBI 版本 | 功能变动 |
|---|---|
| V7.5 | - |
1.2 功能简介
本文讲解 FineBI「数据目录」中已发布模型指标集的搜索、语义信息查看、数据查询与校验相关的 API 接口。
从 FineBI 7.5 开始,「数据目录」中仅支持发布 模型指标集,模型指标集是基于语义模型创建、并按分析主题组织的数据集、计算字段和指标集合。因此,指标中心数据服务接口的寻址方式也相应调整:查询维度、度量、指标的语义信息或数据结果时,均需先通过「模型指标集 ID」定位到所属的模型指标集,再定位到具体资源。
配合 FineDataLink 支持将接口中的指标维度数据取出,并写入指定的数据库,方便用户在其他系统使用 FineBI 的数据。
1.3 前置条件
将模型指标集发布到「数据目录」,为在数据目录中调用接口查询指标中心数据做准备。
2. 认证方式
调用接口前,需要先完成认证。FineBI 提供两种认证方式:
| 认证方式 | 说明 | 适用场景 |
|---|---|---|
| JWT 认证 | 使用平台 JWT 认证产生的用户 Token,有效期跟随登录有效期 | 临时测试、演示环境 |
| 摘要签名认证 | 使用用户名 + Secret Key 通过 HMAC-SHA256 生成签名 | 生产环境(推荐) |
2.1 JWT 认证
使用平台 JWT 认证产生的用户 Token,有效期跟随登录有效期。
在请求 Headers 中添加 Token 即可:Authorization: Bearer {用户Token}
2.2 摘要签名认证
摘要签名认证需要先获取 Secret Key,再按固定规则制作签名,最后把签名写入请求 Headers。
1)由超管进入平台「管理系统 > 系统管理 > 指标服务」,点击「生成 Key」,获取 Secret Key。如下图所示:

2)制作签名
待签名字符串 = 用户名 + 随机数 + 时间戳,三项按顺序直接拼接。
签名 = Base64(HmacSHA256(待签名字符串, SecretKey))。
| 参数 | 说明 |
|---|---|
username | BI 平台的登录用户名 |
nonce | 随机数,每次请求随机生成,用于防重放。示例:e7ec7bbc-5c8b-4076-a292-93165bd0ad0d |
| timestamp | 时间戳(毫秒),发起请求时自动生成 |
| secretKey | 之前获取的 Secret Key |
3)写入请求头
将签名结果拼接为 Authorization 请求头,随请求一起发送:
Authorization: HMAC-SHA256 signature={签名},identity={用户名},nonce={随机数},timestamp={时间戳}
示例:
Authorization: HMAC-SHA256 signature=c4Q63zUQIXoBIwQQKq6jJpEZYD2DilQf/cYUS41MNqc=,identity=lucian,nonce=e7ec7bbc-5c8b-4076-a292-93165bd0ad0d,timestamp=1765334705601
制作签名的过程可参考:
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.UUID;
public class SignatureDemo {
public static void main(String[] args) {
//修改为BI平台中的username
String identity = "qinghui";
//修改为对应的secretKey
String secretKey = "1bbe91b1-a39c-4742-9694-e126bcf9a3bd";
//Nonce,自动生成
String nonce = String.valueOf(UUID.randomUUID());
//时间戳,自动生成
String timestamp = String.valueOf(System.currentTimeMillis());
//待签名字符串
String stringToSign = identity + nonce + timestamp;
//签名
String signature = hmacSHA256(secretKey, stringToSign);
//拼出完整的Authorization
System.out.println("Authorization:\n" + "HMAC-SHA256 signature=" + signature + ",identity=" + identity + ",nonce=" + nonce + ",timestamp=" + timestamp);
}
/**
* 对字符串data进行HmacSHA256签名,以Base64的结果返回
*
* @param secretKey 签名密钥
* @param data 待签名字符串
*/
public static String hmacSHA256(String secretKey, String data) {
try {
Mac hmacSha256 = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
hmacSha256.init(secretKeySpec);
byte[] hashBytes = hmacSha256.doFinal(data.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(hashBytes);
} catch (Exception e) {
throw new RuntimeException("HmacSha error", e);
}
}
}
2.3 指标服务管控
为保障指标服务及 BI 平台的稳定性,超管可进入「管理系统>系统管理>指标服务」,对指标服务的调用频率、取数并发和请求配置进行管控。

各配置项说明如下:
| 配置项 | 默认值 | 校验规则 | 说明 |
|---|---|---|---|
| 是否开启管控 | 开启 | - | 开启后,对指标服务的调用频率、取数并发和请求配置进行管控 |
| 并发取数上限 | 20 | 正整数,最大值为 10000,不可为空 | 系统允许同时处于底层引擎取数计算中的请求数量上限 |
| 排队超时时间 | 5000 毫秒 | 正整数,最大值为 30000,不可为空 | 并发取数达到上限后,后续取数请求允许等待的最长时间 |
| 平台调用频率 | 300 | 正整数;为空时不限制 | 系统每秒允许接收的所有 BI 用户各类请求的最大次数 |
| 用户调用频率限制 | 30 | 正整数;为空时不限制 | 单个 BI 用户每秒允许发起的各类请求的最大次数 |
| 单页最大行数 | 10000 行 | 正整数;为空时不限制 | 数据查询请求中 pageSize 的最大可用值。请求设置的 pageSize 超过该值时,以此处配置的值为准 |
提示:1. 上述配置对单机生效。集群环境中,各节点的配置分别生效。
2. 修改排队超时时间后,已经入队且正在排队的请求仍使用修改前的超时时间;新入队请求使用修改后的超时时间。
3. 接口信息
以下是发布到「数据目录」中的模型指标集资源调用接口。
| 接口分类 | 资源对象 | 接口 | 用途 |
|---|---|---|---|
资源搜索 | — | 检索数据目录中的已发布资源 | |
语义信息 | 模型指标集 | 读取模型指标集的全部配置 | |
数据集 | 读取数据集的数据详情 | ||
读取数据集的数据血缘 | |||
读取数据集的字段列表 | |||
读取使用到该数据集的关系 | |||
维度 | 读取维度的数据详情 | ||
读取维度的血缘 | |||
读取维度的相关指标 | |||
读取维度字段值 | |||
度量 | 读取度量的数据详情 | ||
读取度量的血缘 | |||
读取度量的相关维度 | |||
指标 | 读取指标的数据详情 | ||
读取指标的血缘 | |||
读取指标的相关维度 | |||
数据查询 | 数据集 | 预览数据集数据 | |
维度、度量 | 明细数据查询 | ||
维度、指标 | 聚合数据查询 | ||
维度、指标 | 直连场景下取对应 SQL |
4. 错误码说明
响应失败部分场景会返回错误码信息,不同报错原因对应的错误码如下表所示:
| 报错原因 | 错误码 |
|---|---|
参数异常 | 61310024 |
指标不存在 | 61310111 |
指标无权限 | 61310112 |
指标未发布 | 61310119 |
维度不存在 | 61310113 |
维度无权限 | 61310114 |
维度未发布 | 61310120 |
