历史版本9 :自定义合计行计算规则 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 概述编辑
1.1 版本
| FineBI版本 | 功能变动 |
|---|---|
| 7.0 | - |
2. 场景编辑
2.1 支持不同层级差异化合计逻辑
2.1.1 应用场景
以「动态层级成本分析」为例,企业如何用「一份数据模型」适应不同分析层级的成本展示需求,无需切换数据源或计算字段,即可查看从公司到个人层级的成本情况?| 用户角色 | 分析需求 | 关注指标 |
|---|---|---|
| CFO/财务总监/部门经理 | 查看公司各区域、部门的人力成本情况 | 公司成本 = 员工薪资及福利 + 办公场地租赁 + 设备折旧等 |
| 人力资源分析师 | 查看每员工的个人成本,分析个人效益比 | 个人成本 = 员工个人的薪资及福利 |
2.1.2 实现思路
配合 FIELD_IN() 函数动态的判断分析区是否引入了某维度。如果分析区拖入了「员工姓名」维度,则函数计算中使用「个人成本」,不然则使用「公司成本」。
成本额=IF(FIELD_IN(ADD_DIM(), [员工姓名]), 个人成本, 公司成本)
详情请参见文档:动态层级维度成本分析
2.2 支持明细数据与合计行计算逻辑分离
2.2.1 应用场景
分组表的明细数据需要展示各门店的销售额,但是合计行计算时需要剔除已经闭店的门店。

2.2.2 实现思路
第一步,定义辅助列「非闭店销售额」
第二步,配合 FIELD_IN()函数动态的判断分析区是否引入了某维度。如果分析区拖入了「门店名称」维度,则求和时使用「销售额」,否则求和时使用「非闭店销售额」。
2.2.3 操作步骤
示例数据:
使用分组表分析,在分析区拖入「门店名称」「门店状态」和「销售额」,如下图所示:

第一步,定义辅助字段:
非闭店销售额=def_add(sum_agg(销售额),[],[门店状态!="闭店"])

第二步,配合 FIELD_IN() 函数动态的判断分析区是否引入了某维度。如果分析区拖入了「门店名称」维度,则求和时使用「销售额」,否则求和时使用「非闭店销售额」。
自定义合计行销售额=IF(FIELD_IN(ADD_DIM(),[门店名称]),SUM_AGG(销售额),SUM_AGG(非闭店销售额))

步骤 | 公式 | 说明 |
|---|---|---|
| 获取分析区域全部字段 | ADD_DIM() | 函数获取外部视图所有字段。 字段使用在分组表中,因此外部视图为分组表,获取分析区域的所有字段
|
| 判断分析区字段是否包含「门店名称」 | FIELD_IN(ADD_DIM(), [门店名称]) | 包含「门店名称」,返回 true,否则为 false |
| 如果包含则求和时使用「销售额」,否则求和时使用「非闭店销售额」 | IF(FIELD_IN(ADD_DIM(),[门店名称]),SUM_AGG(销售额),SUM_AGG(非闭店销售额)) | 用 IF 函数对 FIELD_IN 返回结果赋值 |
2.2.4 效果预览
将「自定义合计行销售额」拖入分析区,分组表的明细数据会展示各门店的销售额,合计行只会计算非闭店的门店销售额情况。如下图所示:



