BI函数字典
BI函数字典涵盖了BI系统中所应有到的所有的函数包括数学函数、时间日期函数、字符串函数、逻辑函数、统计函数、数据转换函数、钻取函数、对象函数、算子等。
数字函数主要介绍了对数值的求绝对值、余弦、求圆周率等相关操作的函数。
时间日期型函数主要是对日期进行一些处理包括返回由指定年、月、日合成的日期常量DATA,将一日期转变成字符串DATETOSTR等等。
字符串函数主要是通过函数将字符串进行指定的操作,如将一数字格式化为指定格式后输出的函数char,等等。
逻辑函数主要包括if、and、blank、or等。其中blank是判断表达式是否为空(NULL)。
统计函数如求平均值,最大值等。
数据转换函数主要有:asint(将某个值转换成整型)、asnum(将某个值转换成数值型)、asstr(将某个值转换成字符串型)。
对象函数主要包括返回分布检验对象函数、聚类函数、预测函数、钻取函数、其它函数、算子等。目前BI@Report系统所支持的钻取函数分别有: _z、_zi、_zq、_zg,目的都是为了对分析表某些指标求明细,这些函数为脚本函数,要配合javascript脚本语言写在表元链接属性中来使用,本手册分别对这些函数进行说明和列举。
第一章 数学函数
1. ABS
定义:ABS(value)
对value求绝对值。
参数:
value 是整型或浮点型数值。
示例:
求绝对值,返回值为等于或大于0的实数
ABS(-1.2)=1.2
2. ASINH
定义:ASINH(value)
求value的反双曲正弦。
参数:
value 是任意实数。
示例:
求反双曲正弦值,返回值为任意实数。
ASINH(-2.5)=-1.64723
ASINH(10)=2.998223
3. C
定义:C(I1,I2)
求I1的组合。
参数:
I1 任意整数
I2任意整数
示例:
求组合,返回值为整数。
C(6,2)=15
4. COS
定义:COS(N)
计算给定角度的余弦值。
参数:
N 以弧度表示的需要求余弦值的角度。
示例:
计算给定角度的余弦值,返回值为实数。
COS(1.57)=0
5.DEGREES
定义:DEGREES(N)
将数字从弧度转换为度数。
参数:
N 以弧度表示的角度
示例:
将给的弧度转换到角度,返回值为实数
DEGREES(0.52)=29.793805
6. EVEN
定义:EVEN(N)
返回沿绝对值增大方向取整后最接近的偶数。
参数:
N 任意实数
示例:
该函数返回沿绝对值增大方向取整后最接近的偶数。不论N的正负号如何,函数都向远离零的方向舍入,如果N恰好是偶数,则无需进行任何舍入处理。
EVEN(1.5)=2
EVEN(3)=4
EVEN(-1)=-2
7. EXP
定义:EXP(N)
返回e的n次幂。常数e为自然对数的底数,等于2.71828182845904。
参数:
N 任意实数
示例:
该函数返回返回e的N次幂。常数e为自然对数的底数,N为任意实数,作为常数e的指数。EXP函数与LN函数互为反函数
EXP(3)=20.08553692
EXP(0)=1
EXP(LN(2))=2
8. FACT
定义:FACT(I)
求I的阶乘。自然数i的阶乘是所有小于或等于i的正整数的积。
参数:
I 任意正整数
示例:
该函数求I的阶乘,返回值为正整数。
FACT(5)=120
9. INT
定义:INT(N)
返回数字舍入后的整数值。
参数:
N 需要进行取整处理的实数
示例:
返回数字舍入后的整数值,返回值为整数。
INT(8.9)=8
INT-8.9)=-8
下面公式将返回 A1 单元格中的一个正实数的小数部分:
A1-INT(A1)
10. LN
定义:LN(N)
求以e为底的自然对数。
参数:
N 需要求自然对数的实数,N必须保证LN的结果在实数域内有意义。
示例:
返回以e为底的N的自然对数,返回值为实数。
ln(10)=2.3025
ln(2)=0.6931
11. LOG
定义:LOG(N1,N2)
按指定的任意底数,返回数值的对数。
参数:
N1 对数的底数
N2 需要求度数的正实数
示例:
按指定的任意底数,返回数值的对数,返回值为实数。
Log(10,100)=0.5
Log(9,3)=2
12. MOD
定义:MOD(I1,I2)
返回I1除以I2后的余数,返回值与I1有相同的正负号。
参数:
I1,I2 均为整数
示例:
求I1除以I2后的余数,返回值为整数。
MOD(10,3)=1
MOD(-10,-3)= -1
13. ODD
定义:ODD(N)
返回对指定数值进行舍入后的奇数。不论正负号如何,数值都朝着远离 0 的方向舍入。如果num 恰好是奇数,则不须进行任何舍入处理。(INT 舍入偶数 odd 舍入奇数)
参数:
N 任意实数
示例:
返回对指定数值进行舍入后的奇数,返回值为整数。
ODD(1.5)=3
ODD(3)=3
ODD(1.5)=3
ODD(-2)= -3
14. PI
定义:PI( )
返回圆周率3.14159。
参数:
无
示例:
返回圆周率3.14159,返回值为正实数。
PI()=3.14159
15. POWER
定义:POWER(N1,N2)
返回指定数字的乘幂。
参数:
N1底数,可以为任意实数
N2指数。参数N1按照该指数次幂乘方;N1,N2必须保证Power的结果在实数域内有意义
示例:
返回指定数字的乘幂,返回值为实数。
Power(10,2)=100
Power(4,0.5)=2
16. PRODUCT
定义:PRODUCT(N1,N2,….)
返回一组数值的连乘积。
参数:
N1,N2,…. 任意实数
示例:
返回一组数值的连乘积,返回值为实数。
PRODUCT(1.5,3,2,10)=90
17. PADIANS
定义:PADIANS(N)
将数字由角度转换成弧度。
参数:
N 数字(以角度为单位)。该角度将被转换成弧度
示例:
将数字由角度转换成弧度,返回值为实数。
RADIANS(30)=0.5236
18. RAND
定义:RAND()
返回0 - 1之间均匀分布的随机数。
参数:
无
示例:
返回值为0 - 1之间的实数。
RAND()=0.59
19. ROUND
定义:ROUND(N,I)
返回某个数字按指定位数舍入后的数字。
参数:
N 为任意实数
I 整数
示例:
返回某个数字按指定位数舍入后的数字。N为数值,I为整数。如果 I 大于 0,则舍入到指定的小数位;如果 I 等于 0,则舍入到最接近的整数;如果 I 小于 0,则在小数点左侧进行舍入。
ROUND(2.15, 1)=2.2
ROUND(-1.475, 2)=-1.48
ROUND(15.193, -1)=20
20. SIN
定义:SIN(N)
计算给定角度的正弦值。
参数:
N 任意实数,待求正弦值的以弧度表示的角
示例:
返回某个给定角度的正弦值,返回值为实数。
sin(1.57079)=1
sin(3.14159)=0
21. SINH
定义:SINH(value)
求value的双曲正弦。
参数:
value 任意实数
示例:
求双曲正弦值,返回值为任意实数。
SINH(-2.5)=-6.0502
22. SIGH
定义:SIGH(N)
返回参数N的符号。
参数:
N 任意实数
示例:
返回参数N的符号。
N>0,Sign(N)=1
N=0,Sign(N)=0
N<0,Sign(N)=-1
23. SQRT
定义:SQRT(N)
求N的平方根。
参数:
N 大于0的实数
示例:
返回N的平方根,返回值为大于0的实数。
SQRT(4)=2
SQRT(1.44)=1.2
24. TAN
定义:TAN(N)
返回指定角度的正切值。
参数:
N 待求正切值的角度,以弧度表示
示例:
返回指定角度的正切值,返回值为实数。
Tan(0.785)=1
Tan(3.14159)=0
25. BTRUNC
定义:TRUNC(N,I)
将数字的小数部分截去,返回指定小数位数的数字。
参数:
N 待做截取处理的数值
I指明需保留小数点后面的位数,可以为负数。如果为负数,表示将小数点左边指定位数后面的数字均以0记.
示例:
将数字的小数部分截去,返回指定小数位数的数字,返回值为实数。
TRUNC(8.19,0)=8
TRUNC(-8.19,0)=-8
TRUNC(PI(),1)= 3.1
TRUNC(1238.19,-2)=1200
第二章 时间日期函数
1. DATE
定义:DATE(I1,I2,I3)
返回由指定年、月、日合成的日期常量。
参数:
I1,I2,I3 为整数,分别表示年、月、日。
示例:
将指定年、月、日合成为日期常量,返回值为日期。
Date(1999,12,25)=#1999-12-25#
2. DATETOSTR
定义:DATETOSR(D), 或DATETOSR(D,C)
将一日期转变成字符串。
参数:
D 要转换为字符串的日期,也可以是字符串。
C 字符串的格式,
1、可忽略此参数。忽略此参数后,默认为yyyy-mm-dd
2、字符串格式中,y表示年,m表示月,d表示日
3、字符串格式中,如果是小写字母(y,m,d),则返回值取阿拉伯数字(123等);如果是大写字母(Y,M,D),返回值为汉字(一二三等)
4、字符串格式中,支持三个连续的mmm,表示将月份转换成英文
示例:
例如,日期常量为#2006-10-01#
DATETOSTR(#2006-10-01#)=2006-10-01
DATETOSTR(#2006-10-01#,"yyyy-mm-dd")=2006-10-01
DATETOSTR(#2006-10-01#,"yyyy年mm月dd日")=2006年10月01日
DATETOSTR(#2006-10-01#,"YYYY年MM月DD日")=二零零六年十月一日
DATETOSTR(#2006-10-01#,"yy年mm月dd")=06年10月01
DATETOSTR(#2006-10-01#,"YY年MM月DD")=零六年十月一
下面的示例中,参数为字符串表示的日期:
DATETOSTR('20010801','ddmmmyyyy')=08 Aug 2001
下面的示例中,函数的参数为报表模板中使用的日期型的报表参数变量:
DATETOSTR(@bbq,'yyyy年mm月dd日'),其中@bbq为日期型的报表参数变量。例如,报表模板中在表头上显示数据期时,常这样设置:
“数据期:<#=datetostr(@month,'yyyy年mm月')#>”。
3. DAY
定义:DAY(D)
返回日期中的日,返回值为整数。
参数:
D 参数可以为日期,也可以为字符串表示的日期。
示例:
返回日期中的日,返回值为整数。
Day(#1999-12-1#)=1
Day(today())=11
下面的示例中,参数为字符串表示的日期:
Day('20010102')返回02
Day('2001-01-02')返回02
4. DAYS
定义:DAYS(D1,D2)
返回两个日期之间的天数。
参数:
D1,D2 分别表示日期,也可以为用字符串表示的日期。
示例:
返回两个日期之间的天数。天数中包括两头的日期。返回值为整数。
DAYS(#1999-12-1#,#1999-12-10#)=10
days(today(),strtodate('20060101','yyyymmdd'))
days(today(),'20060101')
days('20060101',today())
下面的示例中,函数的参数为报表模板中使用的日期型的报表参数变量:
DAYS(@bbqq,@bbqz),其中@bbqq、@bbqz为日期型的报表参数变量
5. DADATE
定义:DXDATE(D)
将日期变成大写格式。
参数:
D 参数可以为日期,也可以为字符串表示的日期。
示例:
将指定日期变成大写格式,返回值为字符串。
DXDATE(#1999-01-01#)="一九九九年一月一日"
下面的示例中,参数为字符串表示的日期:
DXDATE('19990101')返回一九九九年一月一
DXDATE('1999-01-01')返回一九九九年一月一
6. MONTH
定义:MONTH(D)
回日期中的月份。
参数:
D 参数可以为日期,也可以为用字符串表示的日期。
示例:
返回日期中的月份,返回值为整数。
Month(#1999-12-1#)=12
下面的示例中,参数为字符串表示的日期:
Month('20010101')返回01
Month('2001-01-01')返回01
7. NOW
定义:NOW()
返回系统当前时间,返回是的服务器上的系统时间。
参数:
无。
示例:
返回系统当前时间,返回值为字符串,格式为:HH:MM:SS。
NOW()="12:56:50"
8. OFFSETDATE
定义:OFFSETDATE(D,I1,I2,I3)或OFFSETDATE(D,I1)或OFFSETDATE(D,I1,I2)
计算某日期之前(后)若干天(或者月、年)的日期,如offsetdate(today(),-1)求出去年的今天。
参数:
D 表示日期。
I1,I2,I3为整数,分别表示指定日期前(后)的若干年、月、日。小于0,表示是指定日期前的若干年、月、日;大于0,表示是指定日期后若干年、月、日
示例:
计算某日期之前(后)若干天(或者月、年)的日期,返回值为日期。
offsetdate(today(),-1),表示是去年的今天
9.STRTODDATE
定义:STRTODATE(C1),或STRTODATE(C1,C2)
将一字符串转变成一日期。
参数:
C1 将要转换为日期的字符串,或者日期。
C2 1、指定要转换的字条串的日期格式,可忽略。忽略此参数后,默认转换的日期格式为“yyyy-mm-dd”;
2、字符串中,y表示年,m表示月,d表示日
3、字符串如果为小写字母(y/m/d),则返回值为阿拉伯数字(123等);如果为大写字母(Y/M/D),则返回值为汉字(一二三等)
示例:
将指定格式的字符串转变成一日期,返回值为日期。
strtodate("2006-10-01")= #2006-10-01#
strtodate("2006/10/01","yyyy/mm/dd") = #2006/10/01#
strtodate("2006年10月01","yyyy年mm月dd日") = 2006年10月01日
strtodate("2006年10月01","YYYY年MM月DD日") = 二零零六年十月一日
10. TODAY
定义:TODAY ()
以日期常量的形式返回当天的日期。
参数:
无
示例:
以日期常量的形式返回当天的日期。
TODAY()=#2006-07-25#
11. WEEKDAY
定义:WEEKDAY(D)
返回指定日期为一周中的第几天。
参数:
D 指定的日期,也可以是字符串表示的日期。
示例:
返回指定日期为一周中的第几天。返回类型为整型。
Weekday(#2005-01-03#)=2
2005年01月03日为星期一,为本周的第2天,所以返回值为2。(星期日为本周的第1天)
下面示例中,参数为字符串表示的日期:
Weekday('20010101')返回1
Weekday('2001-01-01')返回1
12. ABS
定义:WOFM(D)
返回日期Date所在的周是所在月的第几周,第一周从本月的第一个周一算起。
参数:
D 指定的日期。
示例:
返回日期Date所在的周是所在月的第几周。
假如今天是2005年6月21日,则 WOFM(today())返回的值为3,表示是第3周;因为2005年6月的1--4日所在周的周一在上月的最后一周,所以是第3周。
13. YEAR
定义:YEAR(D)
返回日期中的年份,返回值为整数。
参数:
D 指定的日期,也可以为用字符串表示的日。
示例:
返回日期中的年份,返回值为整数。
Year(#2006-08-01#)=2006
下面示例中,参数为字符串表示的日期:
YEAR('20010101')返回2001
YEAR('2001-01-01')返回2001
第三章 字符串函数
1. CHAR
定义:char(I)
将一数字格式化为指定格式后输出
参数:
I:用整数表示的字符的ASCII码
示例:
根据ASCII码返回单个字符的串,返回值为单个字符
CHAR(65)="A"
2. CLEAN
定义:CLEAN(C)
将串中的不可见字符去掉。
参数:
C:指定的字符串
示例:
去掉不可见字符后的串,返回值为字符串
clean(" 我 是 中国人 ")="我是中国人"
3. CODE
定义:CODE(C)
返回串中第一个字符的ASCII码
参数:
C:指定的字符串
示例:
返回指定串中第一个字符的ASCII码,返回值为整数
CODE(“abc”)=97
4. FINE
定义:FIND(C1,C2)
在串C2中查找子串C1,并返回子串第一次出现的位置,(0代表第一个字符);
如果没找到,则返回-1。与Search不同,FIND区分大小写。
参数:
C1,C2均表示字符串,其中C1表示要查找的子串
示例:
在串C2中查找子串C1,并返回子串第一次出现的位置,返回值为整数
FIND("AB","AAABBBBB")=2
FIND("Ab","AAABBBBB")=-1
5. FORMAT
定义:FORMAT(C,N)
将一数字格式化为指定格式后输出
参数:
C:需要格式化的字符串的格式,完整的格式为"%0:,6.3f",各部分说明见示例。
N:要格式化为指定格式的数值
示例:
将一数字格式化为指定格式,返回值为字符串或数值
format('%0:,6.3f',1245.5634)=1245.563 将浮点数num转换为字符串,并指定小数点后位数
详细说明:
format函数格式化数字输出的操作符由6部分组成:
1、%:是起始控制符,表示从此处开始的字符串为格式化控制参数
2、0::表示控制格式化第几个数,此处"0:"表示控制第一个数,例如"5:"表示控制第5个数。此操作符也可以不写,系统将采用默认模式,默认的是从左往右顺序格式化
3、,:匹配","和",",表示需要控制格式化输出中显示千分符,如果不写","和","则表示不显示千分符
4、6:表示需要确保输出的位数为6位,位数不足前面以0补足(该控制一般应只对整数使用)。如对于数字1则会输出为000001(特别的,对于小数,则表示控制整个数的位数,最好不要在控制小数时使用此操作符)
5、.3: 表示控制小数位输出的个数,如.3表示显示3位小数,对于太大的数,小数位尽量不要控制
6、f': 匹配字符,该字符为类型转换字符,目前支持"d"(表示整数)"f"(表示小数)"s"(表示字符串),使用此操作符表示将输出数转换为指定类型输出。
例如:
函数 输出 说明
format('%.3f',1.0)1.000 控制小数位数
format('%3d',1) 0001 整数位不足补0
format('%,f',1111111111111.1111) 1,111,111,111,111.111 显示千分符
format('%d',12.5) 13 小数转换为整数(四舍五入)
format('%0:3d %1:.2f',12.5,10.4)0013 10.40 多数字控制(从0开始,"0:"表示控制第一个数字)
format('%5.3f',1.0) 01.000 最好不要控制小数位数的同时控制总的位数
format('%.3f',123234234234325345.5634)123234234234325344.000 太大数时,小数可能不准
6. LEFT
定义:LEFT(C,I)
返回一字符串左边I个字符组成的子串,其中I为整数
参数:
C:指定的字符串
I:要返回的字符的个数,为整数
示例:
返回一字符串左边I个字符组成的子串,返回值为字符串
LEFT("ABCDEF",3)="ABC"
7. LEN
定义:LEN(C)
返回串的长度。如果字符是汉字,则每个汉字的长度为1。
参数:
C:指定的字符串
示例:
返回串的长度,返回值为整数
LEN("ABCDE")=5 LEN("武汉")=2
8. LOWER
定义:LOWER(C)
将串变成小写
参数:
C:指定的字符串
示例:
将串变成小写,返回值为字符串
LOWER("AbCd1")="abcd1"
9. IN
定义:IN(C1,C2)
判断C1是否是C2的子串
参数:
C1、C2是二个字符串
示例:
判断C1是否是C2的子串,如果C1是C2的子串,则返回TRUE
In("00","00 01 02")=TRUE
10. MID
定义:MID(str,I, n)
返回串中从I开始的n个字符的子串。其中:I,n都为整数。串的基数n从0开始。
参数:
Str: 指定的字符串
I: 返回的子串的起始位置,从0开始
N: 返回的子串中字符的数据量
示例:
返回串中从I开始的n个字符的子串。其中:I,n都为整数
MID("ABCDEF",2,3)="CDE"
11. MT
定义:MT(C1,C2)
判断C1与C2是否模式匹配
参数:
C1: 参数C1为要判断的字符串
C2: 参数C2为模式匹配的正则表达式,*表示任意字符串,?表示任意单个字符。如果有多种模式,可以用逗号分割。
示例:
判断C1与C2是否模式匹配,匹配返回TRUE,否则返回FALSE
12. REPLACE
定义:REPLACE(C1,C2,I1,I2)
将串C1从I1开始的I2个字符替换成新串C2。
参数:
C1、C2: 指定的字符串,其中C2为要替换的子串
N1: 指字符串的起始位置,串的起始位置从0算起,为整数
N2: 指串C1中要替换掉的字符的个数,为整数
示例:
将串C1从I1开始的I2个字符替换成新串C2
13. REPT
定义:REPT(C,I)
将一字符重复若干次,变成一新串。
参数:
C: 指定的字符串
I: 串重复的次数,为整数
示例:
将一串重复若干次,变成一新串
REPT("A",5)="AAAAA"
14. RIGHT
定义:right(C,I)
返回一字符串右边I个字符组成的子串,其中I为整数。
参数:
C: 指定的字符串
I: 要返回的字符的个数,为整数
示例:
返回一字符串右边I个字符组成的子串,返回值为字符串
RIGHT("ABCDEF",3)="DEF"
15. RMBDX
定义:rmbdx(N)
将数值转变成大写人民币串。
参数:
N: 要转换的数值
示例:
将指定的数值转变成大写人民币串
RMBDX(1203.45)="壹仟贰佰零叁元肆角伍分整"
16. SAME
定义:same(C1,C2)
判断两串是否相等,不区分大小写
参数:
C1、C2: 要比较的两个字符串
示例:
判断两串是否相等,不区分大小写。如果相等,返回TRUE,否则返回FALSE
SAME("aBc","ABC")=TRUE
17. SEAR
定义:search(C1,C2)
在串C2中查找子串C1,并返回子串第一次出现的位置,(0代表第一个字符)。如果没找到,则返回-1。与Find不同,SEARCH不区分大小写。
参数:
C1、C2: 两个字符串,C1为要查找的子串
示例:
在串C2中查找子串C1,并返回子串第一次出现的位置。返回值为整数
SEARCH("AB","AAABBBBB")=2SEARCH("Ab","AAABBBBB")=2
18. STR
定义: STR(N)
将数值变成串
参数:
N:要转换成串的数值
示例:
将数值变成串
STR(1)="1"
19. Strcat
定义:STRCAT(C1,C2,…)
将所有串合并。该合并不受255长度限制
参数:
C1、C2…要合并的字符串
示例:
将所有串合并后,返回一字符串
STRCAT("AB"," CD"," EF")="AB CDEF"
20.Substitute
定义:substitute(str,oldsub,newsub)
将串中的oldsub子串换成另一newsub子串。不管子串出现多少次,全部换掉
参数:
Str: 指定的字符串
Oldsub: 字符串将要替换的子串
Newsub: 用于替换的子串
示例:
将串中的oldsub子串换成另一newsub子串
Substitute("AbCdEFCdEG","CdE","123")="Ab123F123G"
21. Trim
定义:trim(c)
将串中的头尾空格及TAB键去掉
参数:
C: 指定的字符串
示例:
将串中的头尾空格及TAB键去掉
TRIM(" AB C ")="AB C"
22. value
定义:value(C)
将字符串转换成数值。如果转换不成功,则返回Err
参数:
C: 要转换的字符串
示例:
将字符串转换成数值
VALUE("12.34")=12.34
23. upper
定义:upper(C)
将串变成大写
参数:
C: 要变成大写的字符串
示例:
将下面的串变成大写
UPPER("AbCd1")="ABCD1"
第四章 逻辑函数
1. AND
定义 AND(bool1,bool2,...)
求多个逻辑表达式相与的结果,返回值为逻辑型True,False
参数
bool1,bool2,...
计算结果为 true 或 false 的表达式。
示例
求多个逻辑表达式相与的结果
AND(a1:a5,b1,b3,TRUE,C1& C5)
2 BLANK
定义BLANK(*)
判断一表达式是否为空(NULL)。一般常用在判断一表元是否填写。返回值为逻辑型True,False
参数
* 任意类型
示例
判断表达式是否为空
BLANK(A3)
3 IF
定义if(condition, value, value2)
对条件进行计算以确定下一个动作。如果条件为 true,则返回 (value) ,如果条件为 false,则返回 (value2)。
参数
Condition
计算结果为 true 或 false 的表达式。
Value
所有类型 - 计算结果为 true 的返回值
value2
所有类型 - 计算结果为 false 的返回值。
示例
下面的例子的含义是,如果R4表元的值为1,则C4的值为“是”,如果不是1,则为空。
C4=if(R4=1,'是','')
4 OR
定义OR(bool1,bool2,...)
求多个逻辑表达式相或的结果,返回值为逻辑型True,False
参数
bool1,bool2,...
计算结果为 true 或 false 的表达式。
示例
求多个逻辑表达式相或的结果
OR(a1:a5,b1,b3,TRUE,C1& C5)
第五章 统计函数
1. AVEDEV
定义:AVEDEV(N1,N2,N3…)
对一组数据求平均差。至少必须有一个参数
参数:
N1、N2、N3...: 任意实数
示例:
求多个数据的平均差
TRIM(" AB C ")="AB C"
2. CORREL
定义:CORREL(N1,N2,N3…)
对一组数据求相关系数。至少必须有一个参数
参数:
N1、N2、N3...: 任意实数
示例:
求多个数据的相关系数
CORREL(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))
3. VAR
定义:VAR(N1,N2…)
对一组数据求方差。至少必须有2个参数
参数:
N1、N2、任意实数,个数在1--30之间
示例:
对一组数据求方差
VAR(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))
4. MAX
定义:MAX(N1,N2…)
在一组数据中求出最大值。至少必须有一个参数
参数:
N1、N2、任意实数
示例:
在一组数据中求出最大值
MAX(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))
5. MIN
定义:MIN(N1,N2…)
在一组数据中求出最小值。至少必须有一个参数
参数:
N1、N2、任意实数
示例:
在一组数据中求出最小值
MIN(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))
6. STDEV
定义:stdev(N1,N2…)
在一组数据中求出标准方差。至少必须有一个参数
参数:
N1、N2、任意实数
示例:
在一组数据中求标准方差
STDEV(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))
7. Sum
定义:sum(N1,N2…)
对一组数据求和; 至少必须有一参数
参数:
N1、N2、要比较的两个字符串
示例:
对一组数据求和
SUM(a1:a5,c1,c4,d1+d5*f2,max(e2:e10))
第六章 数据转换函数
1. Asint
定义:asint(*)
将某个值转换成整型
参数:
* 任意类型
示例:
将某个值转换成整型
ASINT("146")=146
2. Asnum
定义:asnum(*)
将某个值转换成数值型
参数:
* 任意类型
示例:
将某个值转换成数值型
ASNUM("1563.456")=1563.456
3. Asstr
定义:asstr(*)
将某个值转换成字符串型
参数:
* 任意类型
示例:
将某个值转换成字符串型
ASSTR(125.123)=“125.123”
第七章 对象函数
1. 返回分布检验对象
一.分布检验
分布函数distribution参数说明:
参数名 | 参数说明 |
name | 分布名称,现支持以下分布: |
data | 待检验的分布的数据集合;如果是二项分布和柏松分布,那么此参数是一个二维数组,第一个元素是浮点数组表示观察值,第二个元素是整形数组随机变量; 如果是其他分布,那么此参数需要一个浮点数组。 该数据可以是ardb函数查询出来的数据集,也可以某个对话框OLAP(必须是单维)的某一列数据。 |
frenum | 频数分段,默认值是10 |
coff | 置信度,默认值是0.95 |
以检验正态分布为例子说明该函数的使用:
1.首先在全局对象中定义该分布对象,当要多次调用同一分布函数的属性时,不建议直接在报
表模板中使用分布函数。
distribution('normal',ardb('selectdis from dis','testconn'),20,0.9)
normal 表示使用正态分布检验。
ardb 表示通过SQL获取检验的数据,testconn表示是通过某一个JDBC连接去获取数据。
如果是使用默认的数据连接,可以省略。
20 频数分段为20段。
0.9 置信度为0.9。
二.分布对象的函数说明
函数名 | 函数说明 |
getResult() | 返回分布检验的结果,true表示符合分布,false表示不符合分布 |
getVertexMax(int) | 返回某一分段的最大值 |
getVertexMin(int) | 返回某一分段的最小值 |
getRatio() | 返回置信度 |
getFreq(int) | 返回某一分段的分布数,即有多少数据落分布在该段中 |
getObvCount() | 返回样本数据的总数 |
getCoef1() | 返回分布函数的参数值 |
getCoef2() | 返回分布函数的参数值 |
getDistributionCaption() | 返回分布的名称 |
getConf(double) | 给定一个tau,求出落在均值加(减)tau该区间[mju-tau,mju+tau]的样本数据所占的百分比。 |
getTau(double) | 给定一个数据分布的百分比值,根据均值加(减)tau,就是可以计算出一个样本的区间[mju-tau,mju+tau]。(占多少比例的数据落在该区间)。 |
getStyle() | 得到该分布类型是连续的还是离散的1为连续,0为离散 |
calcDensity(double) | 根据随意的x值计算对应的密度函数的值,如果不符合检验模型,则返回Double.NaN |
calcDistribution(double) | 根据随意的x值计算对应的分布函数的值,如果不符合检验模型,则返回Double.NaN |
getConfidence() | 返回拟合优度的值。 |
三.全局对象说明
就是该对象是属于报表的,当多个表元引用该对象的时候,只在报表中初始化一次,而不是每个表元都会初始化该对象。在报表属性的高级这一栏下面,有全局对象属性,点击该链接可以定义报表的全局对象,每一个全局对象有三个属性:
对象名称:该对象的唯一标识,字母打头的字母或数值的组合,现在没有做合法性判断。
重新计算: 如果该表是个分页的表,当不在首页时,是否重新计算该对象。
对象定义:定义该对象。
2. 聚类函数
BI提供了一个表达式函数cluster用于进行聚类分析,该函数实现了上面提到的三种通用聚类方法,使用该函数的调用表达式是cluster(samples, clusterNumber,model),具体说明如下:
cluster函数参数说明
参数 | 含义 | 规格说明 |
samples | 聚类样本观测数据 | 一维或者二维的double数组,如果是一维的则数组长度为聚类样本的个数;为二维数组时,第一维长度为聚类样本个数, |
clusterNumber | 期望聚类的数目 | 不小2(对于层次聚类方法该数字不小于3)的一个int型数字,该数字不能大于聚类样本个数 |
model(可选参数) | 聚类方法名称 | 该参数是一个字符串,表示选用何种聚类分析方法;目前有四个可供选择的值:'classic'表示选用层次聚类方法, |
cluster函数返回结果对象说明
cluster函数的计算结果是一个聚类结果对象,通过该对象提供的方法,用户可以获取跟聚类相关的各种结果,具体说明见下表:
调用方法 | 结果类型 | 返回结果说明 |
getClusterCenter(int clusterIndex) | double[] | 聚类后序号为clusterIndex的类别的样本中心 |
getClusterCenters() | double[][] | 所有类别聚类中心,结果的的第一维长度为聚类的数目,第二维长度为样本观察指标数目 |
getClusterCenterSampleIndex(int clusterIndex) | int | 聚类后序号为clusterIndex的类别中最靠近样本中心的那个样本的编号 |
getClusterCenterSampleIndexes() | int[] | 离各聚类中心最近的那个样本的序号列表 |
getClusterNumber() | int | 聚类类别数目 |
getClusterSampleCount(int clusterIndex) | int | 聚类后序号为clusterIndex的类别中的样本数目,可能存在某些类别中样本数目为0 |
getClusterSampleCounts() | int[] | 聚类后每个样本中的数目 |
getClusterSampleIndex(int clusterIndex) | int[] | 类别clusterIndex中的样本序号列表 |
getClusterSampleIndexes() | int[][] | 聚类后所有类别中各自的样本序号列表 |
getClusterSamplePercentage(int clusterIndex) | double | 序号为clusterIndex的类别中样本数目所占的比例 |
getClusterSamplePercentages() | double[] | 所有类别样本数目比例 |
getMaxValue(int clusterIndex) | double | 类别clusterIndex中的样本指标最大值,如果样本有多个指标则结果中仅包含第一个指标的最大值 |
getMaxValues() | double[] | 所有类别中样本的指标最大值,如果样本有多个指标则结果中仅包含第一个指标的最大值 |
getMinValue(int clusterIndex) | double | 类别clusterIndex中的样本指标最小值,如果样本有多个指标则结果中仅包含第一个指标的最小值 |
getMinValues() | double[] | 所有类别中样本的指标最小值,如果样本有多个指标则结果中仅包含第一个指标的最小值 |
getSampleClusterIndex(int sampleIndex) | int | 编号为sampleIndex的样本聚类后的类别序号 |
getSampleClusterIndexes() | int[] | 所有样本聚类后的类别序号列表 |
getSampleNumber() | int | 样本数据的数目 |
注:上面各种方法中的参数clusterIndex表示传入的聚类结果的类别编号(该编号的范围为0到期望聚类数目-1),sampleIndex表示传入的原始样本数据的编号;
3. 预测函数
BI中和R相关预测的方法有5种,线性回归、对数线性回归、支持向量机、神经网络和时间序列预测方法。其中前四种预测方法是根据一个或多个参考值来预测目标数据的,而时间序列不需要。
R预测类com.sanlink.irpt.oem.tax.predict.R方法说明
方法名 | 参数 | 说明 |
pred |
| 前4种预测用该函数 |
| predName | 预测方法名,取值为 tax.pred.svm|tax.pred.nnet|tax.pred.lm|tax.pred.lnlm |
| trainData | 参考值的历史数据,必须是二维数组,如:[C3$$] |
| historyData | 历史数据,一维数组,如:B3$$ |
| params | 预测数据的参考值,<#=@gdp#> |
| dataPointTitle | 统计图上数据点的标题,A3$$+'2007年' |
| chartTitle | 统计图标题,如:'支持向量机' |
arima |
| 时间序列预测函数 |
| predName | 预测方法名,取值为 tax.pred.arima |
| historyData | 历史数据,一维数组, |
| N | 表示要预测的期数 |
| frequency | 表示要预测的周期数 |
| params | 该参数为空,还没有用到,输入 '' 即可 |
| dataPointTitle | 统计图上数据点的标题,A3$$+'2007年' |
| chartTitle | 统计图标题,如果不需要统计图,上述两个参数都不需要预测 |
pred函数返回的对象说明:
函数名 | 说明 |
getTestPredError(int i) | 获取第i期的测试预测的结果误差,如果那一期没有被测试,返回nan , 可以根据fidx()函数获取浮动出来的序号 |
getAvePredError() | 返回预测误差的平均值 |
getChartInfo() | 返回统计图对象参数,在统计图的图片路径中可以输入 =arima.getChartInfo() |
getValue() | 获取预测的结果值 |
arima返回的对象说明:
函数名 | 说明 |
getTestPredError(int i) | 获取第i期的测试预测的结果误差,如果那一期没有被测试,返回nan , 可以根据fidx()函数获取浮动出来的序号 |
getAvePredError() | 返回预测误差的平均值 |
getChartInfo() | 返回统计图对象参数,在统计图的图片路径中可以输入 =arima.getChartInfo() |
getValue(int i) | 返回第i期的预测值 |
1、_z()
函数体:_z(rpt,params)
说明:从某主表链接到一张新表,使某分析表某些指标求精展示。
参数:
rpt:表示钻取到的另一张表其取值可以是报表ID、报表标题、报表代号、报表保存组路径带报表代号
params:传递给链接表的参数,参数用分号分割,当前表计算时所用的参数会缺省的传递,
举例:
javascript:_z('WB_CGYH','@bbq=<#=@bbq#>;@sw=<#=@sw#>')
链接到WB_CGYH表,并将参数 (bbq和)sw传递过去。其中:@bbq为报表期参数,@sw为资金单位;如果主表计算时用到了这两个参数,将会缺省传递链接表中,可以直接将公式写成:javascript:_z('WB_CGYH')
在钻取表中可以直接引用这些参数,如这个例子中可在WB_CGYH表的"报表期属性"中的"数据期条件"填写:bbq()=@bbq来对报表期加以控制,使之继承主表报表期。
2. _zq( )
函数体:_zq(cellname)
说明:本表向下钻取,主要用于多级代码维和通用维的钻取,如是多级代码维将会向下钻取,如是通用维将会按维表设置的钻取路径钻取。
参数:
cellname:表元名
举例:
javascript:_zq('<#=clinf(self(),"name")#>')//#########
3. _zi( )
函数体:_zi(rpt,params,target,width)
说明:将钻取出来的结果表显示在本表的右方或者下方
参数:
rpt:表示钻取表的或者名称或者标题
params:传递给链接表的参数,参数用分号分割,当前表计算时所用的参数会缺省的传递如:
target:表示钻取结果表显示的地方,有两个字符串可选值right和bottom,缺省为right,也可以指定原表的表头表元。
width:表示显示结果表的区域所占据的高度或者是宽度,比如:0.3和30都表示30%,大于100的表示具体的宽度以象素为单位,缺省为0.5 。
isgraphics:表示是显示图还是图表。该函数是和target参数配合起来使用,如果target是本表的表头表元(HHH0),那么就把链接的表或图显示在 target指定的表元中。为true,表示只显示图,默认为false
举例:
javascript:_zi("b0602","@zb=xxb.JE")
//表示钻取的表出现在当前表的右边,占据50%的宽度,
javascript:_zi("zg","@cp=xxx","HHH0")
//表示把代号为zg的表,显示在本表的HHH0表元中
4. _zg( )
函数体:_zg(datas,caption,seriestitle,maintitle,gcell)
说明:表示在本表中显示图,而且图的数据也是来自于本表,出图的时候,不需要重新计算表。
参数:
datas:统计图生成图片所需要的数据;
captions:统计图指标的标题;
seriestitle:系列的标题;
maintitle:统计图标题;
gcell:统计图的源表元,钻取后的统计图,也显示在该表元上,该表元可以不传,不传时,就取默认的本表的第一个统计图表元;
其中:datas、captions、serestitle需要引用宏表达式的写法,比如<#=A2$#>
举例:
javascript:_zg('<#=c2$#>','<#=c1$#>','<#=A2#>',null,'HHH0')
//表示把c2浮动出来的数据显示在统计图表元 'HHH0'上,
5. _zmenu( )
函数体:_zmenu(configs)
说明:_zmenu函数会根据参数创建一个菜单并显示出来。
参数:
configs:一个二维数组,每个元素都对应一个菜单项,其组成为:[菜单项的文字,事件处理函数,事件处理函数的参数1,参数2,…]
举例:
_zmenu([["钻取A1", _zq, "A1"],["钻取A3", _zq, "A3"]])
另外:事件处理函数可以是一个字符串,即函数的名字,比如_zmenu([["钻取A1", "_zq","A1"]]
示例图:
6._zr( )
函数体:_zr(rpt,drillcell, params, leafrpt, leafparams)
说明:在报表模板的计算结果中,展开维的下级数据,类似对话框olap的展开功能。只需要在表元的链接属性中调用_zr,比如"javascript:_zr()"
参数:
rpt参数:为报表id或者报表名称,类似_zi函数的rpt参数。如果为"",默认为本表自己。
drillcell:为钻取表元。如果为"",则默认为表元自己。
params参数:报表参数。类似_zi函数的报表参数。它还支持几个特殊的参数:
indentcell:缩进表元(实现树形显示的效果)。如果钻取自己,默认是钻取表元自己;如果是显示其它表,默认是第一列的所有表元。值可以是表元名或数字。
数字:表示第几列的所有表元
表元:A2。A2浮动出来的所有表元。
range: 把计算结果的一部分显示在下面。可以是一个区域或者表元名
rect:left.top.right.bottom,比如0,1,2,2。right和bottom可以为-1,表示最右边。rect是结果表中的这个区域内的。
表元:A2,所有A2浮动出来的表元。
leafrpt和leafparams:钻取到叶子节点时,再往下钻就没有意义了。指定着两个参数,可以在钻到底时转到另外的报表,根据这两个参数为叶子表元自动生成新的链接_z(leafrpt, leafparams)。例子:
javascript:_zr() 钻取本表。
javascript:_zr("明细表", "@qx=200801") 钻到明细报表,计算时使用参数"@qx"。
javascript:_zr("明细表", "@qx=200801;range=A2") 钻到明细报表,只显示表元A2代表的浮动区域。
javascript:_zr(null, null, null, "明细表2", "@qx=200801;") 钻到叶子节点时跳转到明细表2,@qx是计算明细表2的参数。
举例:
javascript:_zr() 钻取本表。
javascript:_zr("明细表", "@qx=200801") 钻到明细报表,计算时使用参数"@qx"。
javascript:_zr("明细表", "@qx=200801;range=A2") 钻到明细报表,只显示表元A2代表的浮动区域。
javascript:_zr(null, null, null,"明细表2", "@qx=200801;") 钻到叶子节点时跳转到明细表2,@qx是计算明细表2的参数。
5. 其他函数
定义:
根据参数值进行报表指标数据过滤。此函数主要用在定义报表时,根据报表参数来定义过滤条件时,简化过滤条件的书写。
mkfilter("过滤指标1=报表参数1&过滤指标2=报表参数2...")
参数:
本函数的参数由多个报表参数与过滤指标组成。写法为:报表参数1=过滤指标1&报表参数2=过滤指标2...
示例:
(1)、mkfilter("XXB.HY_DM= @a")
输入:@a=A0101|B0101,则返回:XXB.HY_DMIN ['A0101','B0101']
说明:这个例子中xxb.hy_dm是代码维,输入的参数是两个条件,并且是代码中的代码,则根据输入的参数值进行过滤
(2)、mkfilter("dim(xxb.c4,'nsrxx')=@a")
输入:@a=abc,则返回:dim(xxb.c4,'nsrxx')='abc'
(3)、mkfilter("dim(xxb.c4,'nsrxx')like @a")
输入:@a=abc,则返回:dim(xxb.c4,'nsrxx')like 'abc%'
说明:这个例子中根据输入的参数abc进行模糊匹配。
(4)、mkfilter("dim(xxb.c4,'nsrxx')=@a")
输入:@a=abc|def|gti,则返回:dim(xxb.c4,'nsrxx')in ['abc','def','gti']
说明:这个例子中输入的参数件三个条件。
(5)、mkfilter("left(dim(xxb.c4,'nsrxx'))=@a")
输入:@a=abc,则返回:left(dim(xxb.c4,'nsrxx'))='abc'
(6)、mkfilter(xxb.hy_dm=@a)
输入:@a=A,则返回:xxb.hy_dm like 'A'
说明:这个例子中xxb.hy_dm是代码维,根据输入的参数值A进行模糊匹配。
(7)、mkfilter(xxb.hy_dm=@a)
输入:@a=A0101,则返回:xxb.hy_dm ='A0101'
说明:这个例子中xxb.hy_dm是代码维,根据输入的参数值A0101进行精确匹配。
(8)、mkfilter(xxb.hy_dm=@a)
输入:@a=A|B,则返回:left(xxb.hy_dm,1)in ['A','B']
说明:这个例子中xxb.hy_dm是代码维,输入的参数是两个条件,并且是代码中的左边一们,则根据输入参数值的左边一位进行过滤。
(9)、mkfilter(xxb.hy_dm=@a)
输入:@a=A,则返回:xxb.hy_dm like 'A%'
说明:同(6)
详细说明:
1、支持在输入参数时,输入逻辑表达式 如:“A>b & C<D”
2、支持在MKFILTER中有逻辑表达式
例如@kxlb为空 @je 为空@je1 为3 那么
mkfilter("(xxb.c5=@kxlb&xxb.c4=@je)|(xxb.c3=xxx)")
返回:xxb.c5=20 or xxb.c3=3
3、进行模糊条件查询时,输入的条件有限制,即输入方式应该是“ABC%”,目前不支持“%ABC%” 和“AB%C”的格式
4、在输入参数时,如果一个参数输入多个条件时,需要在输入框中加“=”,如:“=AB|CD”
2.OD
定义:Od(s1,s2)或Od(d,s2)
提供日期操作功能的函数,它对日期串进行指定格式的处理后,返回结果为日期字符串。
参数:
1.od(源时间数据字符串,操作符) eg:od('2006','y=2005')
年:操作符为'y' ,标准格式为xxxx(四位),eg:2006 表示2006年
半年:操作符为'hy',标准格式为x (一位),eg: 20061 表示2006年上半年
季度:操作符为'q',标准格式为x(一位),eg:20061 表示2006年第1季度
月:操作符为'm' ,标准格式为xx(两位),eg:200601 表示2006年1月
旬:操作符为't',标准格式为x(一位),eg:2006011 表示2006年1月上旬
日:操作符为'd',标准格式为xx(两位) ,eg:20060101 表示2006年1月1日
返回结果为 年年年年月月日日 形式的字符串
2.od(源时间数据日期型,操作符) eg:od(#20060101#,'y=2005')
年:操作符为'y' ,标准格式为#xxxxxxxx#,eg:#20060101# 表示2006年1月1日
月:操作符为'm',标准格式为#xxxxxxxx#,eg:#20060101# 表示2006年1月1日
日:操作符为'd', 标准格式为#xxxxxxxx#,eg:#20060101# 表示2006年1月1日
返回结果为 年年年年-月月-日日 形式的字符串
以上都支持多操作符的运算,用';'隔开即可
3. DIM
定义:
通常用于维,指标,条件中,表示维在数据库中的字段;这里的维包括通用维,多级维,单级维,但必须都要有对应的数据库表;对于COD文件型维,支持取级次,不支持取属性值;
参数:
1.dim(p1,p2)
参数p1: 表示维表元,可以是表元名,表达式,也可以是维名称;
比如:xxb.hy_dm, "行业代码",id()
参数p2: 表示维的级次,或者是维的属性,还可以是维表的字段名;
比如:0,1,2..., "行业门类","行业大类","hy_ml"
这里 0 表示最大级次;
例:dim(xxb.hy_dm,0)
= dim(xxb.hy_dm,"行业门类")
= dim(xxb.hy_dm,"hy_ml")
= dim("行业代码",0)
= dim("行业代码","行业门类")
= dim("行业代码","hy_ml")
dim(id(),"nsrmc")
注:
第二个参数如果是数字,则第一个参数对应的维可以是文件型维;
例: 如果xxb.hy_dm是文件型维:
dim(xxb.hy_dm,0) ,取的是第0级的前缀;
dim(xxb.hy_dm,"行业门类") 则不支持;
2.dim(p1,p2,p3)
参数p1,p2同上;
参数p3: 是时间参数,用于缓慢增长维,表示截至到维表p1指定参数p3的p2的值;
例:
dim(id(),"nsrmc", "200501--")就是取id()对应维表截止到200501月份的nsrmc字段的值;
注:
如果第一个参数是个常量,比如要取行业代码"A0100"对应的名称,则需要用到 diminf 函数了;
4. DIMINF
定义:
获得某维的值的信息。DIMINF(C1 C2),或DIMINF(C1 C2 I),或DIMINF(C1 C2 C3)。
参数:
C1:第一个参数,表示维的名字,如 HY_DM, 表示“行业代码”等;特殊情况是:“dw” 表示单位级次代码;
C2:第二个参数,表示代码,如 A0000;
C3,I:第三个参数可以是字符或者整型数,也可以没有第三个参数。如果没有第三个参数,那么直接返回代码对应的文字信息;如果有第三个参数且是整型,则返回第I个代码对应的属性;
如果有第三个参数且是字符串,则当字符串是:$PREFIX:则返回此代码所在级次的前缀字符串;如级次为1-2-2的行业代码中,A0000的前缀字符串为A。
$ISLEAF:是否是叶子节点,此时函数的返回值为T或F,也为字符型。
$LEVEL:返回第二个参数表示的代码在维中的级次,此时函数的返回值也为字符型其他情况返回相应属性对应的文字信息
示例:
返回维的值的信息
DIMINF('HY_DM',A0000),返回‘农、林、牧、渔业’
在维'HY_DM'中,A0000对应的文字信息为‘农、林、牧、渔业’,故返回‘农、林、牧、渔业’
级次为1-2-2的行业代码维hy_dm,diminf('hy_dm','A0000','$PREFIX')='A'
5. ARSEL
定义:ARSEL(R,L)
返回指定数组中符合条件的项目,形成的一个新数组
参数:
R:指定的数组
L:条件表达式
示例:
返回指定数组中符合条件的项目形成的一个新数组
arsel(a3$,@>0)
返回a3$中大于0的项目
6. ARSORT
定义:ARSORT(R,L)
对数组进行排序,返回排序后的数组
参数:
R:需要进行排序的数组
L:表示是升序还是降序,true表示按升序,false表示按降序,默认为升序
示例:
返回排序后的数组
ARSORT(a1:a5,b1,b3)
7. ARLEN
定义:ARLEN(R)
返回数组中项目的个数
参数:
R:指定的数组
示例:
返回数组中项目的个数,返回值为整数
ARLEN(a1:a5,b1,b3)=7
8.CALCINF
定义:CALCINF(C)
返回计算分析表时的相关信息,如计算用的跟节点,计算时的过滤条件,计算时的日志信息等
参数:
C:字符串
示例:
返回计算分析表时的相关信息
calcinf('rootid') 返回计算时的单位级次代码
calcinf('rootname') 返回计算时的单位级次名称,如西城区,东城区
calcinf('log') 返回计算的输出log
calcinf('sql') 返回计算执行的sql
calcinf('duration') 返回计算执行了多久,毫秒为单位的一个整形
calcinf('filter') 返回具体的过滤条件
calcinf('bbq') 返回具体的报表期
calcinf('calcparams') 返回计算参数,行如:a=1;b=2;c=3
calcinf('calcparams.@a') 返回某个计算参数@a的值
calcinf('calcparams.@a,txt') 返回某个枚举参数@a的显示值
calcinf('calcparams.@a,id') 返回某个枚举参数@a的实际值
calcinf('totalcount') 返回总共有多少条数据
calcinf('pagesize') 返回每页多少条数据
calcinf('startindex') 返回本页起始行
9. CLVAL
定义:CLVAL() 或者CLVAL(I1,I2) 或者 CLVAL(*,I1,I2)
返回指定行列号的表元的值
CLVAL()表示不指定行列号,则与SELF函数一样,返回公式所在表元的值
CLVAL(I1,I2)指定了行列号,则返回报表中坐标为(I1, I2)的表元的值
CLVAL(*,I1,I2)的第一个参数为一个表元,I1和I2为行列号偏移,
则返回相对参数表元偏移(I1,I2)的表元的值
参数:
*:表示任一表元
I1:行号,从0开始。可以为负数,比如-1表示表中最大的行数;-2为最大行数减1
I2:列号从0开始。可以为负数,比如-1表示表中最大的列数;-2为最大列数减1
示例:
返回指定行列号的表元的值,返回值的类型由表元类型决定
clval(),返回当前公式表元的值 clval(0,0),返回表元A1的值
clval(A1,0,1),返回表元B1的值
下面的例子中,函数只有两个参数,且均为负数。假设报表有4行5列,则
clval(-1,-1),返回表中行、列号最大值所组成的表元E4的值
clval(-2,-2),返回D3的值
clval(-3,-3),返回C2的值
10. CLINF
javascript:_zq('<#=clinf(self(),"name")#>')//#########
定义:clinf(*, C)
返回表元的属性的值。
参数:
*:表元任意表元
C:属性名。现在支持的属性有:caption、name、fullname、exp、@id、@txt、filter
示例:
以浮动表元a1为例,它的表达式为“sbxx.hy_dm”。在计算结果中,它有三个值:001--“工业”、002--“农业”、003--“第三产业”
caption:浮动表元内的维的名字。clinf(a1,"caption")返回“行业代码”
注:如果第一个参数为函数,则返回函数的名字,现在支持的函数有bbq()、id()
例如:clinf(bbq(),"caption")返回“报表期”
clinf(id(),"caption")返回“报表户”
exp:表元的表达式。Clinf(a1,"exp")返回“sbxx.hy_dm”
name:表元名。Clinf(a1,"name")返回“A1”
fullname:完整表元名。Clinf(a1,"fullname")返回“表名.A1”
@id:浮动表元的维的id。Clinf(a1,"@id")返回“001”。(另外的两个返回002和003)
@txt:浮动表元的维的显示值。Clinf(a1,"@txt")返回"工业"。(另外的两个返回“农业”和“第三产业”)
filter:是取某个表元的过滤条件,此参数常用在钻取链接,如javascript:_z("B1","@filter=<#=clinf('B'+asint(row()+1),'filter')#>"),当钻取时链接的表元不固定,或者过滤条件比较复杂时,用到此参数
11. COL
定义:COL(),或COL(*)
返回指定表元的列号,从0开始,如col(b2)返回1,如果不传递参数,则返回定义公式所在表元的列号
参数:
*:任意类型
示例:
返回指定表元的列号,返回值为整数
COL(b3)=1
12. ID
定义:ID( )
返回单位代码
参数:
无
示例:
返回单位代码
ID( )="420100"
13. PREDICT
定义:Predict(historyData, modelName, extraParameter)
根据历史记录值和选定的预测模型,返回预测值。
参数:
historyData :第一个参数:预测事件的历史纪录值,为数值型
modelName:第二个参数:用来预测的模型名称,为字符型
在Predict函数中,可供选择的模型有:
模型名称 | 说明 |
PolyOne | 一次多项式预测模型 |
PolyTwo | 二次多项式预测模型 |
PolyThree | 三次多项式预测模型 |
PolyFour | 四次多项式预测模型 |
Expo | 指数预测模型 |
MoveAve | 平均移动预测模型 |
OnceExp | 一次指数预测模型 |
TwiceExp | 二次指数预测模型 |
WinterSeason | 温特线性季节指数平滑预测模型 |
BoxJenkins | 博克斯-詹金斯预测模型 |
Gray | 灰色预测模型 |
extraParameter :第三个参数:当使用某些模型时,用来输入额外参数,为字符型
模型名称 | 参数类型及参数名 | 含义 | 说明 |
OnceExp | int maxM | 精确度 | (有待实现) |
TwiceExp | int maxM | 精确度 | (有待实现) |
| int m | 超期步长 | (有待实现) |
WinterSeason | int seasonLength | 季节(周期)长度 |
|
| int m | 超期步长 | (有待实现) |
BoxJenkins | int maxM | 精确度 | (有待实现) |
| int times | 最大迭代次数 | (有待实现) |
| double epsilon | 精确度 | (有待实现) |
示例:
根据历史记录值和选定的预测模型,预测得到下一期的结果。
predict(B2$,'PolyOne')表示根据浮动分析表中B2浮动产生的数据,用“PolyOne”来预测结果
14. REPLACEREGEX
定义:REPLACEREGEX(C1,C2,C3,L)
替换某字符串中的串
参数:
C1:第一个参数:需要被替换的字符串
C1:第一个参数:第二个参数:需要被替换的第一个参数中的子串
C1:第一个参数:第三个参数:用这个参数来替换第二个参数表示的子串。如果没有这个参数,默认用空串""来替换。
L:第四个参数:为true时,替换所有符合的子串;
为false时,只替换第一个符合的子串。默认为true。
示例:
将字符串中某一子串替换为另一个字符串,返回替换后的字符串。
replaceregex('23123abcd23123','23123','N',true)返回NabcdN
replaceregex('23123abcd23123','23123','N',false) 返回Nabcd23123
replaceregex('23123abcd23123','23123') 返回abcd
15. ROW
定义:ROW()或ROW(*)
返回指定表元的行号,从0开始,如col(b2)返回1,
如果参数为空,则返回定义公式所在表元的行号
参数:
*:任意类型
示例:
返回指定表元的行号,返回值为整数
ROW(b3)=2
16. SEL1
定义:SEL1(C1,C2),或SEL1(C1,I),或SEL1(C1)
执行一个sql语句,并将第一行第一列的值当字符串返回,如果没有数据返回null
参数:
C1:可以是一个sql语句,也可以是一个sql数据源的名字。
C2:如果第一个参数是sql语句的话,那么第二个参数可以是数据库连接池的名字;
如果不指定第二个参数,那么缺省的使用当前任务的缺省连接池。
如果第一个参数是sql数据源的名字的话,那么第二个参数可以是一个字段名或者字段序号,表示返回sql数据源的结果的那列的值
示例:
返回sql语句的第一行第一列的值,或者返回某数据源的某一字段的值
sel1('rs1'),表示取rs1源的第一行的第一列的值SEL1("select * from xxb", 1), 返回该数据源的第一行第一列的值SEL1("rs2", "mc"), 返回rs2的mc字段的值
17. SELF
定义:SELF()
返回当前表元的值
参数:
无
示例:
返回当前表元的值,返回值类型由表元类型决定
SELF()
18. UPID
定义:UPID()
返回当前单位的上级代码,如果不成功,则返回空。
参数:
无
示例:
返回当前单位的上级代码
UPID()="420000"
19. _rk
定义:_rk(zb1,"asc|desc",0|1|2)
返回指标在维中的排名,对于相同排名,根据参数,可以选择不同的处理方式。
参数:
zb1:需要进行排名的指标
asc|desc:表示对指标是进行升序还是降序排名,asc表示升序,desc表示降序
0|1|2:对指标排名时,相同的排名时的处理方式,具体用法请看举例
示例:
返回指标在维中的排名
rk(zb1,"asc",0):将指标在维中根据升序排名,如果有相同的名次,则对名次的处理方法为:1 2 24 ,即相同的名次并列,没有第3名。
_rk(zb1,"asc",1):将指标在维中根据升序排名,如果有相同的名次,则对名次的处理方法为:1 2 2 3 ,即相同的名次并列,但有第3名。
_rk(zb1,"asc",2):将指标在维中根据升序排名,如果有相同的名次,则对名次的处理方法为:1 2 3 4 ,即忽略相同的名次。
如果是降序,则处理方法与升序相似:
_rk(zb1,"desc",0):将指标在维中根据升序排名,如果有相同的名次,则对名次的处理方法为:4 2 2 1 。
20. _ZF
定义:_ZF(num)
对某一指标计算求出"(本期-去年同期)/去年同期"的值,即同比增幅,返回值为数值型。此函数只能用在报表期主题的表中,如年报、月报、季报等。
参数:
num:需要计算同比增幅的指标,为主题表中的指标。
示例:
求主题表中某一指标的同比增幅
_ZF(T03_1.C3),表示计算指标T03_1.C3的同比±%
21._HBZF
定义:_HBZF(num)
对某一指标计算求出"(本期-上期)/上期"的值,即环比增幅,返回值为数值型。此函数只能用在报表期主题的表中,如年报、月报、季报等
参数:
num:需要计算环比增幅的指标,为主题表中的指标。
示例:
求主题表中某一指标的环比增幅
_HBZF(T03_1.C3),表示计算指标T03_1.C3的环比增幅
22._ZJE
定义:_ZJE(num)
对某一指标计算求出"本期-去年同期"的值,即同比增减额,返回值为数值型。此函数只能用在报表期主题的表中,如年报、月报、季报等。
参数:
num:需要计算同比增减额的指标,为主题表中的指标。
示例:
求主题表中某一指标的同比增减额
_ZJE(T03_1.C3),表示计算指标T03_1.C3的同比增减额
23. _HBZJE
定义:_HBZJE(num)
对某一指标计算求出"本期-上期"的值,即环比增减额,返回值为数值型。此函数只能用在报表期主题的表中,如年报、月报、季报等。
参数:
num:需要计算环比增减额的指标,为主题表中的指标。
示例:
求主题表中某一指标的环比增减额
_HBZJE(T03_1.C3),表示计算指标T03_1.C3的环比增减额
24. _NCZJE
定义:_NCZJE(num)
对某一指标计算求出"(本期-年初)"的值,即年初增减额,返回值为数值型;这里年初指的是本期对应该年的第一期的值,例:月报就是该年第一月的值。此函数只能用在报表期主题的表中,如年报、月报、季报等。
参数:
num:需要计算年初增减额的指标,为主题表中的指标。
示例:
求主题表中某一指标的年初增减额
_NCZJE(T03_1.C3),表示计算指标T03_1.C3的年初增减额
25. _NCZF
定义:_NCZF(num)
对某一指标计算求出"(本期-年初)/年初"的值,即年初增幅,返回值为数值型;这里年初指的是本期对应该年的第一期的值,例:月报就是该年第一月的值。此函数只能用在报表期主题的表中,如年报、月报、季报等。
参数:
num:需要计算年初增幅的指标,为主题表中的指标。
示例:
求主题表中某一指标的年初增幅
_NCZF(T03_1.C3),表示计算指标T03_1.C3的年初增幅
6. 算子
1. _S
定义:_S(zb1)
对参数zb1求和
参数:
Zb1:为主题表数据库中的某一字段,整型或浮点型数值。
示例:
对主题表数据库中某一字段的所有记录求和;返回值为数值。
2. _A
定义:_A(zb1)
求指定参数的平均数
参数:
Zb1:为主题表数据库中的某一字段,整型或浮点型数值。
示例:
求数据库中某一字段所有记录的平均数;返回值为数值。如果zb为null,则不参与统计。若要统计null,则此函数应写作_S(zb)/_N(*)。对主题表数据库中某一字段的所有记录求和;返回值为数值。
3. _N
定义:_N(zb,true) 或者_N(zb,false),_N(zb)
求所有参数包含的元素的个数,当一个参数为数组类型时,该参数包含的元素个数为数组的长度。即计数。
参数:
Zb1:为主题表数据库中的某一字段,整型或浮点型数值。
true(false): 如果第2个参数为true,表示distinct,即去掉重复的记录;如果为false,表示忽略重复的记录;如果第2个参数为空,默认为false
示例:
求数据库中某一字段的记录计数;返回值为整数。
_N(A1,A2,A3)=3;
假设B1表元浮动出10个表元,则_N(A1,A2,A3,B1$)=13
4. _MAX
定义:_MAX(zb)
求一组参数中的最大值
参数:
Zb: 为主题表数据库中的某一字段,整型或浮点型数值。
示例:
求主题表数据库中的某一字段在所有记录中的最大值
5. _MIN
定义:_MIN(zb)
求一组参数中的最小值
参数:
Zb: 为主题表数据库中的某一字段,整型或浮点型数值。
示例:
求主题表数据库中的某一字段在所有记录中的最小值
请先登录