最新历史版本 :ADD_DIM(引用维度+指定维度) 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineBI版本
功能变动
7.0-

1.2 函数简介

函数返回指定视图与函数声明中的关联维度集合,支持绑定动态维度机制。

语法
ADD_DIM(维度字段1,维度字段2...)

返回指定视图与函数声明中的全部维

指定视图定义: 

  • 使用在 DEF 维度参数中,指定为外部视图

  • 使用在其他场景下,指定为当前所在视图

参数维度字段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视图维度参数内字段])