BIEE11G常用函数及使用说明

时间:2022-12-14 11:14:03

BIEE常用函数使用手册

1、AGGREGATE AT

此函数根据指定的级别聚合列。使用AGGREGATE AT 可确保始终在关键字AT 之后指定的级别执行度量聚合,而无论WHERE 子句如何。

语法

AGGREGATE(expr AT level [, level1, levelN])

其中:

expr 是至少引用一个度量列的任何表达式。

level 是要在其中聚合的级别。您可以选择性地指定多个级别。

您不能指定这样的级别:该级别源自的维所包含的级别将用作您在第一个参数中指定的度量的度量级别。例如,您不能以AGGREGATE(yearly_sales
AT month) 形式写入该函数,这是因为“month”源自的时间维与用作“yearly_sales”的度量级别的时间维相同。

以下示例显示了AGGREGATE AT 函数和示例结果:

SELECT month, year, AGGREGATE(sales AT Year)FROM timeseriestestingWHERE year = 1994 AND month = 12

由于AGGREGATE AT 运算符始终在谓词之前执行,因此它始终返回在关键字AT 后指定的时间级别的正确合计。

2、AVG

此函数计算结果集中表达式的平均值。它必须采用数值表达式作为参数。

请注意,AVG 的分母为聚合的行数。因此,在 Oracle Business Intelligence 中进行计算时,使用AVG(x) 通常是错误的。应当改为手动写入表达式,以便控制分子和分母 (x/y)。

语法

AVG(numExpr)

其中:

numExpr 是求值结果为数值的任何表达式。

3、COUNT

此函数计算表达式中包含非空值的行数。该表达式通常为列名,此种情况下,将返回该列中包含非空值的行数。

语法:

COUNT(expr)

其中:

expr 为任意表达式。

4、COUNTDISTINCT

此函数对COUNT 函数进行相异处理。

语法

COUNT(DISTINCT expr)

其中:

expr 为任意表达式。

5、COUNT(*)

此函数计算行数。

语法

COUNT(*)

例如,如果名为 Facts 的表包含 200,000,000 行,示例请求将返回显示的结果:

SELECT COUNT(*) FROM Facts

6、MAX

此函数计算符合数值表达式参数要求的行的最大值 (最大数值)。

语法

MAX(numExpr)

其中:

numExpr 是求值结果为数值的任何表达式。

7、STDDEV

此函数返回一组值的标准差。返回类型始终为双精度值。STDEV_SAMP 是STDDEV 的同义词。

语法

STDDEV([ALL | DISTINCT] numExpr)

其中:

numExpr 是求值结果为数值的任何表达式。

如果指定ALL,则会为数据集内的所有数据计算标准差。

如果指定DISTINCT,则会在计算中忽略所有重复项。

如果未指定任何内容 (默认值),则会考虑所有数据。

8、SUM

此函数计算通过累加符合数值表达式参数要求的所有值得出的总和。

语法

SUM(numExpr)

其中:

numExpr 是求值结果为数值的任何表达式。

9、TOPN

此函数按从 1 到 n 的顺序依次排列表达式参数中最大的 n 个值,1 对应于最大的数值。TOPN 函数基于结果集内返回的值运行。请求只能包含一个TOPN 表达式。

语法

TOPN(numExpr, integer)

其中:

numExpr 是求值结果为数值的任何表达式。

integer 是任意正整数。它表示结果集内显示的最高排名的数字,1 为最高排名。

10、MAVG

此函数计算结果集内最后 n 行数据 (包括当前行) 的移动平均值。

第一行的平均值等于第一行的数值表达式。第二行的平均值通过计算前两行数据的平均值得出。第三行的平均值通过计算前三行数据的平均值得出,依此类推,直到您到达第 n 行为止,第 n 行的平均值根据最后 n 行数据计算得出。

语法

MAVG(numExpr, integer)

其中:

numExpr 是求值结果为数值的任何表达式。

integer 是任意正整数。它表示最后 n 行数据的平均值。

11、MSUM

此函数计算最后 n 行数据 (包括当前行) 的移动总和。

第一行的总和等于第一行的数值表达式。第二行的总和通过计算前两行数据的总和得出。第三行的总和通过计算前三行数据的总和得出,依此类推。在您到达第 n 行以后,根据最后 n 行数据计算总和。

语法

MSUM(numExpr, integer)

其中:

numExpr 是求值结果为数值的任何表达式。

integer 是任意正整数。它表示最后 n 行数据的平均值。

12、RSUM

此函数根据迄今为止出现的记录来计算运行总和。第一行的总和等于第一行的数值表达式。第二行的总和通过计算前两行数据的总和得出。第三行的总和通过计算前三行数据的总和得出,依此类推。

语法

RSUM(numExpr)

其中:

numExpr 是求值结果为数值的任何表达式。

在 Answers 中,您还可以使用以下替代语法:

RSUM(expression1 [BY expression2[, expression3[, ...]]])

其中:

expression1, expression2, expression3 ... 可以是任何列引用或列引用中的算术表达式。

BY 子句导致RSUM 计算从任何BY 列值不同于上一行的行重新开始。

13、RCOUNT

此函数采用一组记录作为输入,并计算迄今为止出现的记录数量。

语法

RCOUNT(expr)

其中:

expr 是任何数据类型的表达式。

在 Answers 中,您还可以使用以下替代语法:

RCOUNT(expression1 [BY expression2[, expression3[, ...]]])

其中:

expression1, expression2, expression3 ... 可以是任何列引用或列引用中的算术表达式。

BY 子句导致RCOUNT 计算从任何BY 列值不同于上一行的行重新开始。

14、BIT_LENGTH

此函数返回指定字符串的长度,以位为单位。每个 Unicode 字符长度为 2 个字节 (相当于 16 位)。

语法

BIT_LENGTH(strExpr)

其中:

strExpr 是任意求值结果为字符串的表达式。

15、CHAR_LENGTH

此函数返回指定字符串的长度,以字符数为单位。字符串的长度不包括前导和尾随空白字符。

语法

CHAR_LENGTH(strExpr)

其中:

strExpr 是任意求值结果为字符串的表达式。

16、CONCAT

此函数有两种形式。第一种形式连接两个字符串。第二种形式使用字符串连接字符连接两个以上的字符串。

第 1 种形式 (连接两个字符串) 的语法

CONCAT(strExpr1, strExpr2)

其中:

strExprs 是求值结果为逗号分隔字符串的表达式。

此示例请求返回显示的结果。

SELECT DISTINCT CONCAT('abc', 'def') FROM employee
CONCAT('abc', 'def')

结果:

abcdef

第 2 种形式 (连接两个以上字符串) 的语法

CONCAT(strExpr1, strExpr2 || strExpr3)

其中:

strExprs 是求值结果为逗号分隔字符串和字符串连接运算符 || (双竖线) 的表达式。CONCAT 函数首先将 strExpr2 与 strExpr3连接在一起以生成中间字符串,然后将 strExpr1 和中间字符串连接在一起以生成最终字符串。

此示例请求返回显示的结果。

SELECT DISTINCT CONCAT('abc','def' || 'ghi') FROM employee

结果:

Abcdefghi

17、LEFT

返回从字符串左侧算起的指定字符数。

语法

LEFT(strExpr, integer)

其中:

strExpr 是任意求值结果为字符串的表达式。

integer 是任意正整数,它表示从字符串左侧开始返回的字符数。

18、LENGTH

此函数返回指定字符串的长度,以字符数为单位。返回的长度不包括任何尾随空白字符。

语法

LENGTH(strExpr)

其中:

strExpr 是任意求值结果为字符串的表达式。

19、LOCATE

此函数返回字符串在另一个字符串中的数字位置。如果在要在其中执行搜索的字符串中未找到要搜索的字符串,该函数将返回值0。

语法

LOCATE(strExpr1, strExpr2)

其中:

strExpr1 是任意求值结果为字符串的表达式。它标识要搜索的字符串。

strExpr2 是任意求值结果为字符串的表达式。它标识要在其中执行搜索的字符串。

此示例返回 4 作为字母 d 在字符串 abcdef 中的数字位置:

Locate('d', 'abcdef')

此示例返回 0,因为在要在其中执行搜索的字符串中找不到字母 g。

Locate('g', 'abcdef')

20、LOWER

此函数将字符串转换成小写字母。

语法

LOWER(strExpr)

其中:

strExpr 是任意求值结果为字符串的表达式。

21、REPEAT

此函数将指定的表达式重复 n 次。

语法

REPEAT(strExpr, integer)

其中:

strExpr 是任意求值结果为字符串的表达式。

integer 是任意正整数,它表示字符串的重复次数。

此示例重复 abc 四次:

REPEAT('abc', 4)

22、REPLACE

此函数将指定字符表达式中的一个或多个字符替换为一个或多个其他字符。

语法

REPLACE(strExpr1, strExpr2, strExpr3)

其中:

strExpr1 是任意求值结果为字符串的表达式。这是要替换其中字符的字符串。

strExpr2 是任意求值结果为字符串的表达式。第二个字符串标识要从第一个字符串中替换掉的字符。

strExpr3 是任意求值结果为字符串的表达式。第三个字符串指定要替换到第一个字符串中的字符。

在字符串 abcd1234 中,字符 123 将替换为字符串 zz:

Replace('abcd1234', '123', 'zz')

结果:

abcdzz423、RIGHT

此函数返回从字符串右侧算起的指定字符数。

语法

RIGHT(strExpr, integer)

其中:

strExpr 是任意求值结果为字符串的表达式。

integer 是任意正整数,它表示从字符串右侧开始返回的字符数。

此示例返回字符串 123456 最右侧的三个字符:

SELECT right('123456', 3) FROM table

结果:

456

24、SUBSTRING

此函数从固定字符数开始在原始字符串中创建新字符串。

语法

SUBSTRING(strExpr FROM starting_position)

其中:

strExpr 是任意求值结果为字符串的表达式。

starting_position 是任意正整数,它表示从字符串左侧数起的第几个字符处开始生成结果。

25、UPPER

此函数将字符串转换成大写字母。

语法

UPPER(strExpr)

其中:

strExpr 是任意求值结果为字符串的表达式。

26、ABS

此函数计算数值表达式的绝对值。

语法

ABS(numExpr)

其中:

numExpr 是求值结果为数值的任何表达式。

27、ROUND

此函数将数值表达式的值四舍五入到 n 位精度。

语法

ROUND(numExpr, integer)

其中:

numExpr 是求值结果为数值的任何表达式。

integer 是任意正整数,它表示精度的位数。

以下示例返回的结果为 2.17。

ROUND(2.166000, 2)

28、TRUNCATE

此函数截断小数,以返回从小数点开始算起的指定位数。

语法

TRUNCATE(numExpr, integer)

其中:

numExpr 是求值结果为数值的任何表达式。

integer 是任意正整数,它表示从小数点位置右侧返回的字符数。

以下示例返回 45.12:

TRUNCATE(45.12345, 2)

以下示例返回 25.12:

TRUNCATE(25.126, 2)

29、CURRENT_DATE

此函数返回当前日期。该日期由运行 Oracle BI Server 的系统确定。

语法

CURRENT_DATE

30、CURRENT_TIME

此函数返回当前时间。该时间由运行 Oracle BI Server 的系统确定。

语法

CURRENT_TIME(integer)

其中:

integer 是任意整数,它表示显示零点几秒的精度的位数。该参数是可选的;未指定该参数时,函数返回默认精度。

31、CURRENT_TIMESTAMP

此函数返回当前日期/时间戳。该时间戳由运行 Oracle BI Server 的系统确定。

语法

CURRENT_TIMESTAMP(integer)

其中:

integer 是任意整数,它表示显示零点几秒的精度的位数。该参数是可选的;未指定该参数时,函数返回默认精度。

32、NOW

此函数返回当前时间戳。NOW 函数等同于CURRENT_TIMESTAMP 函数。

语法

NOW()

33、QUARTER_OF_YEAR

此函数返回一个介于 1 和 4 之间的数字,该数字对应于指定日期位于一年中的哪一季度。

语法

QUARTER_OF_YEAR(dateExpr)

其中:

dateExpr 是求值结果为日期的任意表达式。

34、TIMESTAMPADD

此函数将指定的时间间隔数添加到指定的时间戳,并返回单个时间戳。

最简单的情况是,此函数根据时间间隔将指定的整数值与时间戳的适当组件相加。加一个星期时,会转换为加七天;而加一个季度时,会转换为加三个月。负的整数值会导致减去时间 (例如将时间倒推)。

指定的组件溢出 (例如超过 60 秒、24 小时、12 个月等) 时,会迫使在下一个组件中加上合适的时间量。例如,与时间戳的天组件相加时,此函数会考虑溢出,并且会计算特定月中的天数 (对于闰年,二月份会按 29 天计算)。

与时间戳的月组件相加时,此函数会验证生成的时间戳中的天组件是否有足够的天数。例如,将 1 个月与 2000-05-31 相加不会生成 2000-06-31,因为六月份没有 31 号。此函数会将天组件减少到该月的最后一天,在本示例中即为 2000-06-30。

对于月组件为二月并且天组件为 29 (即闰年中二月的最后一天) 的时间戳,与该时间戳的年组件相加时,会发生类似的问题。如果生成的时间戳不是闰年,则该函数会将天组件减少到 28。

这些操作符合 Microsoft SQL Server 以及 Oracle 数据库的本机 OCI 接口的行为。

语法

TIMESTAMPADD(interval, intExpr, timestamp)

其中:

interval 是指定的时间间隔。有效值为:

· SQL_TSI_SECOND

· SQL_TSI_MINUTE

· SQL_TSI_HOUR

· SQL_TSI_DAY

· SQL_TSI_WEEK

· SQL_TSI_MONTH

· SQL_TSI_QUARTER

· SQL_TSI_YEAR

intExpr 是求值结果为整数值的任意表达式。