| 
     << Click to Display Table of Contents >> 定制计算 | 
    
    
     ![]() ![]()  
     | 
  
在打开的动态计算对话框中,计算中选择定制选项。

选择定制后打开脚本输入对话框 , 如下图所示,在公用中会有动态计算器相关的函数:

【名称】作为添加动态计算器脚本后数据段的名称。
当用户使用脚本进行动态计算,点击确定按钮后再次进入动态计算对话框,在此框中用户可通过计算依据选项来设定动态计算的方向。当用户需要再次编辑表达式时,点击编辑按钮,则可对表达式进行再次编辑。如下图:

【二次计算】即在当前的表达式中存在其他脚本动态计算数据段名称。如已经存在一个脚本动态计算数据段,名称为 movingAVG,当用户在当前的表达式中再次使用,movingAVG数据段,则属于第二次脚本动态计算,如表达式为 movingMin(col[‘movingAVG’],2,2,true,true); 时用户需要勾选二次计算选项。
本产品提供了 15 个动态计算函数,如下表所示。
动态计算函数  | 
说明  | 
举例  | 
|---|---|---|
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字段,取当前值的前两个,后两个,加当前值,求最小值。没有足够值取空。  | 
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字段的分组,重新累积。  | 
当组件处于聚合状态时,在脚本中引用该字段时要在字段前边加上 Sum、 Avg 等汇总函数的缩写。
➢例如:一汇总表中绑定了 PROFIT 字段,并对该字段进行了求和汇总,如下图所示 :

当用户需要为该汇总表中的 PROFIT 字段添加动态计算,脚本内容为 movingMax(sum(col['PROFIT']), 1, 1, true, true); 即移动计算求最大值,如下图所示 :

计算结果如下图所示 :
