1. 概述
1.1 版本
| FineBI 版本 | 功能变动 |
|---|---|
| 7.0 | - |
1.2 功能简介
FineBI 指标中心可以灵活书写「指标/维度」,添加可视化配置/公式,进行指标计算,定义出用户想要的指标/维度。
本文带大家了解一下,「指标/维度」定义的能力范围,以及使用建议和最佳实践。

2. 指标中心使用建议
2.1 指标实现逻辑与边界
指标中心的 “指标 & 维度定义能力”,底层完全依托 FineBI 函数体系构建 —— 即指标中心的所有计算场景,均能通过 BI 函数实现逻辑还原,确保计算逻辑的可追溯与一致性。
2.2 如何选择计算方式
从功能操作层面,指标 & 维度提供 可视化配置 和 公式编辑 两种定义方式。其中,优先推荐使用可视化配置,核心优势如下:
易用性与维护性更优:可视化配置即可完成指标定义,降低使用门槛;逻辑直观,便于迭代与排查,维护效率更高
性能与准确性更有保障:可视化配置已封装 “性能最优的函数写法”,后台能自动转化为字段的最优函数写法,保证计算的准确性和性能最优。

2.3 指标定义场景范围
基于函数能力,90%以上的复杂指标(不涉及表处理)均能由数据中心完成定义,具体场景可以参考下文指标/维度场景示例。
部分指标无法使用原始表的明细数据在指标中心被定义出来:
例如「剩余库存」指标,给出来的就是已经计算好的结果,而非通过入库件数、出库件数、调货、抵消等逻辑进行计算得到。
判断逻辑:客户的指标通过写 sql 实现都需要 3 层上的 sql 表进行合并得到或更复杂的需要存储过程 + 多个子查询结合得到,此类场景建议直接在 FineBI 提供明细粒度的计算结果表。例如「库存明细表」直接提供每天每个仓库每个产品品类的库存余量。
3. 指标定义场景
3.1 指标明细
| 场景 | 子场景 | 举例 | 最佳实践 |
|---|---|---|---|
| 单表明细 | 原始字段 (原子指标) | 基于合同表中的「合同金额」创建原子指标 | 方案一:基于基础表资源「批量创建」原子指标
方案二:「添加指标」选择基础表字段,汇总方式为「明细值」 |
| 字段加工 | 对合同表中的「合同金额」取整 | 使用函数公式,输出明细字段
| |
| 跨表明细 | 1→N 跨表 指标在N表 | 汇率维度表: 销售事实表 =1→ N 计算换算金额 | 使用公式: 换算金额 = 维度表_汇率 * 事实表_销售金额 在计算中,将“换算金额”视作销售事实表中的字段 |
1→N 跨表 指标在 1 表 | 会员维度表: 销售额事实表= 1→ N 计算会员活跃天数 | 使用公式: 会员活跃天数 = datesubdate( def(max_agg(事实表_下单时间), 维度表_会员号), 维度表_会员激活时间,"d") 在计算中,将「会员活跃天数」视作会员维度表中的字段 | |
| 1↔1 跨表 | 入职维度表:人员维度表= 1↔ 1 计算人员入职年龄 | 使用公式: 入职年龄 = datesubdate(入职维度表_入职时间 ,人员维度表_出生日期 ,"d") 使用fulljoin进行计算,即某人没有出生日期信息,也会得到计算结果 | |
N→N 跨表 | 目标事实表: 销售事实表 =N→ N (不推荐N:N) 计算销售目标缺口 | 使用公式: 目标缺口 = sum_agg(def(sum_agg(销售事实表_销售金额),目标事实表_门店)) - sum_agg(目标事实表_目标值) 公式合法, def将销售额的基准表拉到了目标表上 |
3.2 指标聚合
| 场景 | 子场景 | 举例 | 最佳实践 |
|---|---|---|---|
| 单表聚合 | 原子指标聚合 | 基于合同表中的「合同金额」创建原子指标 | 「添加指标」选择基础表字段,汇总方式为「求和/平均」等
|
| 跨表聚合 | 有关联 | 产品维度表: 销售事实表 =1→ N 产品维度表: 库存事实表 =1→ N 计算剩余库存 | 使用公式: 剩余库存= sum_agg(销售事实表_销售数量)-sum_agg(库存事实表_库存数量) 此时可使用「产品维度表_产品名称」分析「剩余库存」指标 |
| 无关联 | 员工维度表与销售事实表无关联 计算人效 | 使用公式: 人效= sum_agg(销售事实表_销售金额) / countd_agg(员工维度表_员工名称) 此时人效可以单独计算值,但不能被任何一个维度分析 (因为没有关联关系) |
3.3 指标过滤
| 场景 | 子场景 | 举例 | 最佳实践 |
|---|---|---|---|
| 指标过滤 | 明细过滤 | 上海地区的销售额求和 | 推荐使用字段可视化:
|
| 聚合过滤 | 计算有效门店的销售额求和 有效门店:历史销售额>1w的门店 | 推荐使用字段可视化:
|
3.4 衍生指标
| 场景 | 子场景 | 举例 | 最佳实践 |
|---|---|---|---|
| 时间衍生 | 同环比 | 计算去年月同期销售额 | 推荐使用可视化: 选择对应字段,汇总方式配置为任意聚合方式,添加过滤(可选) 通过时间衍生-同环比进行配置: 1)选择时间依据字段(后续使用该维度,才能分析时间衍生指标) 2)配置同环比计算逻辑
|
| 累计时间 | 计算年初至今/最近N天/本月的累计销售额 | 推荐使用可视化: 选择对应字段,汇总方式配置为任意聚合方式,添加过滤(可选) 通过时间衍生-累计时间进行配置: 1)选择时间依据字段(后续使用该维度,才能分析时间衍生指标) 2)配置累计时间区间逻辑
| |
| 期初期末 | 计算上月月末的销售额 | 推荐使用可视化: 时间衍生>累计时间>自定义时间范围
|
3.5 固定维度计算
| 场景 | 举例 | 最佳实践 |
|---|---|---|
| 固定维度 | 计算指定维度下的聚合指标 | 使用公式: =def(sum_agg(销售额),省份) : 计算各省份粒度的销售额 |
3.6 动态维度计算
| 场景 | 举例 | 最佳实践 |
|---|---|---|
| 维度动态 | 在公式中动态的指定参与计算的维度 | 使用公式:
|
| 过滤动态 | 在公式中指定「新增过滤」或「忽略过滤」 | 使用公式:
|
3.7 窗口计算
| 场景 | 举例 | 最佳实践 |
|---|---|---|
| 基于聚合结果再次执行窗口计算 | 计算排名、累计、最近 N 天的销售额 | 使用公式:
|
3.8 其他指标计算场景
| 场景 | 举例 | 最佳实践 |
|---|---|---|
| 半/不可累加指标 | 卡内余额为半累加指标,能够按照网点和地区进行聚合,但不能按照时间进行聚合 | 使用公式: = def_sub(sum_agg(卡内余额),[时间],[时间=def(max_agg(时间),[add_dim()]) |
4. 维度定义场景
| 场景 | 子场景 | 举例 | 最佳实践 |
|---|---|---|---|
| 单表场景 | 原始字段 | 基于商品维度表中的「商品名称」创建字段 | 方案一:维度快速批量创建
方案二:使用公式引用原始字段
|
| 字段加工 | 去除掉「门店名称」中的空格 | 使用公式:
| |
| 跨表明细 | 与指标相同,见 3.1 节 | ||
| 维度标签 | 维度赋值 | 将「商品名称」中的各编码值赋值为实际名称 | 方案一: 书写公式= swich(商品名称, “1001”, "明星商品", "1002","头部商品", 商品名称) 方案二: 使用可视化,设置条件标签
|
| 条件标签 | 根据门店销售额情况给门店打标签 | 推荐使用可视化,设置条件标签 | |
