1. 概述
1.1 版本
FineBI 版本 | 功能变动 |
---|---|
6.0 | - |
6.0.13 | def_add合计行逻辑优化:合计-自动计算时,使用的是当前合计视图所使用到的拼接维度。 |
1.2 简介
DEF_ADD 函数使用「指定维度」+「分析区域中的维度」,计算聚合指标值。
与 DEF 函数相比,DEF_ADD 加入了「分析区域中的维度」,所以「分析区域中维度」的增删会影响函数结果。
语法 | DEF_ADD(聚合指标, [维度1,维度2,...], [过滤条件1, 过滤条件2,...]) | 满足过滤条件并按【分析区域中的维度+[维度1,维度2]】对指标进行计算 |
---|---|---|
参数1 | 聚合指标 | 1)指标只允许有一个,且不可为空; 2)指标支持嵌套。即可以是任意函数输出的指标。 注:当指标为明细计算指标时,报错提示「分析函数中不支持明细计算指标」 |
参数2 | 维度 | 1)函数内指定的维度 2)当只有一个维度参数时,可以不加 [ ] |
参数3 | 过滤条件 | 1)过滤条件可为空,当过滤条件为空时,执行指标的聚合运算没有过滤参与计算 2)过滤条件支持明细级别过滤,支持嵌套指标的过滤(def函数输出的指标),不支持聚合函数作为过滤条件 3)支持设置多个过滤条件,相同层级间的过滤以「且」执行 4)当只有一个过滤条件时,可以不加 [ ] 5)当指定维度为空时,格式为 DEF_ADD(聚合指标,[],[过滤条件1, 过滤条件2,...]) |
注:DEF_ADD 函数不支持输出为维度字段。
1.3 注意事项
函数不支持在明细表和自助数据集中使用。
2. 简单示例
先用几个小示例,了解 DEF_ADD 的写法和作用。
我在分析区域拖入了「省份」字段,如下图所示:
场景 | 公式 | 描述 |
---|---|---|
分析区域拖入维度字段「省份」 | ||
想了解各个省份的销售额 | DEF_ADD(SUM_AGG(销售额),[]) |
求各个省份的销售额 |
各个省份下每个客户的销售额 (第 3 节实操) | DEF_ADD(SUM_AGG(销售额),[客户名称]) |
获得不同省份下,每个客户的销售额 |
看到这里大家或许会困惑,这和 DEF 有什么区别呢,DEF_ADD 能实现的 DEF 都能实现,甚至更全面。
这里介绍一下,相对于 DEF 来说,DEF_ADD 的优势在于:它可以通过拖拽灵活调整维度,从而快速的获得不同的分析结果。
若上面这个例子,我想求「各个地区的销售额」和「各个地区下每个客户的销售额」:
● DEF_ADD 函数的话,我们仅仅需要将分析区域的维度字段从「省份」切换为「地区」
● DEF 函数则需要更改函数的书写:DEF(SUM_AGG(销售额),[地区])、DEF(SUM_AGG(销售额),[地区,客户名称])
分析是个探索的过程,我们需要不断的去切换维度更改分析角度发现问题,这时候使用 DEF_ADD 可以帮助你提高分析效率。
怎么样,现在了解什么情况下该使用 DEF_ADD 了吧。
3. 实操-求不同省份的客均销售额
我们可以很轻松的计算出销售额总和,如何我们要计算出每个省份的客均销售额,观察客均与总销售额的差异该怎么办呢?
预期效果如下图所示:
1)获取示例数据 超市销售数据.xlsx
将下载下来的示例数据上传至主题,如下图所示:
2)添加计算字段,计算每个客户的销售额。
由于我们要计算省份的客均销售额,所以分析区域中需要拖入「省份」维度。如下图所示:
场景 | 公式 | 描述 |
---|---|---|
求不同省份下的每个客户的销售额 | DEF_ADD(SUM_AGG(销售额),[客户名称]) |
对「省份」下每个客户的销售额求和 |
3)将「客户的销售额」拖入分析区域,将聚合方式更改为求「平均」。就可以求出每个省份下,客均销售额。如下图所示:
4)将「销售额」字段也拖入分析区域,可以观察客均销售额与总销售额的差异。如下图所示:
我们观察到:福建的总销售额不高,但是客均销售额比较突出。
到此,便完成了本次分析。