1. 概述编辑
1.1 版本
| FineBI版本 | 功能变动 |
|---|---|
| 7.0 | - |
1.2 函数简介
函数返回指定视图与函数声明中的关联维度集合,支持绑定动态维度机制。
| 语法 | ADD_DIM(维度字段1,维度字段2...) | 返回指定视图与函数声明中的全部维度 指定视图定义:
|
|---|---|---|
| 参数 | 维度字段1,维度字段2... | 支持书写多个维度表达式,表达式之间通过“,”进行区分 参数可以为空,为空则输出指定视图的全部维度 |
1.3 注意事项
函数需要配合 def/window/field_in 使用。
1.4 视图概念
视图不是物理存储的数据表,而是通过 SQL 查询、数据模型或业务规则定义的 “虚拟表”。它动态映射底层数据源(如数据库表、 Excel 文件等),仅保存查询逻辑而非数据本身。为可视化分析提供可直接调用的标准化业务语义数据表。
视图与物理表的对比| 特性 | 视图 | 物理表 |
|---|---|---|
| 存储方式 | 仅保存查询逻辑,动态生成数据 | 实际存储数据 |
| 更新频率 | 实时/定时刷新 | 静态,需手动导入 BI 或 ETL |
| 灵活性 | 易修改,不影响底层数据 | 修改需重建表或迁移数据 |
| 性能 | 依赖底层查询优化 | 直接读取,通常更快 |
「1.2 函数简介」中提到的视图为计算视图,可以理解为计算中生成的虚拟结果表。我们目前有三种视图:
明细视图:可以理解为新增列计算场景,计算后结果粒度与明细表相同


DEF视图:由 def 函数构造出来的独立视图,计算后结果粒度与 def 中声明的维度一致
例如,求 1 月各地区下部门的成本额 = DEF(SUM_AGG(成本),[地区,部门],[月份="2025-01"]
FineBI 无法直接查看 DEF 计算视图,虚拟表效果如下:

分析视图:根据分析区汇总计算后的视图,计算后结果粒度与分析区的维度一致

组件中除了「明细表」其他图表都是构建的分析视图。
2. 示例编辑
2.1 智能层级成本分析
应用场景:
如何在企业用「一份数据模型」适应不同分析层级的成本展示需求,无需切换数据源或计算字段。实现钻取查看从公司到个人层级的成本情况?
| 用户角色 | 分析需求 | 关注指标 |
|---|---|---|
| CFO/财务总监/部门经理 | 查看公司各区域、部门的人力成本情况 | 公司成本 = 员工薪资及福利 + 办公场地租赁 + 设备折旧等 |
| 人力资源分析师 | 查看每员工的个人成本,分析个人效益比 | 个人成本 = 员工个人的薪资及福利 |

实现思路:
配合 FIELD_IN() 函数动态的判断分析区是否引入了某维度。如果分析区拖入了「员工姓名」维度,则函数计算中使用「个人成本」,不然则使用「公司成本」。
1)构建从公司到个人层级的 钻取目录 ,并用分组表分析,在分析区拖入「月份」和钻取目录字段,并设置「月份」按「年月」分组。如下图所示:

2)添加计算字段,计算动态成本字段。如下图所示:
成本额=IF(FIELD_IN(ADD_DIM(), [员工姓名]), 个人成本, 公司成本)

| 步骤 | 公式 | 说明 |
|---|---|---|
| 获取分析区域全部字段 | ADD_DIM() | 函数获取外部视图所有字段。 字段使用在分组表中,因此外部视图为分组表,获取分析区域的所有字段
|
| 判断分析区字段是否包含员工姓名 | FIELD_IN(ADD_DIM(), [员工姓名]) | 包含「员工姓名」,返回true,否则为false |
| 如果包含则输出「个人成本」,否则输出「公司成本」 | IF(FIELD_IN(ADD_DIM(), [员工姓名]), 个人成本, 公司成本) | 用 IF 函数对 FIELD_IN 返回结果赋值 |

2.2 动态的为window/def引入分析区字段
window_sum(sum_agg(销售额),[add_dim()])
def(sum_agg(销售额),[add_dim()])


