最新历史版本 :自定义合计行计算规则 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineBI版本功能变动
7.0-

1.2 应用场景

自定义合计行的计算逻辑,实现灵活求和。

例如「自定义合计行销售额」的明细行(即红色区域)保留了所有门店的销售数据,但是求和行(即黄色区域)只针对「非闭店」的门店销售额求和,如下图所示。


1.3 实现思路

ADD_DIM()配合 FIELD_IN() 函数动态的判断分析区是否引入了某维度,再用 IF 函数赋值。

2. 剔除闭店求合计销售额编辑

示例数据:门店销售数据_动态合计.xlsx


2.1 准备分析维度

使用分组表分析,在分析区拖入「门店名称」「门店状态」和「销售额」,如下图所示:

2.2 计算新字段

第一步,定义辅助字段:

非闭店销售额=def_add(sum_agg(销售额),[],[门店状态!="闭店"])

第二步,通过FIELD_IN()函数动态判断计算视图是否包含「门店名称」维度:

  • 包含「门店名称」维度 → 计算采用「销售额」 

  • 不包含「门店名称」维度 → 计算采用「非闭店销售额」

自定义合计行销售额=IF(FIELD_IN(ADD_DIM(),[门店名称]),SUM_AGG(销售额),SUM_AGG(非闭店销售额))


步骤

公式说明
获取计算所在行的视图的字段ADD_DIM()

因为计算是在分组表中,所以返回分组表的维度。

判断计算视图是否包含「门店名称」FIELD_IN(ADD_DIM(), [门店名称])

包含「门店名称」则返回 true,否则返回 false。

  • 该行的计算视图如黄色区域所示,包含「门店名称」,返回true

  • 合计行的计算视图如红色区域所示,不包含「门店名称」,返回false。

如果包含则采用销售额,否则采用非闭店销售额

IF(FIELD_IN(ADD_DIM(),[门店名称]),SUM_AGG(销售额),SUM_AGG(非闭店销售额))用 IF 函数对 FIELD_IN 返回结果赋值。

2.3 效果预览

将「非闭店销售额」与「自定义合计行销售额」指标拖入分析区进行对比。

「销售额」的明细行展示了所有门店(含闭店)的数据,但是合计行包含闭店门店的销售额,导致合计值偏高。

「非闭店销售额」的合计行正确汇总了营业门店的销售额,但是明细行仅展示营业门店数据,闭店门店显示为空,缺失完整明细。

「自定义合计行销售额」既保留了完整的明细数据,又在合计行中剔除了闭店门店的影响,实现了理想效果。

如下图所示:

3. 动态层级成本分析编辑

企业如何用「一份数据模型」适应不同分析层级的成本展示需求,无需切换数据源或计算字段,即可查看从公司到个人层级的成本情况?

用户角色分析需求关注指标
CFO/财务总监/部门经理

查看公司各区域、部门的人力成本情况

公司成本 
= 员工薪资及福利 + 办公场地租赁 + 设备折旧等
人力资源分析师查看每员工的个人成本,分析个人效益比个人成本
= 员工个人的薪资及福利

配合 FIELD_IN() 函数动态的判断计算视图是否引入了某维度。如果计算视图包含「员工姓名」维度,则函数计算中使用「个人成本」,否则使用「公司成本」。

成本额=IF(FIELD_IN(ADD_DIM(), [员工姓名]), 个人成本, 公司成本)

详情请参见文档:动态层级维度成本分析

注:钻取到员工层级合计行为 31063 ,是因为合计行的 合计方式 是「自动」,因此不依赖「员工姓名」,按月份和钻取分组求和,展示「公司成本」。若希望显示 27800,合计方式改为「求和」即可。