1. 概述
1.1 版本
FineBI版本 | 功能变动 |
---|---|
7.0 | - |
1.2 函数简介
函数返回指定视图与函数声明中的关联维度集合,支持绑定动态维度机制。
语法 | ADD_DIM(维度字段1,维度字段2...) | 返回指定视图与函数声明中的全部维度 指定视图定义:
|
---|---|---|
参数 | 维度字段1,维度字段2... | 支持书写多个维度表达式,表达式之间通过“,”进行区分 参数可以为空,为空则输出指定视图的全部维度 |
1.3 注意事项
应用范围:指标中心、组件(不包括明细表)
函数范围:函数需要配合 def/window/field_in 使用;不支持在 def_add/def_sub 的维度参数中使用。
维度范围:引用函数中可以声明任何维度表达式
匹配规则:遵循「字段ID」一致的规则,即同一个字段即可匹配上。字段设置了「自定义分组」或「时间分组」也能匹配。
1.4 视图概念
视图不是物理存储的数据表,而是通过 SQL 查询、数据模型或业务规则定义的 “虚拟表”。它动态映射底层数据源(如数据库表、 Excel 文件等),仅保存查询逻辑而非数据本身。为可视化分析提供可直接调用的标准化业务语义数据表。
视图与物理表的对比:
特性 | 视图 | 物理表 |
---|---|---|
存储方式 | 仅保存查询逻辑,动态生成数据 | 实际存储数据 |
更新频率 | 实时/定时刷新 | 静态,需手动导入 BI 或 ETL |
灵活性 | 易修改,不影响底层数据 | 修改需重建表或迁移数据 |
性能 | 依赖底层查询优化 | 直接读取,通常更快 |
「1.2 函数简介」中提到的视图为计算视图,可以理解为计算中生成的虚拟结果表。我们目前有三种视图:
明细视图:可以理解为新增列计算场景,计算后结果粒度与明细表相同
DEF视图:由 def 函数构造出来的独立视图,计算后结果粒度与 def 中声明的维度一致
例如,求 1 月各地区下部门的成本额 = DEF(SUM_AGG(成本),[地区,部门],[月份="2025-01"]
FineBI 无法直接查看 DEF 计算视图,虚拟表效果如下:
分析视图:根据分析区汇总计算后的视图,计算后结果粒度与分析区的维度一致
组件中除了「明细表」其他图表都是构建的分析视图。
如何理解当前视图和外部视图?
字段计算/分析所在的视图,为当前视图。
使用字段再次参与计算/分析的视图,为外部视图。(相当于字段血缘的子节点)
例如,动态销售额=DEF(SUM_AGG(销售额),[ADD_DIM()])
ADD_DIM() 所在的当前视图为「动态销售额DEF视图」
把「动态销售额」,放入分组表中,外部视图=分析视图
把「动态销售额」,放入 DEF 中计算25年门店销售额=DEF(SUM_AGG(动态销售额),[门店],[年=2025]),外部视图=25年门店销售额DEF视图
2. 示例
2.1 动态层级成本分析
如何在企业用「一份数据模型」适应不同分析层级的成本展示需求,无需切换数据源或计算字段。查看从公司到个人层级的成本情况?
用户角色 | 分析需求 | 关注指标 |
---|---|---|
CFO/财务总监/部门经理 | 查看公司各区域、部门的人力成本情况 | 公司成本 = 员工薪资及福利 + 办公场地租赁 + 设备折旧等 |
人力资源分析师 | 查看每员工的个人成本,分析个人效益比 | 个人成本 = 员工个人的薪资及福利 |
实现思路:
配合 FIELD_IN() 函数动态判断计算视图是否引入了某维度。指标字段用在组件(分析视图)中,则依据分析区维度进行成本计算。
设置钻取目录,逐层钻取指标时,维度也在不断变化,如果维度是「员工姓名」,则计算时使用「个人成本」,否则使用「公司成本」。
成本额=IF(FIELD_IN(ADD_DIM(), [员工姓名]), 个人成本, 公司成本)
详情请参见文档:动态层级维度成本分析
注:因为合计行的合计方式是「自动」,因此不依赖「员工姓名」,按月份和钻取分组求合计,所以是展示「公司成本」。
2.2 动态为WINDOW/DEF引入分析区字段
前置条件:为保证外部视图是组件分析区,需下方输出的计算字段外面没再嵌套 DEF 函数。
2.2.1 WINDOW函数
应用场景
WINDOW 无法动态查看不同维度的累计销售额
运用 ADD_DIM 函数后,无需调整计算字段,只需更换维度,即可查看相应的累计销售额。
实现思路
累计销售额=WINDOW_SUM(SUM_AGG(销售额),[ADD_DIM()],[SUM_AGG(销售额),"asc"],["first",0])
操作步骤
IT在指标中心和数据目录里开发和管理该字段:
1)点击「指标中心」,新建模型,添加资源。具体操作步骤见文档:模型管理概述
2)添加指标「累计销售额」,如下图所示:
计算字段:累计销售额=WINDOW_SUM(SUM_AGG(销售额),[ADD_DIM()],[SUM_AGG(销售额),"asc"],["first",0])
具体操作步骤见文档:指标管理概述
3)添加维度「大类」「产品名称」「省份」「城市」,具体操作步骤见文档:维度管理概述
4)添加指标集,包含指标「总销售额」、维度「大类」「产品名称」「省份」「城市」,并「发布」到数据目录,如下图所示:
具体操作步骤见文档:指标集概述
5)点击「数据目录」,创建分析主题,如下图所示:
效果预览
IT在指标中心和数据目录里开发和管理该字段后,其他企业用户直接使用指标集做分析即可
将「省份」「城市」「总销售额」拖入分析区,完成分析。如下图所示:
维度切换:例如切换「省份」「城市」为「大类」「产品名称」,会自动展示每个产品的总销售额,如下图所示:
2.2.2 DEF函数
组件存在计算字段,动态销售额=DEF(SUM_AGG(销售额),[ADD_DIM()])
ADD_DIM() 从外部视图上找字段
动态销售额放置到分析区,外部为分析视图:动态销售额 = DEF(SUM_AGG(销售额),[分析区的维度字段]) = DEF_ADD(SUM_AGG(销售额),[])
动态销售额作为聚合指标,放到新的「公式A」中进行DEF计算,外部视图为「公式A」:动态销售额=DEF(SUM_AGG(销售额),[公式A 的DEF视图维度参数内字段])