三.使用自定义统计算子

图3:用自定义算子实现的权重计算表样
1.说明
图3是在BI@Report中使用自定义算子实现的权重计算报表。可以看出,对于每个要计算权重的指标,报表设计时都很简洁,只需要一个表元定义统计方法就可以完成信息量的计算了;如【总体税负与行业比较】这个指标,在上图中的表元C5中即可直接计算出其信息量,再和总信息量y5求比重即可得到该指标的权重,见C6表元。
2.寻找函数_xxl
那么表元C5定义中的_xxl()函数到底做了些什么,为何能将那么复杂的统计算法如此魔法的化繁就简呢?
|
原来,自定义函数_xxl()将所有业务相关的统计描述和统计算法定义在了_xxl函数体中,正因为有了这个定义,我们才可以在设计报表时,无需考虑中间的那么多单个和总体间的比对和再统计过程。
3.理解_xxl自定义统计算子
通常地,算子其实就是一种特殊的操作符,它能对输入的参数进行各种运算处理后得到一个结果;从这个意义上说,所有的函数也可叫做算子。
在BI@Report中,算子特指涉及到数据库统计运算的函数,其命名一般用下划线“_”开头,如求计数算子_n( ),求和算子_s( ),求平均数算子_a( )。
从图4可以看出,_xxl函数体中引用了大量的求计数_n(),求和_s(),求平均等算子,有很多次数据库统计和多层的嵌套;所以准确的说,_xxl是在BI@Report中定义的一个熵值法计算指标信息量的算子。
4.使用自定义统计算子的好处
BI统计算子功能可实现个体指标和总体统计数据间的复杂运算比对分析;虽然统计算子定义和解读起来比较复杂,但统计算子将用户复杂的业务统计数理模型封装到了公式模版内,只需要定义的专业人员理解和维护就行,报表制作的业务人员可以轻松引用;使用统计算子,报表制作时无需生成每个企业单个的统计比对结果数据行,系统可直接对数据库进行整体统计和比对运算。
自定义统计算子给用户带来了如下惊喜:
- a).报表制作简单;由于所有的业务统计模型都被封装到算子的函数定义体中,报表设计用户仅需要了解_xxl算子的作用,不用关心具体如何定义,就可以制作出满足用户需要的报表;
- b).报表维护安全清晰;图3和图2比较起来,维护的工作该何其简单!因为业务统计中间过程已不再暴露和分散在分析表样里,各中间计算结果都由BI@Report的算子支持引擎作为一个整体自动解析和执行。
- c).统计计算准确,执行效率高;由于复杂统计过程统一交由BI后台算子引擎处理,BI直接将统计表达式解析为数据库端的多个子查询连接并进行优化,强大的数据库统计查询确保了数据统计的正确性和高效性。
- d).统计方法维护集中,扩充方便,业务用户在业务推进过程中可不断积累和完善适合本行业的数理统计模型。
四.认识BI@Report的统计算子
1.算子概念
在BI@Report中,算子特指涉及到数据库统计运算的函数,其命名一般用下划线“_”开头,如求计数算子_n( ),求和算子_s( ),求平均数算子_a( )。
2.BI中的基本算子:
_n() 计数
_a() 平均值
_s() 求和
_max() 最大值
_min() 最小值
在BI统计函数中也有通用的sum、max等函数,如图:

图5:BI@Report的统计函数
这些统计函数和基本算子有什么差别呢?如上图说明文字所说,一般的统计函数会对传入的一组参数计算,而算子是专门对数据库内满足条件的记录做统计的。
注意问题:
对算子_n(),系统统计方法是不计算空值表元的,所以如果不想因为表元空值漏计,就必须以非空表元为参数,如单位代码、单位名称等。
3.常用数理统计函数及其算子表达式
在BI@Report中,用户通过基本的统计算子,可定义出自己所要的任意数理统计分析算法。用户仅需掌握3个基本算子,SUM、AVE、COUNT,大大降低了用户进行个性化数理统计分析的门槛。
假设参加运算的表元叫ZB1和ZB2,在BI中我们可以将常用统计函数定义如下:
方差: 统计表达式(n*∑X2 – (∑X)2)/(n*(n-1))
BI中可定义为:(_n(ZB1)*_s(ZB1*ZB1)-_s(ZB1)*_s(ZB1))/( _n(ZB1)*( _n(ZB1)-1))
标准差:也叫均差,是方差的平方根,反应变量波动的程度;
BI中可定义为:
SQRT((_n(ZB1)*_s(ZB1*ZB1)-_s(ZB1)*_s(ZB1))/( _n(ZB1)*( _n(ZB1)-1)))
另,BI中也支持直接提供了标准差函数stdev
偏差:也叫离差,是实际值与平均数之间的差,定义是X-∑X/n*(n-1);
BI中可定义为:ZB1-_s(ZB1)/_n(ZB1)*(_n(ZB1)-1)![]()
平均偏差:
BI中可定义为:_s(abs(ZB1-_a(ZB1)))/ __n(ZB1)
协方差:即每对数据点的偏差乘积的平均数COVAR(array1,array2)
BI中可定义为:s(ZB1 – _a(ZB1)) * (ZB2 – a(ZB2))) / _n(ZB1)
4.BI自定义统计算子功能特色
- a).可扩充的数理统计模型
通过BI@Report的公式模版管理,用户可以自定义适合行业业务需要的数理统计分析算子,来实现行业中不断发展的数理统计模型需求。
- b).复杂多层统计嵌套,轻松解析
目前,BI@Report能支持指标统计的多层嵌套处理,再复杂的统计表达式组合,BI都能轻松解析,精确统计。
- c).执行效率高
由于复杂的统计算法解析后,BI生成了数据库端的优化后的sql语句,提交数据库执行,可确保复杂数理统计较高的执行效率。
- d).一次定义随处可用
统计算子定义后,无需做特殊设置,即可在BI系统中随处可按需查看和引用,如拖拽式即席分析,qbe查询界面,过滤条件定义向导等。