戏说DEF

我是社区第525317位番薯,欢迎点我头像关注我哦~

DEF函数是FineBI 6.0家族诞生的一个全新函数,DEF,define的缩写,意思是 你想要的指标,我都能定义DEF家积极响应国家政策,有三个娃:哥哥DEF、妹妹DEF_ADD、弟弟DEF_SUB。先介绍下这三个牛娃:

  • DEF(聚合指标[维度1,维度2,...][过滤条件1, 2,...]

  • DEF_ADD(聚合指标,[维度1,维度2,...],[过滤条件1, 2,...]

  • DEF_SUB(聚合指标,[维度1,维度2,...],[过滤条件1, 2,...]

单看外观,是不是发现他们三个长一样?都是三个参数,参数一是聚合指标,参数二是维度,参数三是过滤条件

但其实他们各有所长:

 

  • DEF 函数使用 [指定维度],计算聚合指标值。组件中「分析区域」中拖入的维度不影响函数的计算结果,即 DEF 只关注自己指定的维度,外界的维度与我何干?!(哥哥个性

  • DEF_ADD 函数使用「分析区域的维度」+「指定维度」,计算聚合指标值。即组件中「分析区域中维度」的增减会影响函数结果。妹妹不仅有小我,还在不断的与外界互动中定义自我(绝对是混社会的一把好手)

  • DEF_SUB 函数使用「分析区域的维度」-「指定维度」,计算聚合指标。即组件中「分析区域中维度的增减会影响计算结果。但DEF_SUB 函数的维度是用来“忽略”分析区域中的维度的,怎么说呢。。就是当DEF_SUB 函数指定的有维度A的时候,若分析区域中刚好也有这个A维度,那。。。抱歉,A维度请自觉Say goodbye(狭路相逢DEF_SUB完胜,打败你,与你无关,弟弟威武)

为了更好的理解这兄妹三个,我们通过举例来做对比:

 

  • 模拟数据源样表如下:

日期
城市
订单号
会员号
 销售额 
 件数 
23/1/5
上海
A0158
C_0098
2,568
7
23/1/6
上海
A0159
C_0099
456
3
23/1/7
苏州
A0190
C_0190
50
1
23/1/8
上海
A0161
C_0109
4,573
12
23/1/9
重庆
A0162
C_0104
2,868
8
  • 目标:通过计算不同城市的去重会员数来看DEF在实际应用中的差异

插个话。。。FineBI 6.0之后版本有两个位置可以使用DEF函数:

  •  
  •  

分析主题 ->> 数据集;仪表板 ->> 组件中创建计算字段

此处举例我们使用第二种,即在仪表板中通过创建字段来使用。

走起~


 Step1 

打开FineBI6.0,在tab【我的分析】中新建分析主题,弹出【选择数据】框,将Excel数据导入(当然,当前工程上有数据的话,可以直接调用工程上的数据)

 Step 2 

数据导入完毕,咱直接调用,毕竟,今天的主角是DEF,数据处理的过程不重要~

先建组件-->添加计算字段,下图示例为 DEF(COUNTD_AGG(会员编码)),计算total会员数

其它公式如下(第三维度的添加会加大理解难度,暂且不加):

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
DEF_ADD(COUNTD_AGG(会员编码))DEF_SUB(COUNTD_AGG(会员编码))
DEF(COUNTD_AGG(会员编码),城市)DEF_ADD(COUNTD_AGG(会员编码),城市)DEF_SUB(COUNTD_AGG(会员编码),城市)
DEF(COUNTD_AGG(会员编码),[城市,month(销售日期)])DEF_ADD(COUNTD_AGG(会员编码),[城市,month(销售日期)])DEF_SUB(COUNTD_AGG(会员编码),[城市,month(销售日期)])

 Step 3 

接下来,重点来了~

我们来新建4个组件,对比下不同维度下公式的差异(总计会员数是5814人,公式在表头,每个组件的第一个公式COUNTD_AGG是标杆值)

组件a. DEF三个函数的第二参数不指定维度,组件不拖入维度,计算结果:

  • 三个公式计算均为自动聚合的总计人数5814;

组件b. DEF三个函数的第二参数不指定维度,组件拖入维度【城市】:

  • DEF_ADD & DEF_SUB 两个函数会受到组件维度【城市】的影响,计算结果为每个城市的会员数

  • DEF则不受 组件维度【城市】的影响,计算的是总计人数5814;

组件c.  DEF三个函数的第二参数指定维度【城市】,组件拖入维度【城市】:

  • DEF 函数会受到第二参数指定维度【城市】的影响,计算结果为每个城市的会员数;

  • DEF_ADD函数会受到组件维度【城市】 以及第二参数指定维度【城市】的影响,计算结果为每个城市的会员数

  • DEF_SUB则忽略组件维度【城市】的影响,计算的是总计人数5814;

c_1. DEF三个函数的第二参数指定维度【城市】,组件拖入维度【销售日期】:

  • DEF 函数会受到第二参数指定维度【城市】的影响,计算结果为每个城市的合计会员数5814,组件维度【销售日期】对计算结果没有影响

  • DEF_ADD函数会受到组件维度销售日期】 以及第二参数指定维度【城市】的影响,计算结果为每月、每个城市的会员数的合计(之所以和标杆值一致,是因为数据源内本身没有存在城市间的重叠会员)

  • DEF_SUB函数会受到组件维度【销售日期】,忽略第二参数指定维度【城市】的影响,计算的是每月的会员数,下图2会看的更直观(之所以和标杆值一致,是因为数据源内本身没有存在城市间的重叠会员)

组件d. DEF三个函数的第二参数指定维度【城市、销售日期】,组件拖入维度【城市】:

  • DEF 函数会受到第二参数指定维度【城市、销售日期】的影响,计算结果为每个城市、每月的会员数合计(注意观察和标杆值的不同)

  • DEF_ADD函数会受到组件维度【城市】 以及第二参数指定维度【城市、销售日期的影响,计算结果为每月、每个城市的会员数合计(注意观察和标杆值的不同

  • DEF_SUB则忽略组件维度【城市】的影响,计算的是每月人数的合计5814(注意,第二参数指定的【销售日期维度相当于多余的维度,对结果无影响);


(⊙o⊙)…对比完毕,小结一下,争取前后呼应:

  • 哥哥DEF :只关注自己指定的维度,外界的维度跟他没关系;

    我就是我,不一样的烟火

  • 妹妹DEF_ADD:不仅关注自己指定的维度,还和组件中的维度互动,然后重新定义自我;

    我与世界合二为一

  • 弟弟DEF_SUB:我的维度就是用来PK组件维度的,绝对完胜;

    不服来战

 

就酱紫~下次说说怎么在实际的业务场景中使用DEF,回见~

 

本文经授权,转自公众号:BI实战

 

 

发表于 2023-5-27 08:16:41
很有趣,通俗易懂,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1回帖数 1关注人数 1623浏览人数
最后回复于:2023-5-29 19:05

返回顶部 返回列表