历史版本28 :聚合函数概述 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

          FineBI 版本        JAR 包功能变动
5.1  --
5.1.72020-11-05函数释义优化&明确函数参数合法性

1.2 使用范围

组件编辑界面:添加计算字段

2. 聚合函数应用场景编辑

  • 聚合函数可以对一组数据进行汇总或者更改数据粒度,一般使用聚合函数汇总后的值进行再计算。

  • 不同的聚合函数对应不同的汇总方式,汇总方式包括「求和,平均,中位数,最大值,最小值,标准差,方差,去重计数,计数」。

  • 随着用户分析「维度」的切换,计算结果会自动跟随「维度」动态调整。

例如,想要准确知道商店在特定年度签约多少合同。可以使用 COUNTD 函数对公司具有的准确合同数进行汇总,然后按年对可视化项进行细分。

添加计算字段并输入公式:COUNTD_AGG(合同ID),如下图所示:

1608618543295130.png

将「付款时间」和「合同数」计算字段拖入横纵轴,「付款时间」设置为以年为粒度,最终效果如下图所示:

1608618681139170.png

3. FineBI 支持的聚合函数编辑

函数
语法定义示例
SUM_AGG

SUM_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

注:实时数据中不支持插入文本和日期。

根据当前分析维度,返回指标字段的汇总求和值,生成结果为一数据列,行数与当前分析维度行数一致。


若用户横轴维度字段为「日」时,纵轴的计算字段 SUM_AGG(销量) 返回的值为每日的汇总销量。

MIN_AGG

MIN_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。注:实时数据中array为非数值字段时只支持在 fixed 内使用。

根据当前分析维度,返回指标字段的最小值,生成结果为一数据列,行数与当前分析维度行数一致。用户横轴为维度字段「日」时,纵轴的计算字段MIN_AGG(销量)返回的值为每日的最小值销量。
COUNT_AGG

COUNT_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

根据当前分析维度,返回某字段的计数,生成结果为一数据列,行数与当前分析维度行数一致。

用户横轴为维度字段「日」时,纵轴的计算字段COUNT_AGG(销量)返回的值为每日的销量的个数。
COUNTD_AGG

COUNTD_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

根据当前分析维度,返回某字段的去重计数,生成结果为一数据列,行数与当前分析维度行数一致。

用户横轴为维度字段「日」时,纵轴的计算字段COUNTD_AGG(销量)返回的值为每日的销量的去重个数。
MAX_AGG

MAX_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

注:实时数据中 array 为非数值字段时只支持在fixed内使用。

根据当前分析维度,返回指标字段的最大值,生成结果为一数据列,行数与当前分析维度行数一致。

用户横轴为维度字段「日」时,纵轴的计算字段MAX_AGG(销量)返回的值为每日的最大值销量。
MEDIAN_AGG

MEDIAN_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

注:实时数据中不支持插入文本和日期。

根据当前分析维度,返回指标字段的中位数,生成结果为一数据列,行数与当前分析维度行数一致。

用户横轴为维度字段「日」时,纵轴的计算字段MEDIAN_AGG(销量)返回的值为每日的中位数销量。
VAR_AGG

VAR_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

注:实时数据中不支持插入文本和日期。

根据当前分析维度,动态返回指标字段的方差,生成结果为一动态数据列,行数与当前分析维度行数一致。

用户横轴为维度字段'日'时,纵轴的计算字段VAR_AGG(销量)返回的值为每日的销量方差。
AVG_AGG

AVG_AGG(array)

array:必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。注:实时数据中不支持插入文本和日期。

根据当前分析维度,返回指标字段的汇总平均值,生成结果为一数据列,行数与当前分析维度行数一致。

用户横轴为维度字段「日」时,纵轴的计算字段 AVG_AGG(销量) 返回的值为每日的平均销量。
STDEV_AGG

STDEV_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

注:实时数据不支持插入文本和日期。

根据当前分析维度,返回指标字段的标准差,生成结果为一数据列,行数与当前分析维度行数一致。

用户横轴为维度字段「日」时,纵轴的计算字段STDEV_AGG(销量)返回的值为每日的销量标准差。
PERCENTILE_AGG

PERCENTILE_AGG(array,百分位)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。不支持插入文本和日期

数字必须介于 0 到 1 之间(含 0 和 1 ),例如 0.66,并且必须是数值常量。

注:仅支持实时数据中使用。


根据当前分析维度,从给定表达式返回与指定数字对应的百分位处的值


用户横轴为维度字段「日」时,纵轴的计算字段PERCENTILE_AGG(销量,0.95)返回的值为每日的95%的销量。
APPROX_COUNTD_AGG

APPROX_COUNTD_AGG(array)

array 必须为非聚合函数公式返回的结果,可以是某指标字段、维度或指标字段与普通公式的计算结果。

注:仅支持实时数据中使用。

根据当前分析维度,动态返回某字段的近似去重计数,生成结果为一动态数据列,行数与当前分析维度行数一致。

用户横轴为维度字段「日」时,纵轴的计算字段APPROX_COUNTD_AGG)返回的值为每日的销量的近似去重个数。
Fixed 类函数
  • EXCLUDE(dim1,dim2,……,aggregate)

  • FIXED(dim1,dim2,……,aggregate)

  • INCLUDE(dim1,dim2,……,aggregate)

注:仅支持实时数据中使用。

  • 从分析区域的维度中排除掉指定的维度执行聚合计算。

  • 固定指定的维度执行聚合计算。

  • 基于分析区域的维度增加指定的维度执行聚合计算。

注:本函数仅支持以下数据库系统:CLICKHOUSE、ORACLE(12c r1,12.1.0.2及以上)、SQLSERVER(2019及以上)、PRESTO、REDSHIFT、VERTICA。当数据库系统为REDSHIFT时,由于REDSHIFT的限制,只能同时对同一个字段做需要排序的聚合操作(如求去重计数、中位数、百分位、近似去重计数),同时对2个或以上的字段做此种聚合操作会发生错误。当数据库系统为VERTICA时,由于VERTICA的限制,只能同时使用(精确)去重计数或近似去重计数中的一个。


4. 示例编辑

求和聚合函数「SUM_AGG」是使用频次最高的聚合函数,下文将以「SUM_AGG」函数举例,详细讲解聚合函数。

用户通过分组表已经获得 2013-2017 年每年的合同金额与购买数量,想要求得每年的平均金额,如下图所示:

23.png

4.1 使用聚合函数求平均

  • 适用类型:门店毛利率,人均收入,合同平均签单额

新增计算字段「聚合函数求平均」,操作方式如下图所示:

24.png

将「聚合求平均」拖拽到指标栏,效果如下图所示:

25.png

公式说明:

由于当前的分析维度为合同签约时间(年),则公式意义如下所示:

公式说明
SUM_AGG(合同金额)返回值是每年的合同金额汇总值
SUM_AGG(购买数量)返回值为每年的购买数量汇总值
SUM_AGG(合同金额)/SUM_AGG(购买数量)

每年的平均金额

例如:2013年平均金额=3887220/41

2013 年全年的合同金额为 3887220 ,购买数量为 41 

4.2 不使用聚合函数求平均

  • 适用类型:每个订单包含总价和销售单价的数据,需要计算总的购买数量,直接使用总价/销售单价,汇总时将每单对应的购买数量相加得到总购买数量。

为了帮助用户更好的理解聚合函数,在同样的场景下不使用聚合函数与 2.1.1 节进行对比,新增计算字段「非聚合求平均值」,直接使用公式合同金额/购买数量,如下图所示:

26.png

将「非聚合求平均」拖拽到指标栏,得出的结果如下图所示:

27.png

很显然,不使用聚合函数得出的结果是对明细数据做除法后进行求和汇总。

公式说明:

由于当前的分析维度为合同签约时间(年),以 2013 年平均金额为例,公式意义如下所示:

计算顺序
先对 2013 年「每单合同」依据公式合同金额/购买数量求出「每单合同的平均值」
再对 2013 年所有合同的平均值进行了「求和汇总」

5. 聚合函数计算规则编辑

适用于聚合计算的规则如下:

详情参见:聚合函数计算规则

  • 聚合函数只用于计算字段,FineBI 的聚合函数功能详细请参见:聚合函数

  • 明细表不能使用聚合函数。

  • 聚合函数内部不能使用聚合函数,例如:SUM_AGG(AVG_AGG(合同金额))

  • 聚合函数和聚合字段无法与非聚合字段(聚合字段是指:使用聚合函数的计算字段)进行二次计算。

  • 聚合函数可以与非聚合函数进行嵌套,例如:sum_agg(max(字段)) 是合法的。