1. 概述编辑
DEF 函数使用 [指定维度],计算聚合指标值。
不会引用「分析区域」中已拖入的维度,所以分析区域中增删维度不影响函数的计算结果。
语法 | def(聚合指标, [维度1,维度2,...], [过滤条件1, 过滤条件2,...]) | 满足函数中的过滤条件并按维度分组,对指标进行计算 |
---|---|---|
参数1 | 聚合指标 | 1)聚合只允许有一个,且不可为空; 2)指标支持嵌套,即可以是任意函数输出的指标。 注:当指标为明细计算指标时,报错提示「分析函数中不支持明细计算指标」 |
参数2 | 维度 | 1)需要执行计算的维度 2)维度参数可为空,维度参数为空时,计算指标整表聚合 3)当只有一个维度参数时,可以不加 [ ] |
参数3 | 过滤条件 | 1)过滤条件可为空;当过滤条件为空时,执行指标的聚合运算没有过滤参与计算 2)过滤条件支持明细级别过滤,支持嵌套指标的过滤(def函数输出的指标),不支持聚合函数作为过滤条件 3)支持设置多个过滤条件,相同层级间的过滤以「且」执行 4)当只有一个过滤条件时,可以不加 [ ] |
2. 示例编辑
先用几个小示例,了解下函数的写法和作用
场景 | 公式 | 描述 |
---|---|---|
想知道每个客户在平台下了多少单 | def(countd_agg(订单编号),[身份证号]) |
数一数每个身份证号对应多少个不通的订单编号 |
想知道平台总的销售额 | def(sum_agg(销售额)) |
由于没有指定维度,所以该公式求总销售额 |
想知道每个省份的销售额 | def(sum_agg(销售额),[省份]) |
计算每个省份的销售总额 |
想知道每个省份下不同产品的销售额 | def(sum_agg(销售额),[省份,产品]) |
计算每个省份下每个产品的销售额 |
想知道2013年份的每个省份的销售额 | def(sum_agg(销售额),[省份],[年份=2013]) |
计算 2013 年,每个省份的销售总额 |
是不是已经有些熟悉 DEF 函数的写法,下面我们来实操一下:
用户可以在
2.1 计算每个用户的最早购买日期
1)创建分析主题,添加示例数据「超市销售数据」。
示例数据下载:超市销售数据.xlsx
2)添加计算字段,求最早购买日期。
理想情况下,我们使用 DEF(MIN_AGG(订单日期),客户名称) 就可以求得客户最早购买日期。但由于当前聚合函数不支持直接处理日期字段,即当前 MIN_AGG(订单日期) 不能支持直接计算,我们将日期转化为数字格式的时间戳。
公式分解 | 描述 | 帮助文档 |
---|---|---|
DATETONUMBER(订单日期) | 将日期转化为数值格式的时间戳形式,方便 MIN_AGG 处理 | DATETONUMBER-日期转化为13位时间戳 |
DEF(MIN_AGG(DATETONUMBER(订单日期)),客户名称) |
求每个客户最早的订单时间,但获得的时间不是正常的时间格式,是时间戳格式 | 本文 |
TODATE(DEF(MIN_AGG(DATETONUMBER(订单日期)),客户名称)) | 将时间戳格式转化为正常的时间格式 | TODATE-转化为日期 |
3)拖入字段至分析区域查看效果,如下图所示:
如此便可知道每个用户的最早购买日期是哪天。
2.2 更多业务场景
DEF 函数如何在业务中使用呢,它能帮助我们实现什么场景,以及 5.0 版本中不能实现跨行计算怎么用 DEF 函数实现:
用户购买频次分析 |
同期群分析 |
跨行计算-计算增长率 |
目标达成情况分解 |