1. 概述
1.1 应用场景
如何在企业用「一份数据模型」适应不同分析层级的成本展示需求,无需切换数据源或计算字段。实现钻取查看从公司到个人层级的成本情况?
用户角色 | 分析需求 | 关注指标 |
---|---|---|
CFO/财务总监/部门经理 | 查看公司各区域、部门的人力成本情况 | 公司成本 = 员工薪资及福利 + 办公场地租赁 + 设备折旧等 |
人力资源分析师 | 查看每员工的个人成本,分析个人效益比 | 个人成本 = 员工个人的薪资及福利 |
注:钻取到员工层级合计行为 31063 ,是因为合计行的 合计方式 是「自动」,因此不依赖「员工姓名」,按月份和钻取分组求和,展示「公司成本」。若希望显示 27800,合计方式改为「求和」即可。
1.2 实现思路
ADD_DIM()配合 FIELD_IN() 函数动态的判断分析区是否引入了某维度。
用 IF 函数赋值,如果分析区拖入了「员工姓名」维度,则函数计算中使用「个人成本」,否则使用「公司成本」。
2. 操作步骤
示例数据 :公司成本核算.xlsx
2.1 准备分析维度
构建从公司到个人层级的 钻取目录 ,并用分组表分析,在分析区拖入「月份」和钻取目录字段,并设置「月份」按「年月」分组。如下图所示:
2.2 计算动态成本额
添加计算字段,计算动态成本字段。如下图所示:
成本额=IF(FIELD_IN(ADD_DIM(), [员工姓名]), 个人成本, 公司成本)
步骤 | 公式 | 说明 |
---|---|---|
获取视图全部字段 | ADD_DIM() | 函数获取外部视图所有字段。 字段使用在分组表中,因此外部视图为分组表,计算时获取字段在分组表中的维度 |
判断分析视图是否包含员工姓名 | FIELD_IN(ADD_DIM(), [员工姓名]) | 包含「员工姓名」,返回 true,否则为 false |
如果包含则输出「个人成本」,否则输出「公司成本」 | IF(FIELD_IN(ADD_DIM(), [员工姓名]), 个人成本, 公司成本) | 用 IF 函数对 FIELD_IN 返回结果赋值 |
2.3 效果预览
将「成本额」拖入分析区,完成分析,可查看每个月公司到个人层级的成本情况。如下图所示: