定制计算

<< Click to Display Table of Contents >>

当前位置:  制作可视化报告 > > 可视化分析 > 动态计算 

定制计算

Previous pageReturn to chapter overviewNext page

在打开的动态计算对话框中,计算中选择定制选项。

dynamic34

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

dynamic35

 

【名称】作为添加动态计算器脚本后数据段的名称。

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

dynamic36

【二次计算】即在当前的表达式中存在其他脚本动态计算数据段名称。如已经存在一个脚本动态计算数据段,名称为 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 字段,并对该字段进行了求和汇总,如下图所示 :

dynamic37

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

dynamic38

计算结果如下图所示 :

dynamic39