<< Click to Display Table of Contents >> 定制计算 |
在打开的动态计算对话框中,计算中选择定制选项。
选择定制后打开脚本输入对话框 , 如下图所示,在公用中会有动态计算器相关的函数:
【名称】作为添加动态计算器脚本后数据段的名称。
当用户使用脚本进行动态计算,点击确定按钮后再次进入动态计算对话框,在此框中用户可通过计算依据选项来设定动态计算的方向。当用户需要再次编辑表达式时,点击编辑按钮,则可对表达式进行再次编辑。如下图:
【二次计算】即在当前的表达式中存在其他脚本动态计算数据段名称。如已经存在一个脚本动态计算数据段,名称为 movingAVG,当用户在当前的表达式中再次使用,movingAVG数据段,则属于第二次脚本动态计算,如表达式为 movingMin(col[‘movingAVG’],2,2,true,true); 时用户需要勾选二次计算选项。
本产品提供了多个动态计算函数,如下表所示。
动态计算函数 |
说明 |
举例 |
---|---|---|
diff(Object expression, [int position]) |
返回两个指定值的差值。 |
diff(col[‘sales’], PREVIOUS) ; //计算sales字段的差值,当前值与前一个值的差值。 //如果当前值或前一个值为空,返回空。 |
percentDiff(Object expression, [int position]) |
返回两个指定值的差值百分比。 |
percentDiff (col[‘sales’], PREVIOUS); //计算sales字段中当前值与前一个值的差值百分比。 //如果当前值或前一个值为空或零,返回空。 |
percent(Object expression, [int position]) |
返回占指定值的百分比。 |
percent (col[‘sales’], PREVIOUS); //计算sales字段中当前值与前一个值的百分比。 //如果当前值或前一个值为空或零,返回空。 |
percentSum(Object expression) |
当前值与总和的百分比。 |
percentSum(col[‘sales’]); //当前值除以总的求和值 |
percentMax(Object expression) |
当前值与最大值的百分比。 |
percentMax(col[‘sales’]); //当前值除以总的最大值 |
percentMin(Object expression) |
当前值与最小值的百分比。 |
percentMin(col[‘sales’]); //当前值除以总的最小值 |
percentAvg(Object expression) |
当前值与总平均值的百分比值。 |
percentAvg(col[‘sales’]); //当前值除以总的平均值 |
movingSum(Object expression,[ int prev, int next, boolean cincludedCurrent, boolean nappended]) |
移动计算求和,返回从前几个值到后几个值的和 // prev前几个值 //next 后几个值 //cincluded是否包括当前值 //nappended如果没有足够值,是否取空。 |
movingSum(col[‘sales’], 2, 2, true, true); //给sales字段,取当前值的前两个,后两个,加当前值,求和。没有足够值取空。 |
movingAvg(Object expression, [int prev, int next, boolean cincluded, boolean nappended]) |
移动计算平均值,返回从前几个值到后几个值的平均值 |
movingAvg(col[‘sales’], 2, 2, true, true); //给sales字段,取当前值的前两个,后两个,加当前值,取平均值。没有足够值取空。 |
movingMax(Object expression, [int prev, int next, boolean cincluded, boolean nappended]) |
移动计算最大值,返回从前几个值,到后几个值之间的最大值 |
movingMax(col[‘sales’], 2, 2, true, true); //给sales字段,取当前值的前两个,后两个,加当前值,求最大值。没有足够值取空。 |
movingMin(Object expression,[ int prev, int next, boolean cincluded, boolean nappended]) |
移动计算最小值。(返回从前几个值,到后几个值之间的最小值) |
movingMin(col[‘sales’], 2, 2, true, true); //给sales字段,取当前值的前两个,后两个,加当前值,求最小值。没有足够值取空。 |
rank(expression,[int order]) |
返回数据的排名,按照(1,2,2,4)竞争排序方式排名。 |
rank(sum(col['sales']), 1) //以sales字段的总和进行升序排序。 |
denseRank(expression,[int order]) |
返回数据的排名,按照(1,2,2,3)密集排序方式排名。 |
denseRank(sum(col['sales']), 1) |
modifiedRank(expression,[int order]) |
返回数据的排名,按照(1,3,3,4)调整后竞争排序方式排名。 |
modifiedRank(sum(col['sales']), 1) |
uniqueRank(expression,[int order]) |
返回数据的排名,按照(1,2,3,4)唯一排序方式排名。 |
uniqueRank(sum(col['sales']), 1) |
dynamicPercentile(expression,[int order]) |
返回数据的百分位排名,例:数据为(2,3,1),则返回数据(50%,100%,0%)。 |
dynamicPercentile(sum(col['sales']), 1) |
runningAvg(Object expression,[Object reset]) |
累积计算平均值,返回从第一个值,到当前值,累积求平均 //reset 是从哪个字段开始重新开始累积。 |
runningAvg(col['sales'] ,col['city]'); //计算sales字段的累积平均值。遇到city字段的分组,重新累积。 |
runningMin(Object expression,[Object reset]) |
累积计算最小值, 返回从第一个值,到当前值,累积求最小值) |
runningMin(col['sales'], col['city']); //计算sales字段的累积最小值。遇到city字段的分组,重新累积。 |
runningMax(Object expression,[Object reset]) |
累积计算最大值,返回从第一个值,到当前值,累积求最大值 |
runningMax(col['sales'] ,col['city']); //计算sales字段的累积最大值。遇到city字段的分组,重新累积。 |
runningSum(Object expression,[Object reset]) |
累积计算和,返回从第一个值,到当前值,累积求和) |
runningSum(col['sales'] ,col['city']); //计算sales字段的累积求和。遇到city字段的分组,重新累积。 |
runningSet(expression) |
指定依据哪个字段的值的累计去重数(需要配合 Set() 一起使用才能生效) |
runningSet(Set(col['sales'])); //先对sales字段进行去重处理,再进行累计总计。 |
ToFirst() |
返回从当前行到分区中第一行的行数。例如当前行为4,共12行,那么toFirst()=-3。 |
|
ToLast() |
返回从当前行到分区中最后一行的行数。例如当前行为4,共12行,那么toLast=8。 |
|
Lookup(expression, offset) |
返回目标行(指定为与当前行的相对偏移)中表达式的值。 |
lookup(sum(col['Profit']),toFirst()+3)返回的是计算分区第四行中的sum(col['Profit']) |
当组件处于聚合状态时,在脚本中引用该字段时要在字段前边加上 Sum、 Avg 等汇总函数的缩写。
➢例如:一汇总表中绑定了 PROFIT 字段,并对该字段进行了求和汇总,如下图所示 :
当用户需要为该汇总表中的 PROFIT 字段添加动态计算,脚本内容为 movingMax(sum(col['PROFIT']), 1, 1, true, true); 即移动计算求最大值,如下图所示 :
计算结果如下图所示 :