6. 表达式
1. Case(Switch)
Case语句的这种形式也称为CASE(Lookup)形式。先检验expression1的值,然后检验WHEN表达式。如果expression1与任何WHEN表达式匹配,则会分配对应THEN表达式中的值。
如果与任何一个WHEN表达式都不匹配,则会分配在ELSE表达式中指定的缺省值。如果未指定ELSE表达式,系统将自动添加ELSENULL。
如果expression1与多个WHEN子句中的表达式匹配,则只分配第一次匹配之后的表达式。 语法
CASEexpression1
WHENexpression2THENexpression2 {WHENexpression...THENexpression...} ELSEexpression END
其中: CASE
开始CASE语句。后面必须跟随表达式和一个或多个WHEN和THEN语句、(可选)ELSE语句以及END关键字。 WHEN
指定要满足的条件。 THEN
指定在满足对应的WHEN表达式的情况下要分配的值。 ELSE
指定在不满足任何一个WHEN条件的情况下要分配的值。如果忽略,则会假定ELSENULL。 END
结束CASE语句。 示例
CASEScore-par
WHEN-5THEN'BirdieonPar6' WHEN-4THEN'MustbeTiger' WHEN-3THEN'Threeunderpar'
WHEN-2THEN'Twounderpar' WHEN-1THEN'Birdie' WHEN0THEN'Par' WHEN1THEN'Bogey' WHEN2THEN'DoubleBogey' ELSE'TripleBogeyorWorse' END
2. Case(If)
Case语句的此形式评估每个WHEN条件,如果满足,则会分配对应THEN表达式中的值。
如果不满足任何一个WHEN表达式,则会分配在ELSE表达式中指定的缺省值。如果未指定ELSE表达式,系统将自动添加ELSENULL。 语法 CASE
WHENrequest_condition1THENexpression1 {WHENrequest_condition2THENexpression2} {WHENrequest_condition...THENexpression...} ELSEexpression END 其中: CASE
开始CASE语句。后面必须跟随一个或多个WHEN和THEN语句、(可选)ELSE语句以及END关键字。 WHEN
指定要满足的条件。 THEN
表示在满足对应WHEN表达式的情况下要分配的值。 ELSE
指定不满足任何一个WHEN条件的情况下要分配的值。如果忽略,则会假定ELSENULL。 END
结束CASE语句。 示例 CASE
WHENscore-par<0THEN'UnderPar' WHENscore-par=0THEN'Par'
WHENscore-par=1THEN'Bogie' WHENscore-par=2THEN'DoubleBogey' ELSE'TripleBogeyorWorse' END
7. 时间序列计算
1. Ago
一个时间序列聚合函数, 用于计算从当前时间追溯到以前的指定时段之间的聚合值。例如, Ago 可以生成当前季度每个月的销售额以及相应的季前销售额。 语法
AGO(expr, time_level, offset) 其中
expr 是至少引用一个度量列的表达式。
time_level 是时段的类型, 例如季度, 月或年,必须使用在模型中设置的时间层级,分析中不可用, 如果不设置,则会根据当前SQL的级别设置 如果要在 Answer中设置级别,则必须使用
AGO(\基础项\预算金额\时间\时间层次\年\
时间维度中需要拉出级别层次
offset 是一个整型, 表示时间偏移量,向前为负,向后为正 例如:
去年同期:AGO(\- OM Order Line\销量\\ 策略:
去年上期:AGO(TODATE(EXPR,YEAR),YEAR,-1)) – AGO(EXPR,YEAR,-1)
月累计:TODATE(EXPR,MONTH)
同期月累计: AGO(TODATE(EXPR,MONTH),MONTH,-12) 上月累计(上月同一天):
IFNULL(\- OM Order Line\年累计实际销售额2\- IFNULL(TODATE(\- OM Order Line\销售额
2\
\
Line\上月销售额2\ IFNULL(AGO(TODATE(\- OM Order Line\销售额
2\\Month\),
\
2. Todate
一个时间序列聚合函数, 用于累计从指定时段开始到当前时间的度量属性。例如, 此函数可以计算年初至今的销售额。 语法
TODATE(expr, time_level) 其中
expr 是一个至少引用一个度量列的表达式。 time_level 是时段的类型, 例如季度, 月或年。
例子参见 AGO
3. PeriodRolling
此函数计算在距当前时间的 x 个时间单位开始到 y 个时间单位结束这一时段内的度量总和。
时间单位由该函数第一个参数中度量的度量级别以及该函数所属查询的查询级别确定。 语法
PERIODROLLING(measure, x [,y][,hierarchy]) 说明
度量是度量列的名称。
x 是一个整数, 指定距当前时间的偏移时间,当前为0,向前则为负,向后则为正数。
y 指定该函数将计算的时间单位数,当前则为0,向前为负,向后为正。 hierarchy 是可选参数, 指定在时间维中要用于计算时间窗口的层次的名称, 如年, 月, 日。
如果是不限定范围,则可以使用UNBOUND,如
PERIODROLLING (measure, -UNBOUND, 0)就是取从最开始的时间到现在的SUM
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库BIEE分析及报表函数使用详解(5)在线全文阅读。
相关推荐: