动态计算函数

<< Click to Display Table of Contents >>

当前位置:  附录 > 计算列和计算函数 > 基础函数 

动态计算函数

复制链接

动态计算函数允许对分组汇总的表格、交叉表格、自由式表格、图表中的值执行计算。动态计算函数出现在【动态计算>定制计算】的窗口中。

例如:

计算某个年度和若干年度个别销售额占总额的百分比。

1. diff:差值

语法:diff(expression, int position)

说明:

返回当前行数据与分区内的某个值的差值。选择分区内的哪个值来算差值,受参数2 position控制。

参数1 expression:表达式列。

参数2 position:可选值为FIRST(分区内的第一个值)、PREVIOUS(分区内当前行的前一个值)、NEXT(分区内当前行的后一个值)、LAST(分区内的最后一个值)。也可以输入数字,对应的分别是1,2,3,4。

有关差值计算不同参数的内容,请参见差值计算

例如:

diff(Sum(col['销量']), PREVIOUS),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行为空是因为分区内当前行的前一行不存在,第二行的1=207-206。此例中,“diff”列相当于环比计算。

DynamicFunctionDiff

2. percentDiff:差值百分比

语法:percentDiff(expression, int position)

说明:

返回当前行数据与分区内的某个值的差值百分比。选择分区内的哪个值来算差值,受参数2 position控制。

参数1 expression:表达式列。

参数2 position:可选值为FIRST(分区内的第一个值)、PREVIOUS(分区内当前行的前一个值)、NEXT(分区内当前行的后一个值)、LAST(分区内的最后一个值)。也可以输入数字,对应的分别是1,2,3,4。

有关差值百分比计算不同参数的内容,请参见差值百分比计算

例如:

percentDiff(Sum(col['销量']), PREVIOUS),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行为空是因为分区内当前行的前一行不存在,第二行的0.005=(207-206)/206

DynamicFunctionPercentDiff

3. percent:百分比

语法:percent(expression, int position)

说明:

返回当前行数据与分区内的某个值的百分比。选择分区内的哪个值来算差值,受参数2 position控制。

参数1 expression:表达式列。

参数2 position:可选值为FIRST(分区内的第一个值)、PREVIOUS(分区内当前行的前一个值)、NEXT(分区内当前行的后一个值)、LAST(分区内的最后一个值)。也可以输入数字,对应的分别是1,2,3,4。

有关百分比计算不同参数的内容,请参见百分比计算

例如:

percent(Sum(col['销量']), PREVIOUS),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行为空是因为分区内当前行的前一行不存在,第二行的1.005=207/206。

DynamicFunctionPercent

4. percentSum:汇总百分比求和

语法:percentSum(expression)

说明:

返回当前行数据与分区内数据的总和的百分比。

参数 expression:表达式列。

有关汇总百分比计算不同参数的内容,请参见汇总百分比计算

例如:

percentSum(Sum(col['销量'])),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行0.123=206/(206+207+232+207+239+178+221+182)。

DynamicFunctionPercentSum

5. percentMax:汇总百分比求最大值

语法:percentMax(expression)

说明:

返回当前行数据与分区内数据的最大值的百分比。

参数 expression:表达式列。

有关汇总百分比计算不同参数的内容,请参见汇总百分比计算

例如:

percentMax(Sum(col['销量'])),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行0.862=206/239。

DynamicFunctionPercentMax

6. percentMin:汇总百分比求最小值

语法:percentMin(expression)

说明:

返回当前行数据与分区内数据的最小值的百分比。

参数 expression:表达式列。

有关汇总百分比计算不同参数的内容,请参见汇总百分比计算

例如:

percentMin(Sum(col['销量'])),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行1.157=206/178。

DynamicFunctionPercentMin

7. percentAvg,汇总百分比求平均值

语法:percentAvg(expression)

说明:

返回当前行数据与分区内数据的平均值的百分比。

参数 expression:表达式列。

有关汇总百分比计算不同参数的内容,请参见汇总百分比计算

例如:

percentAvg(Sum(col['销量']), PREVIOUS),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行0.986=206/[(206+207+232+207+239+178+221+182)/8]。

DynamicFunctionPercentAvg

8. movingSum:移动计算求和

语法:movingSum(expression, [int prev, int next, boolean includedCurrent, boolean appended])

说明:

移动计算求和,返回当前行数据与前后几行数据的和。是否包含当前行,由参数includedCurrent决定。如果前面几行和后面几行没有足够的值,是否计算或显示为空,由参数appended决定。

参数1 expression:表达式列。

参数2 prev:前几个值参与计算。

参数3 next:后几个值参与计算。

参数4 includedCurrent:是否包含当前值。true为包含,false为不包含。

参数5 appended:如果没有足够值,是否取空。true为取空,false为按实际拿到的值计算。

有关移动计算不同参数的内容,请参见移动计算

例如:

movingSum(Sum(col['销量']),1,1,true,false),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行413=206+207

第二行645=206+207+232

第八行403=221+182

DynamicFunctionMovingSum

9. movingAvg:移动计算求平均值

语法:movingAvg(expression, [int prev, int next, boolean includedCurrent, boolean appended])

说明:

移动计算求平均值,返回当前行数据与前后几行数据的平均。是否包含当前行,由参数includedCurrent决定。如果前面几行和后面几行没有足够的值,是否计算或显示为空,由参数appended决定。

参数1 expression:表达式列。

参数2 prev:前几个值参与计算。

参数3 next:后几个值参与计算。

参数4 includedCurrent:是否包含当前值。true为包含,false为不包含。

参数5 appended:如果没有足够值,是否取空。true为取空,false为按实际拿到的值计算。

有关移动计算不同参数的内容,请参见移动计算

例如:

movingAvg(Sum(col['销量']),1,1,true,true),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行为空是因为参数appended给的是true,分区内前一行数据为空导致。

第二行215=(206+207+232)/3

第八行为空是因为分区内后一行数据为空导致。

DynamicFunctionMovingAvg

10. movingMax:移动计算求最大值

语法:movingMax(expression, [int prev, int next, boolean includedCurrent, boolean appended])

说明:

移动计算求最大值,返回当前行数据与前后几行数据的最大值。是否包含当前行,由参数includedCurrent决定。如果前面几行和后面几行没有足够的值,是否计算或显示为空,由参数appended决定。

参数1 expression:表达式列。

参数2 prev:前几个值参与计算。

参数3 next:后几个值参与计算。

参数4 includedCurrent:是否包含当前值。true为包含,false为不包含。

参数5 appended:如果没有足够值,是否取空。true为取空,false为按实际拿到的值计算。

有关移动计算不同参数的内容,请参见移动计算

例如:

movingMax(Sum(col['销量']),1,1,true,false),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行207=Max(206,207)

第二行232=Max(206,207,232)

第八行221=Max(221,182)

DynamicFunctionMovingMax

11. movingMin:移动计算求最小值

语法:movingMax(expression, [int prev, int next, boolean includedCurrent, boolean appended])

说明:

移动计算求最小值,返回当前行数据与前后几行数据的最小值。是否包含当前行,由参数includedCurrent决定。如果前面几行和后面几行没有足够的值,是否计算或显示为空,由参数appended决定。

参数1 expression:表达式列。

参数2 prev:前几个值参与计算。

参数3 next:后几个值参与计算。

参数4 includedCurrent:是否包含当前值。true为包含,false为不包含。

参数5 appended:如果没有足够值,是否取空。true为取空,false为按实际拿到的值计算。

有关移动计算不同参数的内容,请参见移动计算

例如:

movingMin(Sum(col['销量']),1,1,true,false),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。

第一行206=Min(206,207)

第二行206=Min(206,207,232)

第八行182=Min(221,182)

DynamicFunctionMovingMin

12. rank:竞争排名

语法:rank(expression, [int order])

说明:

返回分区中当前行的标准竞争排名。为相同的值分配相同的排名。利用此函数,将对值集(6, 9, 9, 14)进行排名(4, 2, 2, 1)。在排名函数中,会忽略Null。它们不进行编号,且不计入百分位排名计算的总记录数中。

参数1 expression:表达式列。

参数2 指定排序方式,1为升序,2为降序,默认为降序。可不填。

有关排名的不同参数的内容,请参见排名计算

示例:

下图显示对一组值执行各种排名函数(rank, denseRank, modifiedRank, uniqueRank, percentileRank),按平面纵向分区内值的排名效果。数据集包含市场级别和市场分布的相关信息,“边际利润_最大值”列显示每个市场级别和市场分布的最大边际利润。其余的列显示每个排名函数对“边际利润_最大值”值集的影响,并始终假定函数的默认顺序(降序)。

DynamicFunctionRank

13. denseRank:密集排名

语法:denseRank(expression, [int order])

说明:

返回分区中当前行的密集排名。为相同的值分配相同的排名,但不会向数字序列中插入间距。利用此函数,将对值集(6, 9, 9, 14)进行排名(3, 2, 2, 1)。在排名函数中,会忽略Null。它们不进行编号,且不计入百分位排名计算的总记录数中。

参数1 expression:表达式列。

参数2 指定排序方式,1为升序,2为降序,默认为降序。可不填。

示例:参见排名

有关排名的不同参数的内容,请参见排名计算

14. modifiedRank:调整后竞争排名

语法:modifiedRank(expression, [int order])

说明:

返回分区中当前行的调整后竞争排名。为相同的值分配相同的排名。利用此函数,将对值集 (6, 9, 9, 14) 进行排名 (4, 3, 3, 1)。在排名函数中,会忽略 Null。它们不进行编号,且不计入百分位排名计算的总记录数中。

参数1 expression:表达式列。

参数2 指定排序方式,1为升序,2为降序,默认为降序。可不填。

示例:参见排名

有关排名的不同参数的内容,请参见排名计算

15. uniqueRank:唯一排名

语法:uniqueRank(expression,[int order])

说明:

返回分区中当前行的唯一排名。为相同的值分配不同的排名。利用此函数,将对值集 (6, 9, 9, 14) 进行排名 (4, 3, 2, 1)。在排名函数中,会忽略 Null。它们不进行编号,且不计入百分位排名计算的总记录数中。

参数1 expression:表达式列。

参数2 指定排序方式,1为升序,2为降序,默认为降序。可不填。

示例:参见排名

有关排名的不同参数的内容,请参见排名计算

16. percentileRank:百分位

语法:percentileRank(expression, [int order])

说明:

返回分区中当前行的百分位排名。利用此函数,将对值集(6, 9, 9, 14)进行排名(0, 0.67, 0.67, 1.00)。在排名函数中,会忽略Null。它们不进行编号,且不计入百分位排名计算的总记录数中。

参数1 expression:表达式列。

参数2 指定排序方式,1为升序,2为降序,默认为升序。可不填。

示例:参见排名

有关百分位的不同参数的内容,请参见百分位计算

17. runningSum:累积总计求和

语法:runningSum(expression,[reset])

说明:

返回给定表达式从分区中第一行到当前行的数据的总和。

参数1 expression:表达式列。

参数2 reset:指定依据哪个字段的值发生变化而进行重新累计。不填代表不重置。参数2可用的列,受计算依据影响。

示例:

runningSum(sum(col['销量'])),runningAvg(sum(col['销量'])),runningMax(sum(col['销量'])),runningMin(sum(col['销量']))

下图显示对一组值执行各种累计函数(runningSum, runningAvg, runningMax, runningMin),按表格纵向分区内值的累积总计计算的效果。

DynamicFunctionRunning

上图的例子,如果计算依据为表格纵向,参数2可以是“市场分布”和“年季度_交易时间”,如runningSum(sum(col['销量']),col['市场分布']),runningSum(sum(col['销量']),col['年季度_交易时间']);如果计算依据为沿平面纵向,则参数2只能是“年季度_交易时间”。有关累计总计计算的不同参数的内容,请参见累计总计计算

18. runningAvg:累积总计求平均值

语法:runningAvg(expression,[reset])

说明:

返回给定表达式从分区中第一行到当前行的数据的平均值。

参数1 expression:表达式列。

参数2 reset:指定依据哪个字段的值发生变化而进行重新累计。不填代表不重置。参数2可用的列,受计算依据影响。

示例:参见累计总计

有关累计总计计算的不同参数的内容,请参见累计总计计算

19. runningMax:累积总计求最大值

语法:runningMax(expression,[reset])

说明:

返回给定表达式从分区中第一行到当前行的数据的最大值。

参数1 expression:表达式列。

参数2 reset:指定依据哪个字段的值发生变化而进行重新累计。不填代表不重置。参数2可用的列,受计算依据影响。

示例:参见累计总计

有关累计总计计算的不同参数的内容,请参见累计总计计算

20. runningMin:累积总计计算求最小值

语法:runningMin(expression,[reset])

说明:

返回给定表达式从分区中第一行到当前行的数据的最小值。

参数1 expression:表达式列。

参数2 reset:指定依据哪个字段的值发生变化而进行重新累计。不填代表不重置。参数2可用的列,受计算依据影响。

示例:参见累计总计

有关累计总计计算的不同参数的信息,请参见累计总计计算

21. runningSet:累计总计求去重值

语法:runningSet(expression)

说明:

返回给定表达式从分区中第一行到当前行的数据的累计去重数。要结合set函数一起使用。

示例:

左侧表格是明细数据,显示每月访问用户id。右侧通过runningSet(Set(col["用户id"])),按月统计累计用户数,2019年1月共有2个用户;2019年1月和2月,共有3个用户。

DynamicFunctionRunningSet

22. toFirst

函数:toFirst()

说明:

返回从当前行到分区中第一行的行数。

示例:

下面的表格显示不同市场每季度销量。计算依据选择沿平面纵向。toFirst(), toLast(), lookup(sum(col['销量']), 2), lookup(sum(col['销量']), toFirst()+2)的结果。

第二行与第一行之间的偏移为-1。

DynamicFunctionFirstLastLookup

23. toLast

函数:toLast()

说明:

返回从当前行到分区中最后一行的行数。

示例:

如上图,toLast(),第二行与分区内最后一行的偏移为6。

24. lookup

函数:lookup(expression, [offset])

说明:

返回目标行(指定为与当前行的相对偏移)中表达式的值。使用toFirst() + n和toLast() - n作为相对于分区中第一行/最后一行的目标偏移量定义的一部分。如果省略了offset,则可以在字段菜单上设置要比较的行。如果无法确定目标行,则此函数返回空。

示例一:

在上图中,lookup列的动态计算表达式为lookup(sum(col['销量']), 2),沿平面纵向,每行都会显示接下来2个季度的销量,如果没有值,则显示空。

lookup_toFirst列的动态计算表达式为lookup(sum(col['销量']), toFirst()+2),沿平面纵向,显示分区第三行中的销量。

示例二:

通过lookup计算同环比,动态计算列“同比”、“环比”、“环比增长率”的表达式分别为:lookup(SUM(col['销售额']),-4),lookup(SUM(col['销售额']),-1),(col['销售额']-col['环比'])/col['环比']

DynamicFunctionLookup

25. index

函数:index()

说明:

返回分区中当前行的索引(行号),第一行索引从1开始。

示例:

index()计算时从第一个产品名称-伯爵茶开始先沿纵向计算,然后到下一列继续沿纵向计算当前数据的行号。

DynamicFunctionindex