<< 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”列相当于环比计算。
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
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。
4. percentSum:汇总百分比计算求和
语法:percentSum(expression)
➢说明:
返回当前行数据与分区内数据的总和的百分比。
参数 expression:表达式列。
有关汇总百分比计算不同参数的内容,请参见汇总百分比计算。
➢例如:
percentSum(Sum(col['销量'])),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。
第一行0.123=206/(206+207+232+207+239+178+221+182)。
5. percentMax:汇总百分比计算求最大值
语法:percentMax(expression)
➢说明:
返回当前行数据与分区内数据的最大值的百分比。
参数 expression:表达式列。
有关汇总百分比计算不同参数的内容,请参见汇总百分比计算。
➢例如:
percentMax(Sum(col['销量'])),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。
第一行0.862=206/239。
6. percentMin:汇总百分比计算求最小值
语法:percentMin(expression)
➢说明:
返回当前行数据与分区内数据的最小值的百分比。
参数 expression:表达式列。
有关汇总百分比计算不同参数的内容,请参见汇总百分比计算。
➢例如:
percentMin(Sum(col['销量'])),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。
第一行1.157=206/178。
7. percentAvg,汇总百分比计算求平均值
语法:percentAvg(expression)
➢说明:
返回当前行数据与分区内数据的平均值的百分比。
参数 expression:表达式列。
有关汇总百分比计算不同参数的内容,请参见汇总百分比计算。
➢例如:
percentAvg(Sum(col['销量']), PREVIOUS),计算依据为沿平面纵向。计算依据决定分区,更多分区介绍详见动态计算的分区介绍。
第一行0.986=206/[(206+207+232+207+239+178+221+182)/8]。
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
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
第八行为空是因为分区内后一行数据为空导致。
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)
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)
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),按平面纵向分区内值的排名效果。数据集包含市场级别和市场分布的相关信息,“边际利润_最大值”列显示每个市场级别和市场分布的最大边际利润。其余的列显示每个排名函数对“边际利润_最大值”值集的影响,并始终假定函数的默认顺序(降序)。
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),按表格纵向分区内值的累积总计计算的效果。
上图的例子,如果计算依据为表格纵向,参数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个用户。
22. toFirst
函数:toFirst()
➢说明:
返回从当前行到分区中第一行的行数。
➢示例:
下面的表格显示不同市场每季度销量。计算依据选择沿平面纵向。toFirst(), toLast(), lookup(sum(col['销量']), 2), lookup(sum(col['销量']), toFirst()+2)的结果。
第二行与第一行之间的偏移为-1。
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['环比']