历史版本10 :DEF(指定维度) 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

DEF 函数使用 [指定维度],计算聚合指标值。

不会引用「分析区域」中已拖入的维度,所以分析区域中增删维度不影响函数的计算结果

语法def(聚合指标, [维度1,维度2,...], [过滤条件1, 过滤条件2,...]按函数中指定的「维度」,对指标进行计算
参数1聚合指标

1)聚合只允许有一个,且不可为空;

2)指标支持嵌套,即可以是任意函数输出的指标。

注:当指标为明细计算指标时,报错提示「分析函数中不支持明细计算指标」

参数2维度

1)需要执行计算的维度

2)维度参数可为空,维度参数为空时,计算指标整表聚合

3)当只有一个维度参数时,可以不加 [ ]

参数3过滤条件

1)过滤条件可为空;当过滤条件为空时,执行指标的聚合运算没有过滤参与计算

2)过滤条件支持明细级别过滤,支持嵌套指标的过滤(def函数输出的指标),不支持聚合函数作为过滤条件

3)支持设置多个过滤条件,相同层级间的过滤以「且」执行

4)当只有一个过滤条件时,可以不加 [ ]

2. 示例编辑

先用几个小示例,了解下函数的写法和作用

场景
公式描述
想知道每个客户在平台下了多少单
def(countd_agg(订单编号),[身份证号])
  • 指定维度:身份证号

  • 聚合指标:countd_agg(订单编号)

数一数每个身份证号对应多少个不通的订单编号

想知道平台总的销售额

def(sum_agg(销售额))

  • 指定维度:无

  • 聚合指标:sum_agg(销售额)

由于没有指定维度,所以该公式求总销售额

想知道每个省份的销售额def(sum_agg(销售额),[省份])
  • 指定维度:省份

  • 聚合指标:sum_agg(销售额)

计算每个省份的销售总额

想知道每个省份下不同产品的销售额def(sum_agg(销售额),[省份,产品])
  • 指定维度:省份 和 产品

  • 聚合指标:sum_agg(销售额)

计算每个省份下每个产品的销售额

想知道2013年份的每个省份的销售额def(sum_agg(销售额),[省份],[年份=2013])
  • 指定维度:省份

  • 聚合指标:sum_agg(销售额)

  • 过滤条件:年份=2013

计算 2013 年,每个省份的销售总额

是不是已经有些熟悉 DEF 函数的写法,下面我们来实操一下:

2.1 计算每个用户的最早购买日期

1)创建分析主题,添加示例数据「超市销售数据」。

示例数据下载:超市销售数据.xlsx

用户也可以在点击在线链接 DEF函数示例 后再点击「另存为主题」,查看并练习。

2)添加计算字段,求最早购买日期。

理想情况下,我们使用 DEF(MIN_AGG(订单日期),客户名称) 就可以求得客户最早购买日期。但由于当前聚合函数不支持直接处理日期字段,即当前 MIN_AGG(订单日期) 不能支持直接计算,我们将日期转化为数字格式的时间戳。

44.png

公式分解
描述帮助文档
DATETONUMBER(订单日期)将日期转化为数值格式的时间戳形式,方便 MIN_AGG 处理DATETONUMBER-日期转化为13位时间戳
DEF(MIN_AGG(DATETONUMBER(订单日期)),客户名称)
  • 指定维度:客户名称

  • 聚合指标:MIN_AGG(DATETONUMBER(订单日期))

求每个客户最早的订单时间,但获得的时间不是正常的时间格式,是时间戳格式

本文
TODATE(DEF(MIN_AGG(DATETONUMBER(订单日期)),客户名称))将时间戳格式转化为正常的时间格式TODATE-转化为日期

3)拖入字段至分析区域查看效果,如下图所示:

如此便可知道每个用户的最早购买日期是哪天。

15.png

2.2 更多业务场景

DEF 函数如何在业务中使用呢,它能帮助我们实现什么场景,以及 5.0 版本中不能实现跨行计算怎么用 DEF 函数实现:

用户购买频次分析
同期群分析
跨行计算-计算增长率
目标达成情况分解