特定于供应商的函数 常量 常量是可在表达式中使用的固定不变的值。 运算符 运算符指定运算符两边的值将会发生什么运算。运算符与函数相似,它们均可处理数据项并返回结果。 日期 插入当前系统日期。 date-time 插入当前系统日期和时间。 带时区的时间 插入带时区的零时间。 带时区的时间戳记 插入带时区的时间戳记示例。 插入 false 值。 间隔 插入零时间间隔:000 00:00:00.000。 interval year 插入零时间间隔(单位为年):0 年。 interval month 插入零时间间隔(单位为月):0 个月。 interval year to month 插入零时间间隔(单位为年到月):0000-00 年到月。 interval day 插入零时间间隔(单位为天):0 天。 interval hour 插入零时间间隔(单位为小时):0 小时。 interval minute 插入零时间间隔(单位为分钟):0 分钟。 interval second 插入零时间间隔(单位为秒):0 秒。 interval day to hour 插入零时间间隔(单位为日到小时):0 00 日到小时。 interval day to minute 插入零时间间隔(单位为日到分钟):0 00:00 日到分钟。 interval day to second 插入零时间间隔(单位为日到秒):0 00:00:00.000000000 日到秒。 interval hour to minute 插入零时间间隔(单位为小时到分钟):00:00 小时到分钟。 interval hour to second 插入零时间间隔(单位为小时到秒):00:00:00.000000000 小时到秒。 interval minute to second 插入零时间间隔(单位为分钟到秒):00:00.000000000 分钟到秒。 当不符合表达式条件时插入“空值”。 数字 插入数字 0,可使用新的数字值替换。 字符串 插入由两个单引号表示的空字符串,可在这两个单引号间输入字符串。 时间 插入当前系统时间。 插入 true 值。
标识表达式的开头。 ( 表达式 ) 标识表达式的结尾。 ( 表达式 ) 两个数字值相乘。 值1 * 值2 , 隔开表达式的各个部分。 表达式 ( 参数1, 参数2 ) 两个数字值相除。 值1 / 值2 连接或合并字符串。 字符串1 || 字符串2 两个数字值相加。 值1 + 值2 两个数字值相减或对数字值取负。 值1 - 值2 或 - 值 对比“值1”和“值2”所代表的值,并返回小于“值2”的值。 值1 < 值2 对比“值1”和“值2”所代表的值,并返回小于或等于“值2”的值。 值1 <= 值2 对比“值1”和“值2”所代表的值,并返回不等于“值2”的值。 值1 <> 值2 对比“值1”和“值2”所代表的值,并返回等于“值2”的值。 值1 = 值2 对比“值1”和“值2”所代表的值,并返回大于“值2”的值。 值1 > 值2 分隔文字成员表达式中的组件。 [namespace].[dimension].[hierarchy].[level]->[L1] 对比“值1”和“值2”所代表的值,并返回大于或等于“值2”的值。 值1 >= 值2 如果表达式两侧的条件均为真,那么返回“true”。 参数1 and 参数2 与汇总表达式配合使用,用于定义要根据查询中的分组列进行调整的作用域。该作用域是上下文相关的。 aggregate_function ( 表达式 AUTO ) 确定某个值是否在给定范围之内。 between 值1 and 值2 表达式 范例:[收入] between 200 and 300 结果:返回收入介于 200 与 300 之间的结果数。 Revenue Between ---- ---- $332.06 false $230.55 true $107.94 false 与 when、then、else 和 end 配合使用。Case 能够识别定义了 when、then 和 else 操作的特定情形的开头。 case 表达式 { when 表达式 then 表达式 } [ else 表达式 ] end 确定“字符串1”是否包含“字符串2”。此语法支持两个元字符:百分比符号 (%) 表示零个、一个或多个字符,下划线符号 (_) 表示任意字符。可选的 LITERAL 关键字指示如何解释“%”和“_”。存在 LITERAL 关键字时,“%”和“_”不应被视为元字符(请参阅示例 3 和 5)。否则,在没有 LITERAL 关键字的情况下,“%”和“_”的行为与元字符一样(请参阅示例 1、2 和 4)。 字符串1 contains [LITERAL] 字符串2 示例 1:[PRODUCT_LINE] contains 'door' 结果 1:Outdoor Equipment 示例 2:[PRODUCT_LINE] contains 'Golf%' 结果 2:Golf Equipment 示例 3:[PRODUCT_LINE] contains literal 'Golf%' 结果 3:Golf% 示例 4:[PRODUCT_LINE] contains 'Current_Year%' 结果 4:Current Year Price, Current Year Price%, Current_Year Price%。 示例 5:[PRODUCT_LINE] contains literal 'Current_Year%' 结果 5:Current_Year%。 可以用作成员汇总函数的第一个参数的关键字。GO 数据仓库 (查询) 数据包中的“总收入 (按国家/地区)”示样报表中会显示此函数。 聚合函数 ( currentMeasure within set 表达式 ) current_date 返回数据库的当前日期。 current_date 与 lookup 句型结构配合使用。 lookup (....) in (....) default (....) 聚合表达式中使用的关键字,用于仅包括出现的独特值。另请参见 unique 函数。 distinct 数据项 示例:count ( distinct [OrderDetailQuantity] ) 结果:1704 与 if 或 case 句型结构配合使用。如果 if 条件或 case 表达式不为 true,那么会使用 else 表达式。此函数出现在“GO 数据仓库(分析)”数据包中的“2005 年排名前 10 位的零售商”示样报表中。 if ( 条件 ) then .... else ( 表达式 ) , 或者 case .... else ( 表达式 ) end 标识 case 或 when 句型结构的结尾。 case .... end 确定“字符串1”是否以“字符串2”结尾。此语法支持两个元字符:百分比符号 (%) 表示零个、一个或多个字符,下划线符号 (_) 表示任意字符。可选的 LITERAL 关键字指示如何解释“%”和“_”。存在 LITERAL 关键字时,“%”和“_”不应被视为元字符(请参阅示例 3 和 5)。否则,在没有 LITERAL 关键字的情况下,“%”和“_”的行为与元字符一样(请参阅示例 1、2 和 4)。 字符串1 ends with [LITERAL] 字符串2 示例 1:[PRODUCT_LINE] ends with 'Equipment' 结果 1:Camping Equipment, Golf Equipment 示例 2:[PRODUCT_LINE] ends with '%Equipment' 结果 2:Golf Equipment, Camping Equipment 示例 3:[PRODUCT_LINE] ends with literal 'Equipment%' 结果 3:Equipment% 示例 4:[PRODUCT_LINE] ends with '%Price' 结果 4:Product Price, Current_Year Price 示例 5:[PRODUCT_LINE] ends with literal '%Price' 结果 5:%Price 确定“字符串1”是否与“字符串2”的模式匹配,并且在模式字符串中将字符“字符型”可选地用作转义字符。 字符串1 LIKE 字符串2 [ ESCAPE 字符型] 示例:[PRODUCT_LINE] like“G%” 结果:所有产品系列都以“G”开始。 示例:[PRODUCT_LINE] like“%Ga%”escape“a” 结果:所有产品系列都以“G%”结束。 与汇总表达式配合使用,用于定义查询中聚合的作用域。 聚合函数 ( 表达式 for 表达式 { , 表达式 } ) 与汇总表达式配合使用,用于定义要根据查询中的分组列子集进行调整的作用域。与 for 子句等效。 聚合函数 ( 表达式 for ANY 表达式 { , 表达式 } ) 与汇总表达式配合使用,其定义的作用域将是查询中所有指定的分组列。另请参阅 for 子句。 聚合函数 ( 表达式 for ALL 表达式 { , 表达式n } ) 与汇总表达式配合使用,其设置的作用域将是整个查询。另请参阅 for 子句。GO 数据仓库 (分析) 数据包中的“客户退货和满意度”示样报表中会显示此函数。 聚合函数 ( 表达式 for report ) 与 then 和 else 句型结构配合使用。if 定义一个条件;如果 if 条件为 true,那么会使用 then 表达式。如果 if 条件不为 true,那么会使用 else 表达式。此函数出现在“GO 数据仓库(分析)”数据包中的“2005 年排名前 10 位的零售商”示样报表中。 if ( 条件 ) then ( 表达式 ) else ( 表达式 ) 确定“表达式1”是否存在于给定的表达式列表中。 表达式1 in ( 表达式列表 ) 确定“表达式1”是否存在于给定的常量值或范围列表中。 表达式1 in_range { 常量 : 常量 [ , 常量 : 常量 ] } 示例:[代码] in_range { 5 } 结果:这等效于 [代码] = 5。 示例:[代码] in_range { 5: } 结果:这等效于 [代码] >= 5。 示例:[代码] in_range { :5 } 结果:这等效于 [代码] <= 5。 示例:[代码] in_range { 5:10 } 结果:这等效于 ( [代码] >= 5 and [代码] <= 10 )。 示例:[代码] in_range { :5,10,20: } 结果:这等效于 ( [代码] <= 5 or [代码] = 10 or [代码] >= 20 )。 确定“值”是否在数据中未定义。 值 is missing 确定“值”是否在数据中未定义。 值 IS NULL 确定“值”是否在数据中已定义。 值 is not missing 确定“值”是否在数据中已定义。 值 is not null 确定“字符串1”是否与“字符串2”的模式匹配,并且在模式字符串中将字符“字符型”可选地用作转义字符。此语法支持两个元字符:百分比符号 (%) 表示零个、一个或多个字符,下划线符号 (_) 表示任意字符。 字符串1 LIKE 字符串2 [ ESCAPE 字符型] 示例 1:[PRODUCT_LINE] like 'G%' 结果 1:以“G”开头的所有产品系列。 示例 2:[PRODUCT_LINE] like '%Ga%' escape 'a' 结果 2:以“G%”结尾的所有产品系列。 示例 3:[PRODUCT_LINE] like 'C_R_' 结果 3:具有名称 CARS 或 CARD 的所有产品系列。 示例:lookup ( [Country]) in ( 'Canada'--> ( [定价] * 0.60), 'Australia'--> ( [定价] * 0.80 ) ) default ( [定价] ) 查找数据并用指定的值替换。非常适合使用 case 句型结构。 lookup ( 名称 ) in ( 值1 --> 值2 ) default ( 表达式 ) 如果“参数”为 false,那么返回 TRUE;如果“参数”为 true,那么返回 FALSE。 NOT 参数 如果“参数1”或“参数2”为 true,那么返回 TRUE。 参数1 or 参数2 在应用汇总过滤器之前执行汇总计算。 汇总函数([表达式] prefilter) 示例:total( [数量] for report prefilter ) 汇总过滤器:total( [数量] for [ProductNo] )> 50000 结果:在应用汇总过滤器之前,对报表中的数量进行求和。 PNo Total Total Total forPNo forRep forRep_Prefilter --------- -------- ---------- ------------------- 88 54928 298140 2215354 89 51126 298140 2215354 90 69996 298140 2215354 94 69004 298140 2215354 95 53086 298140 2215354 计算由查询输出的行数。与 Count() 配合使用。 count ( ROWS ) 计算由查询输出的行数。与 Count() 配合使用。 count( ROWS  [ 表达式 ]) 确定“字符串1”是否以“字符串2”开头。此语法支持两个元字符:百分比符号 (%) 表示零个、一个或多个字符,下划线符号 (_) 表示任意字符。可选的 LITERAL 关键字指示如何解释“%”和“_”。存在 LITERAL 关键字时,“%”和“_”不应被视为元字符(请参阅示例 3 和 5)。否则,在没有 LITERAL 关键字的情况下,“%”和“_”的行为与元字符一样(请参阅示例 1、2 和 4)。 字符串1 starts with [LITERAL] 字符串2 示例 1:[PRODUCT_LINE] starts with 'Golf' 结果 1:Golf Equipment 示例 2:[PRODUCT_LINE] starts with 'Outdoor%' 结果 2:Outdoor Equipment 示例 3:[PRODUCT_LINE] starts with literal 'Golf%' 结果 3:Golf% 示例 4:[PRODUCT_LINE] starts with 'Current_Year%' 结果 4:Current_Year Price, Current Year Price%, Current_Year Price% 示例 5:[PRODUCT_LINE] starts with literal 'Current_Year%' 结果 5:Current_Year% 与 if 或 case 句型结构配合使用。如果 if 条件或 when 表达式为 true,那么会使用 then 表达式。此函数出现在“GO 数据仓库(分析)”数据包中的“2005 年排名前 10 位的零售商”示样报表中。 if( 条件 )then ...,或者 case 表达式 when 表达式 then .... end 与 case 句型结构配合使用。可定义当 WHEN 表达式为 true 时发生的情况。 case [表达式] when ... end
汇总 此列表包含预定义的函数,这些函数可返回一组相关值的单个汇总值或一组相关值各实例的不同汇总值。 根据表达式的聚合类型,返回使用相应的聚合函数计算得出的值。此函数出现在“GO 数据仓库(分析)”数据包中的“预算与实际”示样报表中。 aggregate ( 表达式 [ auto ] ) aggregate ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) aggregate ( 表达式 for report ) 返回选定数据项的平均值。Distinct 是与产品的较早版本兼容的替换表达式。 average ( [ distinct ] 表达式 [ auto ] ) average ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } ) average ( [ distinct ] 表达式 for report ) 示例:average ( 销售额 ) 结果:返回所有销售额的平均值。 返回所选数据项的数量,但不包括空值。Distinct 是与产品的较早版本兼容的替换表达式。All 仅以 DQM 方式适用,它可以避免假定重复计算维度表中的数据项。 count ( [ all | distinct ] 表达式 [ auto ] ) count ( [ all | distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } ) count ( [ all | distinct ] 表达式 for report ) 示例:count ( 销售额 ) 结果:返回“销售额”下条目的总数。 返回选定数据项的最大值。Distinct 是与产品的较早版本兼容的替换表达式。 maximum ( [ distinct ] 表达式 [ auto ] ) maximum ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } ) maximum ( [ distinct ] 表达式 for report ) 示例:maximum ( 销售额 ) 结果:返回所有“销售额”值中的最大值。 返回选定数据项的中间值。 median ( 表达式 [ auto ] ) median ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) median ( 表达式 for report ) 返回选定数据项的最小值。Distinct 是与产品的较早版本兼容的替换表达式。 minimum ( [ distinct ] 表达式 [ auto ] ) minimum ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } ) minimum ( [ distinct ] 表达式 for report ) 示例:minimum ( 销售额 ) 结果:返回所有“销售额”值中的最小值。 按行返回在指定数目的行上一组指定值的移动平均值。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 moving-average ( 数字型表达式 , 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) moving-average (  数字型表达式 , 数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:moving-average ( 数量 , 3 ) 结果:对于每一行,返回数量及当前行与前两行的移动平均值。 Qty Moving-Average (Qty, 3) ------ ------------------------------------ 200 200 700 450 400 433.3333 200 433.3333 200 266.6667 500 300.0000 按行返回在指定数目的行上一组指定值的移动合计。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 moving-total ( 数字型表达式 , 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) moving-total (  数字型表达式 , 数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:moving-total ( 数量 , 3 ) 结果:对于每一行,返回数量及当前行与前两行的移动合计。 Qty Moving-Total (Qty, 3) ------ -------------------------------- 200 200 700 900 400 1300 200 1300 200 800 500 900 返回选定数据项占合计值的百分比。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。此函数出现在“百分比计算(按年)”交互式示样报表中。 percentage ( 数字型表达式 [ at 表达式  { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) percentage (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:percentage ( 98 年年度销售额 ) 结果:返回 1998 年销售额中各销售代表所占百分比。 Employee Sales 98 Percentage --------- --------- ------------- Gibbons 60646 7.11% Flertjan 62523 7.35% Cornel 22396 2.63% 返回在 100 极差内的值,表示等于或低于选定数据项的那部分所占百分比。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 percentile ( 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) percentile (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:percentile ( 98 年年度销售额 ) 结果:对于每一行,返回等于或小于该行数量值的行所占的百分比。 Qty Percentile (Qty) ------ ----------------- 800 1 700 0.875 600 0.75 500 0.625 400 0.5 400 0.5 200 0.25 200 0.25 返回指定范围内值的排名。它返回整数,用于表示任意排名值,如 1(最高)到 100(最低)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 quantile ( 数字型表达式 , 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) quantile (  数字型表达式 , 数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:quantile ( 数量 , 4 ) 结果:返回数量、数量值的排名且数量值分成 4 个分位组(四分位数)。 Qty Rank Quantile (Qty, 4) ------ ------- --------------- 800 1 1 700 2 1 600 3 2 500 4 2 400 5 3 400 5 3 200 7 4 200 7 4 返回某一值相对于一组值的排名,由 1(最高)到 4(最低)之间的整数表示。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 quartile ( 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) quartile (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:quartile ( 数量 ) 结果:返回数量及数量值的四分位数,后者由 1(最高)到 4(最低)之间的整数表示。 Qty Quartile (Qty) ------ --------------------- 450 1 400 1 350 2 300 2 250 3 200 3 150 4 100 4 返回选定数据项的排名值。排序顺序为可选;在默认情况下,采用降序(DESC)。如果两个或更多行排名相同,那么排名值的序列中会有一个缺值(也称为 Olympic 排名)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。Distinct 是与产品的较早版本兼容的替换表达式。空值排名最末。此函数出现在“GO 数据仓库(分析)”数据包中的“2005 年排名前 10 位的零售商”示样报表中。 rank ( 表达式 [ ASC|DESC ] { , 表达式 [ ASC|DESC ] } [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) rank ( [ distinct ] 表达式 [ ASC|DESC ] { , 表达式 [ ASC|DESC ] } [ <for 选项>] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:rank ( 98 年年度销售额 ) 结果:对于每一行,将会返回 1998 年度每位销售代表所创造的销售额的对应排名值。如果有些行的排名相同,那么会跳过一些排名值。 Employee Sales 98 Rank --------- --------- ------------ Gibbons 60000 1 Flertjan 50000 2 Cornel 50000 2 Smith 48000 4 按行返回一组值的运行平均值(包括当前行)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 running-average ( 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) running-average (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:running-average ( 数量 ) 结果:对于每一行,返回数量以及当前行与前面行的运行平均值。 Name Qty Avg Running-Average for name ------- ------ ------ ----------------------- Smith 7 5 7 Smith 3 5 5 Smith 6 5 5.33 Smith 4 5 5 Wong 3 4 3 Wong 5 4 4 按行返回一组值的运行计数(包括当前行)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 running-count ( 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) running-count (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:running-count ( 数量 ) 结果:对于每一行,返回数量以及当前行位置的运行计数。 Name Qty Count Running-Count for name ------- ------ --------- ------------------------ Smith 7 4 1 Smith 3 4 2 Smith 6 4 3 Smith 4 4 4 Wong 3 3 1 Wong 5 3 2 按行返回一组值的运行差额,其为当前行的值与前面行(包括当前行)的值之间的差额。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 running-difference ( 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) running-difference (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:running-difference ( 数量 ) 结果:对于每一行,返回数量以及当前行的值与前面行的值之间的运行差额。 Name Qty Running-Difference for name ------- ------ --------------------------- Smith 7 NULL Smith 3 -4 Smith 6 3 Smith 4 -2 Wong 3 -1 Wong 5 2 按行返回一组值的最大运行值(包括当前行)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 running-maximum (  数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) running-maximum (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:running-maximum ( 数量 ) 结果:对于每一行,返回数量以及当前行与前面行的大运行值。 Name Qty Max Running-Maximum (Qty) for name ------- ------ ------ ------------------------- Smith 2 7 2 Smith 3 7 3 Smith 6 7 6 Smith 7 7 7 Wong 3 5 3 Wong 5 5 5 按行返回一组值的最小运行值(包括当前行)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 running-minimum ( 数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) running-minimum (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:running-minimum ( 数量 ) 结果:对于每一行,返回数量以及当前行与前面行的最小运行值。 Name Qty Min Running-Minimum (Qty) for name ------- ----- ------ -------------------------- Smith 7 2 7 Smith 3 2 3 Smith 6 2 3 Smith 2 2 2 Wong 4 3 4 Wong 5 3 4 按行返回一组值的运行合计(包括当前行)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。 running-total (  数字型表达式 [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] ) running-total (  数字型表达式 [ <for 选项> ] [ prefilter ] ) <for 选项> ::= for 表达式 { , 表达式 }|for report|auto 示例:running-total ( 数量 ) 结果:对于每一行,返回数量以及当前行与前面行的运行合计。 Name Qty Total Running-Total (Qty) for name ------- ------ -------- ------------------------- Smith 2 18 2 Smith 3 18 5 Smith 6 18 11 Smith 7 18 18 Wong 3 12 3 Wong 5 12 8 返回选定数据项的标准偏差。 standard-deviation ( 表达式 [ auto ] ) standard-deviation ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) standard-deviation ( 表达式 for report ) 示例:standard-deviation ( 产品成本 ) 结果:返回表明产品成本与平均产品成本相差程度的值。 计算总体标准偏差并返回总体协方差的平方根。 standard-deviation-pop ( 表达式 [ auto ] ) standard-deviation-pop ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) standard-deviation-pop ( 表达式 for report ) 示例:standard-deviation-pop ( 产品成本 ) 结果:返回总体协方差的平方根值。 计算样本标准偏差并返回总体协方差的平方根。 standard-deviation-samp ( 表达式 [ auto ] ) standard-deviation-samp ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) standard-deviation-samp ( 表达式 for report ) 示例:standard-deviation-samp ( 产品成本 ) 结果:返回样本方差的平方根值。 返回某一值相对于一组值的秩,表示为 High、Middle 或 Low。 tertile ( 表达式 [ auto ] ) tertile ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) tertile ( 表达式 for report ) 示例:tertile ( 数量 ) 结果:返回数量、数量值分成三分位数之后的分位数以及分成三分位数的数量值。 Qty Quantile (Qty, 3) Tertile (Qty) ------ ------------------------ ------------------ 800 1 H 700 1 H 500 2 M 400 2 M 200 3 L 200 3 L 返回选定数据项的合计值。Distinct 是与产品的较早版本兼容的替换表达式。此函数出现在“GO 数据仓库(分析)”数据包中的“预算与实际”示样报表中。 total ( [ distinct ] 表达式 [ auto ] ) total ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } ) total ( [ distinct ] 表达式 for report ) 示例:total ( 销售额 ) 结果:返回所有销售额的合计值。 统计函数 此列表包含统计性质的预定义汇总函数。 返回选定数据项的偏差。 variance ( 表达式 [ auto ] ) variance ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) variance ( 表达式 for report ) 示例:variance ( 产品成本 ) 结果:返回表明产品成本与平均产品成本相差程度的值。 返回一组数字除去其中无效数字之后的总体协方差。 variance-pop ( 表达式 [ auto ] ) variance-pop ( 表达式 for [ all|any ] 表达式 { , 表达式 } ) variance-pop ( 表达式 for report ) 示例:variance-pop ( 数量 ) 结果:对于每一行,返回一组数字除去其中无效数字之后的总体协方差。 返回除去其中空值之后的一组数字的样本方差。 variance-samp (  表达式 [ auto ] ) variance-samp (  表达式 for [ all|any ] 表达式 { , 表达式 } ) variance-samp (  表达式 for report ) 示例:variance-samp ( 数量 ) 结果:对于每一行,返回除去其中空值之后的一组数字的样本方差。 corr ( 数字表达式1 ,  数字表达式2  [ auto ] ) corr ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) corr ( 数字表达式1 ,  数字表达式2 for report ) 返回一组数字对的相关系数。此相关系数的计算方式如下所示: COVAR_POP(数字表达式1, 数字表达式2) / (STDDEV_POP(数字表达式1) * STDDEV_POP(数字表达式2)) 示例:corr ( 成本 ,  利润  for report) 结果:“成本”与“利润”之间的相关系数。 Cost Margin corr (Cost, Margin for report) ------- ---------- ----------------------------------------- 4 0.33 0.0872648 5 0.28 0.0872648 9.22 0.23 0.0872648 15.93 0.28 0.0872648 34.97 0.3 0.0872648 covariance-pop ( 数字表达式1 ,  数字表达式2 ) covariance-pop ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) covariance-pop ( 数字表达式1 ,  数字表达式2 for report ) 返回一组数字对的总体协方差。 示例:covariance-pop ( 成本 ,  利润  for report) 结果:“成本”和“利润”之间的总体协方差。 Cost Margin covariance-pop (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.032384 5 0.28 0.032384 9.22 0.23 0.032384 15.93 0.28 0.032384 34.97 0.3 0.032384 covariance-samp ( 数字表达式1 ,  数字表达式2 ) covariance-samp ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) covariance-samp ( 数字表达式1 ,  数字表达式2 for report ) 返回一组数字对的样本协方差。 示例:covariance-samp ( 成本 ,  利润  for report) 结果:“成本”与“利润”之间的样本协方差。 Cost Margin covariance-samp (Cost, Margin for report) ------- ---------- ------------------------------------------------------------ 4 0.33 0.04048 5 0.28 0.04048 9.22 0.23 0.04048 15.93 0.28 0.04048 34.97 0.3 0.04048 regression-average-x ( 数字表达式1 ,  数字表达式2 ) regression-average-x ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-average-x ( 表数字表达式1 ,  数字表达式2 for report ) 返回回归线的不相关变量(数字表达式2)的平均值。 示例:regression-average-x ( 成本 ,  利润  for report) 结果:“成本”和“利润”的回归线的“利润”平均值。 Cost Margin regression-average-x (Cost, Margin for report) ------- ---------- ----------------------------------------------------------------- 4 0.33 0.284 5 0.28 0.284 9.22 0.23 0.284 15.93 0.28 0.284 34.97 0.3 0.284 regression-average-y ( 数字表达式1 ,  数字表达式2 ) regression-average-y ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-average-y ( 数字表达式1 ,  数字表达式2 for report ) 返回回归线的相关变量(数字表达式1)的平均值。 示例:regression-average-y ( 成本 ,  利润  for report) 结果:“成本”和“利润”的回归线的“成本”平均值。 Cost Margin regression-average-y (Cost, Margin for report) ------- ---------- ----------------------------------------------------------------- 4 0.33 13.824 5 0.28 13.824 9.22 0.23 13.824 15.93 0.28 13.824 34.97 0.3 13.824 regression-count ( 数字表达式1 ,  数字表达式2 ) regression-count ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-count ( 数字表达式1 ,  数字表达式2 for report ) 返回用于适合回归线的非空值数字的数目。 示例:regression-count ( 成本 ,  利润  for report) 结果:返回用于适合“成本”和“利润”的回归线的非空值数字的数目。 Cost Margin regression-count (Cost, Margin for report) ------- ---------- ----------------------------------------------------------- 4 0.33 5 5 0.28 5 9.22 0.23 5 15.93 0.28 5 34.97 0.3 5 regression-intercept ( 数字表达式1 ,  数字表达式2 ) regression-intercept ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-intercept ( 数字表达式1 ,  数字表达式2 for report ) 返回回归线的 y 轴截距。此 y 轴截距的计算方式如下所示: AVG(数字表达式1) - REGR_SLOPE(数字表达式1, 数字表达式2) * AVG(数字表达式2) 示例:regression-intercept ( 成本 ,  利润  for report) 结果:“成本”和“利润”的回归线的 y 轴截距。 Cost Margin regression-intercept (Cost, Margin for report) ------- ---------- ---------------------------------------------------------------- 4 0.33 5.18015038 5 0.28 5.18015038 9.22 0.23 5.18015038 15.93 0.28 5.18015038 34.97 0.3 5.18015038 regression-r2 ( 数字表达式1 ,  数字表达式2 ) regression-r2 ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-r2 ( 数字表达式1 ,  数字表达式2 for report ) 返回回归线的确定系数(也称为决定系数 (R-squared) 或拟合优度 (goodness of fit))。此值根据以下条件计算: IF VAR_POP(数字表达式2) = 0 THEN NULL IF VAR_POP(数字表达式1) = 0 AND VAR_POP(数字表达式2) <> 0 THEN 1 IF VAR_POP(数字表达式1) > 0 and VAR_POP(数字表达式2) <> 0 THEN POWER(CORR (数字表达式1, 数字表达式2)) 示例:regression-r2 ( 成本 ,  利润  for report) 结果:“成本”和“利润”的回归线的判定系数。 Cost Margin regression-r2 (Cost, Margin for report) ------- ---------- ------------------------------------------------------ 4 0.33 0.00761514 5 0.28 0.00761514 9.22 0.23 0.00761514 15.93 0.28 0.00761514 34.97 0.3 0.00761514 regression-slope ( 数字表达式1 ,  数字表达式2 ) regression-slope ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-slope ( 数字表达式1 ,  数字表达式2 for report ) 返回回归线的斜度。此斜度的计算方式如下所示: COVAR_POP(数字表达式1,数字表达式2) / VAR_POP(数字表达式2) 示例:regression-slope ( 成本 ,  利润 ) 结果:“成本”和“利润”的回归线斜率。 Cost Margin regression-slope (Cost, Margin for report) ------- ---------- ----------------------------------------------------------- 4 0.33 30.43609023 5 0.28 30.43609023 9.22 0.23 30.43609023 15.93 0.28 30.43609023 34.97 0.3 30.43609023 regression-sxx ( 数字表达式1 ,  数字表达式2 ) regression-sxx ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-sxx ( 数字表达式1 ,  数字表达式2 for report ) 在估计 NULL 对之后返回以下计算: REGR_COUNT(数字表达式1, 数字表达式2) * VAR_POP(数字表达式2) 示例:regression-sxx ( 成本 ,  利润  for report) 结果:“成本”和“利润”的回归线的 sxx 计算。 Cost Margin regression-sxx (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.00532 5 0.28 0.00532 9.22 0.23 0.00532 15.93 0.28 0.00532 34.97 0.3 0.00532 regression-sxy ( 数字表达式1 ,  数字表达式2 ) regression-sxy ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-sxy ( 数字表达式1 ,  数字表达式2 for report ) 在估计 NULL 对之后返回以下计算: REGR_COUNT(数字表达式1, 数字表达式2) * COVAR_POP(数字表达式1, 数字表达式2) 示例:regression-sxy ( 成本 ,  利润  for report) 结果:“成本”和“利润”的回归线的 sxy 计算。 Cost Margin regression-sxy (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.16192 5 0.28 0.16192 9.22 0.23 0.16192 15.93 0.28 0.16192 34.97 0.3 0.16192 regression-syy ( 数字表达式1 ,  数字表达式2 ) regression-syy ( 数字表达式1 ,  数字表达式2 for [ all|any ] 表达式 { , 表达式 } ) regression-syy ( 数字表达式1 ,  数字表达式2 for report ) 在估计 NULL 对之后返回以下计算: REGR_COUNT(数字表达式1, 数字表达式2) * VAR_POP(数字表达式1) 示例:regression-syy ( 成本 ,  利润  for report) 结果:“成本”和“利润”的回归线的 syy 计算。 Cost Margin regression-syy (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 647.15932 5 0.28 647.15932 9.22 0.23 647.15932 15.93 0.28 647.15932 34.97 0.3 647.15932 成员汇总 此列表包含预定义的函数,可返回一组成员的单个汇总值或一组成员中每个成员的不同汇总值。
错误 表达式中突出显示的令牌处存在错误。
句型结构 此列表包含可用于创建表达式的句型结构和模板。模板将多个函数组合成一组。例如,search case 模板中包含 case、when、else 和 end 函数。 search case 此句型结构是 search case 的模板,其中包括 CASE、WHEN、ELSE 和 END 函数。 CASE WHEN [Country] = 'Canada' THEN ([定价] * 0.60) WHEN [国家/地区代码] > 100 THEN [定价] * 0.80 ELSE [定价] END simple case 此句型结构是 simple case 的模板,其中包括 CASE、WHEN、ELSE 和 END 函数。 CASE [Country] WHEN 'Canada' THEN ([定价] * 0.60) WHEN 'Australia' THEN [定价] * 0.80 ELSE [定价] END if then else 此句型结构为 if...then...else 语句的模板。GO 数据仓库 (分析) 数据包中的“2005 年排名前 10 位的零售商”示样报表中会显示此句型结构。 IF ([COUNTRY] = 'Canada') THEN ([定价] * 0.60) ELSE ([定价]) in_range 这是 in_range 表达式的模板。 [代码] IN_RANGE { :30 , 40, 50, 999: } 示例:[代码] IN_RANGE { 5 } 结果:这等效于 [代码] = 5。 示例:[代码] IN_RANGE { 5: } 结果:这等效于 [代码] >= 5。 示例:[代码] IN_RANGE { :5 } 结果:这等效于 [代码] <= 5。 示例:[代码] IN_RANGE { 5:10 } 结果:这等效于 ( [代码] >= 5 and [代码] <= 10 )。 示例:[代码] IN_RANGE { :5,10,20: } 结果:这等效于 ( [代码] <= 5 or [代码] = 10 or [代码] >= 20 )。
时间段判定 此列表包含可用于比较时间段表达式的判定。 包含 如果“period_expression1”contains“period_expression2”,那么返回“true”;即,第一个时间段包含第二个时间段中所含的日期时间值或所有值。 period_expression1 contains ( period_expression2 | datetime_expression ) period( 1989-11-01, 1991-05-19 ) contains period( 1991-05-19, 1991-06-04 ) 结果:false period( 1989-11-01, 1991-05-19 ) contains period( 1990-05-19, 1991-04-04 ) 结果:true period( 1989-11-01, 1991-05-19 ) contains 1991-04-04 结果:true 等于 如果“period_expression1”和“period_expression2”具有相同的时间段开始值和时间段结束值,那么返回“true”。 period_expression1 equals period_expression2 period( 1989-11-01, 1991-05-19 ) equals period( 1989-11-01, 1991-05-19 ) 结果:true immediately precedes 如果“period_expression1”immediately precedes“period_expression2”,那么返回“true”;即,第一个时间段的结束值等于第二个时间段的开始值。 period_expression1 immediately precedes period_expression2 period( 1989-11-01, 1991-05-19 ) immediately precedes period( 1991-05-19, 1991-06-04 ) 结果:true period( 1989-11-01, 1991-05-18 ) immediately precedes period( 1991-05-19, 1991-06-04 ) 结果:false immediately succeeds 如果“period_expression1”immediately succeeds“period_expression2”,那么返回“true”;即,第一个时间段的开始值等于第二个时间段的结束值。 period_expression1 immediately succeeds period_expression2 period( 1991-05-19, 1994-01-10 ) immediately succeeds period( 1991-01-19, 1991-05-19 ) 结果:true period( 1991-05-19, 1994-01-10 ) immediately succeeds period( 1991-01-20, 1991-05-18 ) 结果:false overlaps 如果“period_expression1”overlaps“period_expression2”,那么返回“true”;即,两者至少有一个共同值。 period_expression1 overlaps period_expression2 period( 1991-05-19, 1994-01-10 ) overlaps period( 1993-01-19, 1995-05-19 ) 结果:true precedes 如果“period_expression1”precedes“period_expression2”,那么返回“true”;即,第一个时间段中包含的所有值都小于或等于第二个时间段的开始值。 period_expression1 precedes period_expression2 period( 1989-11-01, 1991-05-19 ) precedes period( 1991-05-19, 1991-06-04 ) 结果:true period( 1989-11-01, 1991-05-18 ) precedes period( 1991-05-19, 1991-06-04 ) 结果:true succeeds 如果“period_expression1”succeeds“period_expression2”,那么返回“true”;即,第一个时间段中包含的所有值都大于或等于第二个时间段的结束值。 period_expression1 succeeds period_expression2 period( 1991-05-19, 1994-01-10 ) succeeds period( 1991-01-19, 1991-05-19 ) 结果:true period( 1991-05-20, 1994-01-10 ) succeeds period( 1991-01-20, 1991-05-19 ) 结果:true
业务日期/时间函数 此列表包含执行日期和时间计算的业务函数。 _add_seconds ( 日期型表达式,整数型表达式 ) 按照“时间型表达式”的格式,返回向其添加“整数型表达式”相应秒数后得到的时间或日期时间。 示例:_add_seconds ( 13:04:59 , 1 ) 结果:13:05:00 示例:_add_seconds ( 2002-04-30 12:10:10.000, 1 ) 结果:2002-04-30 12:10:11.000 示例:_add_seconds ( 2002-04-30 00:00:00.000, 1/100 ) 请注意,第二个自变量并非整数。这受某些数据库技术支持,并可以增加时间部分。 结果:2002-04-30 00:00:00.010 _add_minutes ( 日期型表达式,整数型表达式 ) 按照“时间型表达式”的格式,返回向其添加“整数型表达式”相应分钟数后得到的时间或日期时间。 示例:_add_minutes ( 13:59:00 , 1 ) 结果:14:00:00 示例:_add_minutes ( 2002-04-30 12:59:10.000, 1 ) 结果:2002-04-30 13:00:10.000 示例:_add_minutes ( 2002-04-30 00:00:00.000, 1/60 ) 请注意,第二个自变量并非整数。这受某些数据库技术支持,并可以增加时间部分。 结果:2002-04-30 00:00:01.000 _add_hours ( 日期型表达式,整数型表达式 ) 按照“时间型表达式”的格式,返回向其添加“整数型表达式”相应小时数后得到的时间或日期时间。 示例:_add_hours ( 13:59:00 , 1 ) 结果:14:59:00 示例:_add_hours ( 2002-04-30 12:10:10.000, 1 ) 结果:2002-04-30 13:10:10.000, 示例:_add_hours ( 2002-04-30 00:00:00.000, 1/60 ) 请注意,第二个自变量并非整数。这受某些数据库技术支持,并可以增加时间部分。 结果:2002-04-30 00:01:00.000 _add_days ( 日期型表达式, 整数型表达式 ) 按照“日期型表达式”的格式,返回向其添加“整数型表达式”相应天数后得到的日期或日期时间。 示例:_add_days ( 2002-04-30 , 1 ) 结果:2002-05-01 示例:_add_days ( 2002-04-30 12:10:10.000, 1 ) 结果:2002-05-01 12:10:10.000 示例:_add_days ( 2002-04-30 00:00:00.000, 1/24 ) 请注意,第二个自变量并非整数。这受某些数据库技术支持,并可以增加时间部分。 结果:2002-04-30 01:00:00.000 _add_months ( 日期型表达式, 整数型表达式 ) 向“日期型表达式”添加“整数型表达式”月数。如果结果月的天数少于组成月,那么将返回结果月的最后一天。在所有其他情况下,返回值与“日期型表达式”组成月的天数相同。 示例:_add_months ( 2012-04-15 , 3 ) 结果:2012-07-15 结果不是所得月的最后一天。 示例:_add_months ( 2012-02-29 , 1 ) 结果:2012-03-29 使用 _last_of_month 函数来返回月份的最后一天。 示例:_last_of_month ( _add_months ( 2012-02-29 , 1 ) ) 结果:2012-03-31 天调整为结果月的最后一天。 示例:_add_months ( 2012-01-31 , 1 ) 结果:2012-02-29 添加至时间戳。 示例:_add_months ( 2002-04-30 12:10:10.000 , 1 ) 结果:2002-05-30 12:10:10.000 _add_years ( 日期型表达式, 整数型表达式 ) 向“日期型表达式”添加“整数型表达式”年数。如果“日期型表达式”是 02/29,并且结果年是平年,那么结果天设置为 02/28。在所有其他情况下,返回值与“日期型表达式”的天数和月数相同。 示例:_add_years ( 2012-04-15 , 1 ) 结果:2013-04-15 2 月 29 适用于平年。 示例:_add_years ( 2012-02-29 , 1 ) 结果:2013-02-28 添加至时间戳。 示例:_add_years ( 2002-04-30 12:10:10.000 , 1 ) 结果:2003-04-30 12:10:10.000 _age ( 日期型表达式 ) 返回从当前日期减去“日期型表达式”后所得的数值。返回值的格式为 YYYYMMDD,其中 YYYY 表示年数,MM 表示月数,DD 表示天数。 示例:_age ( 1990-04-30 )(如果当天日期为 2003-02-05) 结果:120906,表示 12 年、9 个月和 6 天。 _date_to_int ( 日期型表达式 ) 返回“日期型表达式”的整数表示。返回值的格式为 YYYYMMDD,其中 YYYY 表示年数,MM 表示月数,DD 表示天数。 示例:_date_to_int ( 2003-01-01 ) 结果:20030101 _day_of_week ( 日期型表达式, 整数 ) 返回周内某日的对应值 (1 到 7),其中 1 为每周第一天,并由第二个参数 (1 到 7,1 代表星期一,7 代表星期日) 指示。请注意,依据 ISO 8601 标准,每周第一天为星期一,即日值为 1。 示例:_day_of_week ( 2003-01-01 , 1 ) 结果:3 _day_of_year ( 日期型表达式 ) 返回“日期型表达式”对应一年中第几天的数值(1 到 366)。亦称为儒略日。 示例:_day_of_year ( 2003-03-01 ) 结果:61 _days_between ( 日期型表达式1 , 日期型表达式2 ) 返回表示“日期型表达式1”和“日期型表达式2”之间天数的正数或负数。如果“日期型表达式1”<“日期型表达式2”,那么结果将为负数。 示例:_days_between ( 2002-06-21 , 2002-04-30 ) 结果:52 示例:_days_between ( 2002-04-30 , 2002-06-21 ) 结果:-52 _days_to_end_of_month ( 日期型表达式 ) 返回表示“日期型表达式”所代表月份中剩余天数的数值。 示例:_days_to_end_of_month ( 2002-04-20 14:30:22.123 ) 结果:10 _first_of_month ( 日期型表达式 ) 按照参数的格式,返回将“日期型表达式”转换成同年同月但日值设为 1 得到的日期或日期时间。 示例:_first_of_month ( 2002-04-20 ) 结果:2002-04-01 示例:_first_of_month ( 2002-04-20 12:10:10.000 ) 结果:2002-04-01 12:10:10.000 _last_of_month ( 日期型表达式 ) 依据参数,返回“日期型表达式”所表示的月份中的最后一天所对应的日期或日期时间。 示例:_last_of_month ( 2002-01-14 ) 结果:2002-01-31 示例:_last_of_month ( 2002-01-14 12:10:10.000 ) 结果:2002-01-31 12:10:10.000 _make_timestamp ( 整数型表达式1, 整数型表达式2, 整数型表达式3 ) 返回由“整数型表达式 1”(年)、“整数型表达式 2”(月)和“整数型表达式 3”(日)构成的时间戳记。时间部分默认值为 00:00:00.000。 示例:_make_timestamp ( 2002 , 01 , 14 ) 结果:2002-01-14 00:00:00.000 _months_between ( 日期型表达式1, 日期型表达式2 ) 返回表示“日期型表达式1”和“日期型表达式2”之间月数的正整数或负整数。如果“日期型表达式1”早于“日期型表达式2”,那么返回负数。 示例:_months_between ( 2002-04-03 , 2002-01-30 ) 结果:2 示例:_months_between ( 2002-01-30 , 2002-04-03 ) 结果:-2 _shift_timezone ( timestamp_value , from_time_zone , target_time_zone ) _shift_timezone ( timestamp_with_time_zone_value , target_time_zone ) 将时间戳记值从一个时区转换为另一个时区。此功能优先使用夏令时(适用时)。如果第一个参数的类型是“时间戳记”,那么第二个和第三个参数则分别代表“自”和“至”的时区。如果第一个参数的类型是“带时区的时间戳记”,那么“来”时区已隐含在第一个参数中,因此第二个参数则代表“自”时区。第一个参数的数据类型还会决定返回值的数据类型。第二个和第三个参数的类型是“字符串”,代表时区标识符。请参见下面的此类标识符列表。 注意:使用此功能将导致本地处理。 示例:_shift_timezone( 2013-06-30 12:00:00 , 'America/New_York' , 'GMT' ) 结果:2013-06-30 16:00:00 示例:_shift_timezone( 2013-11-30 12:00:00-05:00 , 'America/Vancouver' ) 结果:2013-11-30 09:00:00-08:00 时区标识: GMT (GMT+00:00) Greenwich Mean Time Europe/Lisbon (GMT+00:00) Portugal Time (Lisbon) Europe/Amsterdam (GMT+01:00) Netherlands Time Europe/Paris (GMT+01:00) France Time Europe/Berlin (GMT+01:00) Germany Time Europe/Brussels (GMT+01:00) Belgium Time Europe/Rome (GMT+01:00) Italy Time Europe/Vienna (GMT+01:00) Austria Time Africa/Cairo (GMT+02:00) Egypt Time Africa/Johannesburg (GMT+02:00) South Africa Time Europe/Athens (GMT+02:00) Greece Time Africa/Addis_Ababa (GMT+03:00) Ethiopia Time Asia/Dubai (GMT+04:00) United Arab Emirates Time Asia/Karachi (GMT+05:00) Pakistan Time Asia/Calcutta (GMT+05:30) India Time Asia/Dhaka (GMT+06:00) Bangladesh Time Asia/Saigon (GMT+07:00) Vietnam Time Asia/Hong_Kong (GMT+08:00) Hong Kong SAR China Time Asia/Tokyo (GMT+09:00) Japan Time Australia/Darwin (GMT+09:30) Australia Time (Darwin) Australia/Sydney (GMT+10:00) Australia Time (Sydney) Pacific/Guadalcanal (GMT+11:00) Solomon Islands Time America/Argentina/San_Juan (GMT-03:00) Argentina Time (San Juan) America/Buenos_Aires (GMT-03:00) Argentina Time (Buenos Aires) America/Sao_Paulo (GMT-03:00) Brazil Time (Sao Paulo) America/St_Johns (GMT-03:30) Canada Time (St. John’s) America/Puerto_Rico (GMT-04:00) Puerto Rico Time America/New_York (GMT-05:00) United States Time (New York) America/Toronto (GMT-05:00) Canada Time (Toronto) America/Jamaica (GMT-05:00) Jamaica Time America/Chicago (GMT-06:00) United States Time (Chicago) America/Mexico_City (GMT-06:00) Mexico Time (Mexico City) America/Cambridge_Bay (GMT-07:00) Canada Time (Cambridge Bay) America/Edmonton (GMT-07:00) Canada Time (Edmonton) America/Yellowknife (GMT-07:00) Canada Time (Yellowknife) America/Denver (GMT-07:00) United States Time (Denver) America/Chihuahua (GMT-07:00) Mexico Time (Chihuahua) America/Los_Angeles (GMT-08:00) United States Time (Los Angeles) America/Tijuana (GMT-08:00) Mexico Time (Tijuana) America/Vancouver (GMT-08:00) Canada Time (Vancouver) America/Anchorage (GMT-09:00) United States Time (Anchorage) Pacific/Honolulu (GMT-10:00) United States Time (Honolulu) Pacific/Tahiti (GMT-10:00) French Polynesia Time (Tahiti) Pacific/Midway (GMT-11:00) U.S. Minor Outlying Islands Time (Midway) Pacific/Niue (GMT-11:00) Niue Time 可能还会使用定制的时区标识符,使用格式 GMT(+|-)HH:MM。例如,GMT-06:30 或 GMT+02:00。 _week_of_year ( 日期型表达式 ) 依据 ISO 8601 标准,返回“日期型表达式”中的年内周数。年内的第 1 周是该年内包含星期四的第一个周,即 1 月 4 日所在的第一个周。周起始于星期一(日值 1),结束于星期日(日值 7)。 示例:_week_of_year ( 2003-01-01 ) 结果:1 _years_between ( 日期型表达式1, 日期型表达式2 ) 返回表示“日期型表达式1”和“日期型表达式2”之间年数的正整数或负整数。如果“日期型表达式1”<“日期型表达式2”,那么会返回负值。 示例:_years_between ( 2003-01-30 , 2001-04-03 ) 结果:1 示例:_years_between ( 2001-04-03 , 2003-01-30 ) 结果:-1 _ymdint_between ( 日期型表达式1 , 日期型表达式2 ) 返回一个表示“日期型表达式1”和“日期型表达式2”之间差值的数字。返回值的格式为 YYYYMMDD,其中 YYYY 表示年数,MM 表示月数,DD 表示天数。 示例:_ymdint_between ( 1990-04-30 , 2003-02-05 ) 结果:120905,表示 12 年 9 个月 5 天。 _year ( 日期型表达式 ) 返回“日期型表达式”中的“年”字段的值。 示例:_year ( 2003-03-01 ) 结果:2003 _month ( 日期型表达式 ) 返回“日期型表达式”中的“月”字段的值。 示例:_month ( 2003-03-01 ) 结果:3 _day ( 日期型表达式 ) 返回“日期型表达式”中的“日”字段的值。 示例:_day ( 2003-03-01 ) 结果:1 _hour ( 日期型表达式 ) 返回“日期型表达式”中的“小时”字段的值。 示例:_hour ( 2002-01-31 12:10:10.254 ) 结果:12 _minute ( 日期型表达式 ) 返回“日期型表达式”中的“分钟”字段的值。 示例:_minute ( 2002-01-31 12:10:10.254 ) 结果:10 _second ( 日期型表达式 ) 返回“日期型表达式”中的“秒”字段的值。 示例:_second ( 2002-01-31 12:10:10.254 ) 结果:10.254 _timezone_hour ( timestamp_with_time_zone_value ) _timezone_hour ( time_with_time_zone_value ) 返回表达式中的“时区小时”字段的值。表达式的类型必须是“带时区的时间戳记”或“带时区的时间”。 示例:_timezone_hour ( 2002-01-31 12:10:10.254-05:30 ) 结果:-5 _timezone_minute ( timestamp_with_time_zone_value ) _timezone_minute ( time_with_time_zone_value ) 返回表达式中的“时区分钟”字段的值。表达式的类型必须是“带时区的时间戳记”或“带时区的时间”。 示例:_timezone_minute ( 2002-01-31 12:10:10.254-05:30 ) 结果:-30 _start_of_day ([ 日期型表达式 ]) 返回“日期型表达式”的开始时间或以时间戳记的形式返回今天的开始时间。 示例:_start_of_day ( 2014-11-23 12:10:10.254 ) 结果:2014-11-23 00:00:00 示例:_start_of_day () 结果:2016-01-01 00:00:00 _end_of_day ([ 日期型表达式 ]) 返回“日期型表达式”的结束时间或以时间戳记的形式返回今天的结束时间。 示例:_end_of_day ( 2014-11-23 12:10:10.254 ) 结果:2014-11-23 23:59:59 示例:_end_of_day () 结果:2016-01-01 23:59:59 _unix_timestamp ( date_expression ) 对于给定的“date_expression”,返回自 1970-01-01 00:00:00-00 以来的秒数。 示例:_unix_timestamp ( 2014-11-23 ) 结果:1416718800 _from_unixtime ( integer_expression ) 以带时区的时间戳记形式返回“integer_expression”指定的 UNIX 时间。 示例:_from_unixtime (1417807335) 结果:2014-12-05 19:22:15+00:00
宏函数 此列表包含可在宏内使用的函数。一个宏可能包含一个或多个宏函数。通过在宏的起始处和结尾处添加井字号 (#),可以将宏分隔开来。井字号之间的任何内容都被视为宏表达式,并在运行时执行。如果宏函数接受带时区的数据类型时间戳记表达式作为参数,可接受的格式为“yyyy-mm-dd hh:mm:ss[.ff]+hh:mm”,其中小数形式的秒为可选项,可由 1 到 9 位数表示。在分隔日期部分和时间部分的空格位置,可用字符“T”替代。此外,可以用字符“Z”替代时区“+hh:mm”,该字符在内部将被处理为“+00:00”。对于返回带时区的数据类型时间戳记表达式的宏函数,默认情况下返回 9 位数小数形式的秒。如果需要,可使用宏函数 timestampMask() 截断该输出。 返回向“字符串型表达式”添加“整数型表达式”相应秒数后所得带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。 _add_seconds ( 字符串型表达式 , 整数型表达式 ) 示例:# _add_seconds ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 结果:2005-11-01 11:59:59.000-05:00 示例:# _add_seconds ( $current_timestamp , 1 ) # 结果:2005-11-01 12:00:01.000000000-05:00 示例:# timestampMask ( _add_seconds ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # 结果:12:00:01 返回向“字符串型表达式”添加“整数型表达式”相应分钟数后所得带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。 _add_minutes ( 字符串型表达式 , 整数型表达式 ) 示例:# _add_minutes ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 结果:2005-11-01 11:59:00.000-05:00 示例:# _add_minutes ( $current_timestamp , 1 ) # 结果:2005-11-01 12:01:00.000000000-05:00 示例:# timestampMask ( _add_minutes ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # 结果:12:01:00 返回向“字符串型表达式”添加“整数型表达式”相应小时数后所得带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。 _add_hours ( 字符串型表达式 , 整数型表达式 ) 示例:# _add_hours ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 结果:2005-11-01 13:00:00.000-05:00 示例:# _add_hours ( $current_timestamp , 1 ) # 结果:2005-11-01 13:00:00.000000000-05:00 示例:# timestampMask ( _add_hours ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # 结果:13:00:00 返回向“字符串型表达式”添加“整数型表达式”相应天数后所得带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。第一个自变量是日期(指定为格式为 yyyy-mm-dd 的字符串)时,返回值是格式为日期的字符串。 _add_days ( 字符串型表达式 , 整数型表达式 ) 示例:# _add_days ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 结果:2005-10-31 12:00:00.000000000-05:00 示例:# _add_days ( $current_timestamp , 1 ) # 结果:2005-11-02 12:00:00.000000000-05:00 示例:# timestampMask ( _add_days ( $current_timestamp , 1 ) , 'yyyy-mm-dd' ) # 结果:2005-11-02 示例:# _add_days( '2019-11-14' , 3 ) # 结果:2019-11-17 返回向“字符串型表达式”添加“整数型表达式”相应月数后所得带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。第一个自变量是日期(指定为格式为 yyyy-mm-dd 的字符串)时,返回值是格式为日期的字符串。 _add_months ( 字符串型表达式 , 整数型表达式 ) 示例:# _add_months ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 结果:2005-10-01 12:00:00.000000000-05:00 示例:# _add_months ( $current_timestamp , 1 ) # 结果:2005-12-01 12:00:00.000000000-05:00 示例:# timestampMask ( _add_months ( $current_timestamp , 1 ) , 'yyyy-mm-dd' ) # 结果:2005-12-01 示例:# _add_months( '2019-11-14' , -1 ) # 结果:2019-10-14 返回向“字符串型表达式”添加“整数型表达式”相应年数后所得带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。第一个自变量是日期(指定为格式为 yyyy-mm-dd 的字符串)时,返回值是格式为日期的字符串。 _add_years ( 字符串型表达式 , 整数型表达式 ) 示例:# _add_years ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 结果:2004-11-01 12:00:00.000000000-05:00 示例:# _add_years ( $current_timestamp , 1 ) # 结果:2006-11-01 12:00:00.000000000-05:00 示例:# timestampMask ( _add_years ( $current_timestamp , 1 ) , 'yyyy-mm-dd' ) # 结果:2006-11-01 示例:# _add_years( '2019-11-14' , -2 ) # 结果:2017-11-14 _first_of_month ( 字符串型表达式 ) 返回将“字符串型表达式”中的日值转换为 1 后所得带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。 示例:# _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) # 结果:2005-11-01 12:00:00.000000000-05:00 示例:# timestampMask ( _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) , 'yyyymmdd' ) # 结果:20051101 _last_of_month ( 字符串型表达式 ) 返回“字符串型表达式”所示月份的最后一天所对应带时区的时间戳记(以字符串形式),其中“字符串型表达式”表示带时区的时间戳记。 示例:# _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) # 结果:2005-11-30 12:00:00.000000000-05:00 示例:# timestampMask ( _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) , 'yyyy-mm-dd' ) # 结果:2005-11-30 modelj ( 'identifier' [ , 'model_search_path' [ , 'options' ] ] ) 以 JSON 格式返回元数据模型的一部分。未指定“model_search_path”时,将使用当前模型。可以将“options”自变量设置为“cleanup”,这会将结果中的某些部分更改为固定值(对于测试很有用)。 sq ( modelj ( '[gosales].[country].[country]' ) 用方括号将“字符串型表达式”括起来。 sb ( 字符串型表达式 ) 示例:# sb ( 'abc' ) # 结果:[abc] 用单引号将“字符串型表达式”引起来。 sq ( 字符串型表达式 ) 示例:# sq ( 'zero' ) # 结果:'zero' 用双引号将“字符串型表达式”引起来。 dq ( 字符串型表达式 ) 示例:# dq ( 'zero' ) # 结果:“zero” 使用当前经过身份验证的用户的身份信息在指定的参数映射中查找值。用户身份的每一部分(帐户名、组名、角色名)均在映射中用作键。从参数映射中检索出的唯一值列表随后作为字符串返回,其中每一个值两侧均添加单引号,多个值则用逗号隔开。 CSVIdentityName ( %parameter_map_name [ , separator_string ] ) 示例:# CSVIdentityName ( %security_clearance_level_map ) # 结果:'level_500' , 'level_501' , 'level_700' 以字符串列表的形式返回用户身份的各个部分(帐户名、组名和角色名)。值的唯一列表以字符串的形式返回,其中每一个值两侧均添加单引号,多个值则用逗号隔开。 CSVIdentityNameList ( [ separator_string ] ) 示例:# CSVIdentityNameList ( ) # 结果:“Everyone”、“Report Administrators”、“Query User” 返回 Cognos® Access Manager 护照。 CAMPassport ( ) 示例:# CAMPassport ( ) # 结果:111:98812d62-4fd4-037b-4354-26414cf7ebef:3677162321 以值列表(使用逗号分隔)的形式返回用户 Cognos® Access Manager ID (CAMID) 的各个部分(帐户名、组名和角色名)。 CAMIDList ( [ separator_string ] ) 示例:#CAMIDList ( ) # 结果:CAMID ( "::Everyone" ) , CAMID ( ":Authors" ) , CAMID ( ":Query Users" ) , CAMID ( ":Consumers" ) , CAMID ( ":Metrics Authors" ) 根据身份类型(帐户、组或角色)返回用户 Cognos® Access Manager ID (CAMID) 数组。CAMIDListForType 可与宏函数 csv 或 join 一起使用。 CAMIDListForType ( 身份类型 ) 示例:[qs].[userRole] in ( # csv ( CAMIDListForType ( 'role' ) ) # ) 结果:[qs].[userRole] in ( 'CAMID ( "::System Administrators" ) ' , 'CAMID ( ":Authors" )' ) 连接两个字符串。 值1 + 值2 示例:# '{ ' + $runLocale + ' }' # 结果:{en-us} 从第一个自变量中去掉前导字符。可选的第二个自变量定义要去掉的字符集。默认情况下,此功能去掉空格(也就是空行、选项卡、回车和换行) lstrip ( string_expression [ , set_of_characters ] ) 示例:# sq( lstrip ( ' abc ' ) ) # 结果:'abc ' 示例:# lstrip ( ' 0053.2100 ' , '0 \t\r\n' ) # 示例:53.2100 如果定义了“parameterName”的参数值,将返回此值。如果“parameterName”不存在,将返回值“defaultText”。“datatype”设置为“string”时,会将结果值用单引号括起。 使用此函数不会导致缺少参数的异常。 ParamValue ( parameterName [ , defaultText [, datatype ] ] ) 示例:# ParamValue ( 'p_country' ) # 结果:'Canada' - p_country 已设置 结果:null - p_country 不是已知参数 结果:null - p_country 用于可选提示,但未设置 示例:# ParamValue ( 'p_country' , 'Netherlands' ) # 结果:'Canada' - p_country 已设置 结果:'Netherlands' - p_country 不是已知参数 结果:'Netherlands' - p_country 用于可选提示,但未设置 示例:# ParamValue ( 'p_country', ' cast ( null as varchar(20)) ' , 'token' ) # 结果:'Canada' - p_country 已设置 结果:cast ( null as varchar(20)) - p_country 不是已知参数 结果:cast ( null as varchar(20)) - p_country 用于可选提示,但未设置 提示用户输入单个值或成员。仅“提示名称”为必需项。未指定数据类型时默认为“string”。指定“默认文本”时,提示是可选的。指定“文本”后,文本会在值前面。可指定“查询项目”以利用“查询项目”的提示信息属性。指定“结尾文本”后,结尾文本会附加到值的后面。当数据类型是“memberuniquename”时,将会创建单项选择成员提示。最好提供默认值作为第三个自变量。默认值必须是有效的成员唯一名称,也可以是指代成员唯一名称的别名,如 Report Studio 中所做的那样。 prompt ( 提示名称 , 数据类型 , 默认文本 , 文本 , 查询项目 , 结尾文本 ) 示例:select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > #prompt ( '起始国家/地区代码' , 'integer' , '10' ) # 结果:select .. . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > 10 示例:[gosales].[COUNTRY].[COUNTRY] = # prompt ( '国家/地区提示' , 'string' , '''Canada''' ) # 结果:[gosales].[COUNTRY].[COUNTRY] = 'Canada' 示例:set ( #prompt ('myProduct', 'memberuniquename', '[露营装备]', '', '[销售额].[产品].[产品].[产品系列]')#) 结果:set([Sales].[Product].[Product].[Product line]->[all].[1]) 必须指定“默认文本”参数,这样它才会在宏的上下文中完全有效,因为不会对该值进行格式化。例如 2 中的默认字符串 '''Canada''' 被指定为使用单引号的字符串,其中嵌入的单引号被翻倍,因而变为 3 个引号。这样使字符串可在表达式中正确地显示在单引号内。作为字符串数据类型的一般规则,应始终按照上述注释指定“默认文本”,存储过程参数的上下文除外。对于 'date' 或 'datetime' 类型的“默认文本”,应当在 SQL 的上下文中使用特殊格式。例如,特殊格式 'DATE ''2001-12-25''' 和 'DATETIME ''2001-12-25 12:00:00'''。在所有其他上下文中,请使用不含关键字的 date/datetime 和已转换的单引号 (例如 '2001-12-25')。 提示用户输入一个或多个值或成员。仅“提示名称”为必需项。未指定数据类型时默认为“string”。指定“默认文本”时,提示是可选的。指定“文本”后,文本会在值列表的前面。可指定“查询项目”以利用“查询项目”的提示信息属性。指定“结尾文本”后,结尾文本会附加到值列表的后面。当数据类型是“memberuniquename”时,将会创建多项选择成员提示。最好提供默认值作为第三个自变量。默认值必须是有效的成员唯一名称,也可以是指代成员唯一名称的别名,如 Report Studio 中所做的那样。 promptmany ( 提示名称 , 数据类型 , 默认文本 , 文本 , 查询项目 , 结尾文本 ) 示例:select . . . where COUNTRY_MULTILINGUAL.COUNTRY in ( # promptmany ( '国家/地区名称' ) # ) 结果:select .. . where COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( 'Canada' , 'The Netherlands' , 'Russia' ) 示例:select . . . from gosales.gosales.dbo.COUNTRY_MULTILINGUAL COUNTRY_MULTILINGUAL , gosales.gosales.dbo.COUNTRY XX where COUNTRY_MULTILINGUAL.COUNTRY_CODE = XX.COUNTRY_CODE # promptmany ( '所选国家/地区代码' , 'integer' , ' ' , ' and COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( ' , '' , ' ) ' ) # 结果:select .. . from gosales.gosales.dbo.COUNTRY_MULTILINGUAL COUNTRY_MULTILINGUAL , gosales.gosales.dbo.COUNTRY XX where COUNTRY_MULTILINGUAL.COUNTRY_CODE = XX.COUNTRY_CODE and COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( 'Canada' , 'The Netherlands' , 'Russia' ) 示例:set ( #promptmany ('myProduct', 'memberuniquename', '[露营装备]', '', '[销售额].[产品].[产品].[产品系列]')#) 结果:set([Sales].[Product].[Product].[Product line]->[all].[1]; [Sales].[Product].[Product].[Product line]->[all].[2]) 对单列执行查询并返回第一行中的值(仅返回该行的值)。 结果未设置格式,请确保根据需要用 sq ( ) 将调用括起。 queryValue ( value_expression [ , filter_expression ] ) 示例:# sq ( queryValue ( 'TheCalendar.TheWeekdayName' , 'TheCalendar.TheDate = 2018-06-06' ) ) # 结果:'Wednesday' 从参数列表构建数组。 array ( 字符串型表达式|数组型表达式 { , 字符串型表达式|数组型表达式 } ) 示例:# csv ( array ( 'a1' , array ( 'x1' , 'x2' ) , 'a2' ) ) # 结果:'a1' , 'x1' , 'x2' , 'a2' 从数组元素构建字符串,其中要素值由逗号分隔。(可选)可以指定分隔符和引号字符串。默认分隔符为逗号 ( , ),默认引号字符为单引号 ( ' )。 csv ( array_expression [ , separator_string [ , quote_string ] ] ) 示例:# sq ( csv ( array ( 'a1' , 'a2' ) ) ) # 结果:'a1' , 'a2' 从 IBM® Cognos® 配置文件中获取条目。强制解码标志为可选,且必须是下列其中一个值:'true'、'1'、1、'false'、'0'、0。默认值为 'false'。在异常情况下,强制解码标志应设置为 true。 在 IBM Cognos 配置中,通过“高级”属性将条目的强制解码标志设置为 true 时,将返回配置条目的纯文本值。 对于在“高级”属性中未标识的条目,将返回空字符串,而不考虑加密信息存在与否。 “高级”属性中的条目为 qs.getConfigurationEntry.1,它是分号分隔的名称列表,默认情况下此名称列表为空,在此标志设置为 true 时调用此函数将返回空字符串。 getConfigurationEntry ( 条目字符串 , 强制解码标志 ) 示例:# getConfigurationEntry ( 'serverLocale'  ) # 结果:en 从资源文件返回了条目。 第一个自变量是在资源文件中找到的资源标识。可选的第二个自变量是没有语言环境后缀的资源文件名(例如,对于消息文件“mfwa4j_en.properties”,为“mfwa4j”)。默认资源文件是“xqejavamsgs”。可选的第三个自变量是语言环境,默认为“en”。 getResourceString ( resource_id_string [, resource_file_string [ , locale_string ] ] ) 示例:# getResourceString ( 'XQE_BIN_binLow' ) # 结果:XQE-BIN-0001 小于 %1 示例:# getResourceString ( 'MFW_UT_INTERNAL_ERROR' , 'mfw4j' , 'en' ) # 结果:MFW-UT-1002 发生内部问题。请与系统管理员联系。 搜索并返回与在“样式字符串”中指定的样式匹配的数组元素。 唯一支持的元字符为: ^(文字开始)、 $(文字结束)、 ! (否定 - 仅支持作为第一个字符)。 grep ( 模式字符串 , 数组型表达式 ) 示例:# sq ( csv ( grep ( 's' , array ( 'as', 'an', 'arts' ) ) ) ) # 结果:'as', 'arts' 示例:# sq ( csv ( grep ( '^g' , array ( 'group', 'golf' ) ) ) ) # 结果:'group', 'golf' 示例:# sq ( csv ( grep ( 's$' , array ( 'oranges', 'mangoes' ) ) ) ) # 结果:'oranges', 'mangoes' 示例:# sq ( csv ( grep ( '!o' , array ( 'oranges', 'apples' ) ) ) ) # 结果:'apples' 在“str”中查找“substr”所在的偏移量。找不到“substr”时,会返回值 -1。您还可以提供可选的“offset”作为搜索起始点。第一个参数“str”还可以是“数组型表达式”,在这种情况下,该函数会应用于每个数组元素,并且函数结果为值数组。 index ( str , substr [ , offset ] ) # index ( 'The black horse jumped over the black sheep.', 'black' ) # 结果:4 # index ( 'The black horse jumped over the black sheep.', 'black', 10 ) # 结果:32 # index ( 'The black horse jumped over the black sheep.', 'green' ) # 结果:-1 # sq ( join ( ' | ', index ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # 结果:-1 | 1 | 2 使用“separator_string”连接数组元素。 join ( separator_string , array_expression ) 示例:# sq ( join ( ' | | ' , array ( 'as', 'an', 'arts' ) ) ) # 结果:“as | | an | | arts” 计算“字符串型表达式”中的字符数。如果参数是“数组型表达式”,那么结果将为值数组,每个条目将是每个“数组型表达式”要素中的字符数。 length ( 字符串型表达式 | 数组型表达式 ) length ( 'abcdef' ) 结果:6 join ( '--', length ( array ( 'abcdef' , 'xyz' ) ) ) 结果:6--3 在找到了“substr”的“str”中查找最后一个偏移量。此函数称为逆向索引,可以将其视为从字符串的末尾开始扫描。找不到“substr”时,会返回值 -1。您还可以提供可选的“offset”作为搜索结束点。第一个参数“str”可以是“数组型表达式”,在这种情况下,该函数会应用于每个数组元素,并且函数结果为值数组。 rindex ( str , substr [ , offset ] ) # rindex ( 'The black horse jumped over the black sheep.', 'black' ) # 结果:32 # rindex ( 'The black horse jumped over the black sheep.', 'black', 10 ) # 结果:4 # rindex ( 'The black horse jumped over the black sheep.', 'green' ) # 结果:-1 # sq ( join ( ' | ', rindex ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # 结果:-1 | 1 | 3 从第一个自变量中去掉结尾字符。可选的第二个自变量定义要去掉的字符集。默认情况下,此功能去掉空格(也就是空行、选项卡、回车和换行) rstrip ( string_expression [ , set_of_characters ] ) 示例:# sq( rstrip ( ' abc ' ) ) # 结果:' abc' 示例:# rstrip ( ' 0053.2100 ' , '0 \t\r\n' ) # 结果:0053.21 按字母顺序对数组元素排序。保留重复项。 sort ( 数组型表达式 ) 示例:# csv ( sort ( array ( 's3', 'a', 'x' ) ) ) # 结果:'a', 's3', 'x' 将数组的字符串或字符串要素分割成单独的要素。 split ( 模式字符串, 字符串型表达式|数组型表达式 ) 示例:# sq ( csv ( split ( '::', 'ab=c::de=f::gh=i' ) ) ) # 结果:'ab=c' , 'de=f', 'gh=i' 示例:# sq ( csv ( split ( '=' , split ( '::', 'ab=c::de=f::gh=i' ) ) ) ) # 结果:'ab', 'c', 'de', 'f', 'gh', 'i' 从第一个自变量中去掉前导和结尾字符。可选的第二个自变量定义要去掉的字符集。默认情况下,此功能去掉空格(也就是空行、选项卡、回车和换行) strip ( string_expression [ , set_of_characters ] ) 示例:# sq( strip ( ' abc ' ) ) # 结果:'abc' 示例:# strip ( ' 0053.2100 ' , '0 \t\r\n' ) # 结果:53.21 在字符串中或在数组的字符串要素中搜索样式,并使用“替换字符串”替换第一个出现的“样式字符串”。 唯一支持的元字符为: ^(文字开始)、 $(文字结束) substitute ( 模式字符串, 替换字符串, 字符串型表达式|数组型表达式 ) 示例:#sq ( substitute ( '^cn=', '***', 'cn=help' ) )# 结果:'***help' 示例:# csv ( substitute ( '^cn=', '***', array ( 'cn=help' , 'acn=5' ) ) ) # 结果:'***help' , 'acn=5' 示例:# csv ( substitute ( 'cn=', '', array ( 'cn=help' , 'acn=5' ) ) ) # 结果:'help' , 'a5' 示例:#sq ( substitute ( 'help$', '***', 'cn=help' ) )# 结果:'cn=***' 在“字符串型表达式”中提取从“起点偏移量”开始的一部分。您可以指定“长度”来表示要提取的字符数。如果未指定“长度”,那么会返回一直到“字符串型表达式”末尾的内容。第一个参数还可以是“数组型表达式”,在这种情况下,该函数会应用于每个数组元素,并且函数结果为字符串数组。 substr ( 字符串型表达式 , 起点偏移量 [ , 长度 ] ) substr ( 'The horse is black.', 0, 3 ) 结果:The substr ( 'The horse is black.', 4 ) 结果:horse is black. substr ( 'The horse is black', index ('The horse is black.' , 'green' ) ) 结果:The horse is black. join ( ' | ', substr ( array ('black' , 'red', 'green' ) , 2, 2 ) ) 结果:ac | d | en substr ('over the moon', -2, 4) 生成错误:函数“substr”的第二个参数必须大于或等于 -1. 返回“字符串型表达式1”,表示带时区的时间戳记 (被截断为“字符串型表达式2”中指定的格式)。“字符串型表达式2”中的格式必须为以下之一:'yyyy'、'mm'、'dd'、'yyyy-mm'、'yyyymm'、'yyyy-mm-dd'、'yyyymmdd'、'yyyy-mm-dd hh:mm:ss'、'yyyy-mm-dd hh:mm:ss+hh:mm'、'yyyy-mm-dd hh:mm:ss.ff3'、'yyyy-mm-dd hh:mm:ss.ff3+hh:mm'、'yyyy-mm-ddThh:mm:ss'、'yyyy-mm-ddThh:mm:ss+hh:mm'、'yyyy-mm-ddThh:mm:ss.ff3+hh:mm' 或 'yyyy-mm-ddThh:mm:ss.ff3+hh:mm'。默认情况下,返回带时区的时间戳记的字符串表示法的宏参数会以 9 位数的精度显示秒数的小数部分。格式选项允许将其精度降低至 3 位数或 0 位数。 timestampMask ( 字符串型表达式1 , 字符串型表达式2 ) 示例:# timestampMask ( $current_timestamp , 'yyyy-dd-mm' ) # 结果:2005-11-01 示例:# timestampMask (  '2005-11-01 12:00:00.000-05:00' , 'yyyy-mm-dd hh:mm:ss+hh:mm' ) # 结果:2005-11-01 12:00:00-05:00 示例:# timestampMask (  '2005-11-01 12:00:00.123456789-05:00' , 'yyyy-mm-ddThh:mm:ss+hh:mm.ff3+hh:mm' ) # 结果:2005-11-01T12:00:00.123-05:00 返回表示由于将“字符串型表达式”调整为操作系统的时区而产生的带时区的时间戳记的字符串。请注意,可以使用宏参数 timestampMask() 来截断该输出。 toLocal ( 字符串型表达式 ) 示例:# toLocal ( '2005-11-01 17:00:00.000-00:00' ) #,其中操作系统本地时区为 -05:00 结果:2005-11-01 12:00:00.000000000-05:00 示例:# timestampMask ( toLocal ( '2005-11-01 17:00:00.000-00:00' ) , 'yyyy-mm-dd hh:mm:ss+hh:mm' ) #,其中操作系统本地时区为 -05:00 结果:2005-11-01 12:00:00-05:00 示例:# toLocal ( '2005-11-01 13:30:00.000-03:30' ) #,其中操作系统本地时区为 -05:00 结果:2005-11-01 12:00:00.000000000-05:00 返回具有所有小写字符(使用语言环境“locale_string”的规则进行转换)的字符串“string_expression”。如果未指定语言环境,那么使用“en”的语言环境。 tolower ( string_expression [ , locale_string ] ) 示例:# tolower ( 'ABC' ) # 结果:abc 示例:# tolower ( 'ABC' , 'fr' ) # 结果:abc 返回具有所有大写字符(使用在“locale_string”中定义的语言环境的规则进行转换)的字符串“string_expression”。如果未指定“locale_string”,那么使用“en”的语言环境。 toupper ( string_expression [ , locale_string ] ) 示例:# toupper ( 'abc' ) # 结果:ABC 示例:# toupper ( 'abc' , 'fr' ) # 结果:ABC 返回表示由于将“字符串型表达式”调整为零点引用 UTC 时区 (也称为 GMT 时间) 而产生的带时区的时间戳记的字符串。 请注意,可以使用宏参数 timestampMask() 来截断该输出。 toUTC ( 字符串型表达式 ) 示例:# toUTC ( '2005-11-01 12:00:00.000-05:00' ) # 结果:2005-11-01 17:00:00.000000000-00:00 示例:# timestampMask( toUTC ( '2005-11-01 12:00:00.000-05:00' ) , 'yyyy-mm-dd hh:mm:ss.ff3+hh:mm' ) # 结果:2005-11-01 17:00:00.000-00:00 示例:# toUTC ( $current_timestamp ) # 结果:2005-11-01 17:00:00.000000000-00:00 从数组中移除重复条目。保留要素的原有顺序。 unique ( 数组型表达式 ) # csv ( unique ( array ( 's3', 'a', 's3', 'x' ) ) ) # 结果:'s3', 'a', 'x' URL 编码所传递的参数。此函数在指定 XML 连接字符串时非常有用。 urlencode ( prompt ( '用户值' ) ) urlencode ( prompt ( '某些值' ) ) %27testValue%27 simple case 此宏句型结构为 simple case 的模板,其中包括 case、when、else 和 end 函数。请注意此宏句型结构仅以 DQM 方式适用。 CASE <expression> WHEN <literal> THEN <expression> [ELSE <expression>] END 示例:#CASE prompt('pDateRange','token') WHEN 'Current Week' THEN '[PR Current Week]' ELSE '[PR Prior Week]' END# 结果:[PR 当前星期]
块函数 此列表包含的函数用于访问集合的成员(通常在 Analysis Studio 的上下文中)。 返回在集合中找到的前几个(不超过“数字型表达式最大值”+“数字型表达式溢出值”)成员。如果超过“数字型表达式最大值”+“数字型表达式溢出值”,那么只返回最大值对应数目的成员。如果集合中的成员数目只多于指定数字型表达式最大值很少几个,那么通过数字型表达式溢出值允许包含少量的额外成员。如果集合中的成员数目超过溢出值允许极差,那么只返回数字型表达式最大值对应数目的成员。 _firstFromSet ( 集表达式 , 数字型表达式最大值 , 数字型表达式溢出值 ) _firstFromSet ( [大型户外设备公司].[产品].[产品].[产品系列] , 2 , 8 ) 结果:返回产品系列集中的五个成员。将返回最大值内的前两个成员,并将后面的三个成员作为溢出值返回。 露营装备 高尔夫装备 登山装备 户外防护用品 个人附件 _firstFromSet ( [大型户外设备公司].[产品].[产品].[产品系列] , 2 , 2 ) 结果:露营装备、高尔夫装备 当“集合表达式”的大小大于“数字型表达式”时,返回包含“成员表达式”的集合;也就是说,如果“集合表达式”中的成员数大于指定的“数字型表达式”,那么将生成新成员。 _remainderSet ( 成员表达式, 集表达式 , 数字型表达式 ) _remainderSet ( member ( aggregate ( currentMeasure within set [大型户外设备公司].[产品].[产品].[产品系列] ) , 'Product Aggregate' , 'Product Aggregate' , [大型户外设备公司].[产品].[产品] ) , [大型户外设备公司].[产品].[产品].[产品系列] , 1 ) 结果:产品聚合的销售数量