1. 概述

通过表计算函数,您可对表中的值执行计算。本文介绍表计算函数及其具体用法。例如您可以计算某个年度和若干年度个别销售额占总额的百分比。

2. 可用的表计算函数

FIRST()


返回从当前行到分区中第一行的行数。例如,下面的视图显示每季度销售额。在 Date 分区中计算 FIRST() 时,第一行与第二行之间的偏移为 -1。

示例:当前行索引为 3 时,FIRST() = -2。

INDEX()


返回分区中当前行的索引,不包含与值有关的任何排序。第一个行索引从 1 开始。例如,下表显示每季度销售额。当在 Date 分区中计算 INDEX() 时,各行的索引分别为 1、2、3、4 等。

示例:对于分区中的第四行,INDEX() = 4。

LAST()


返回从当前行到分区中最后一行的行数。例如,下表显示每季度销售额。在 Date 分区中计算 LAST() 时,最后一行与第二行之间的偏移为 5。

示例:当前行索引为 3(共 7 行)时,LAST() = 4。

SIZE()


返回分区中的行数。例如,下面的视图显示每季度销售额。在 Date 分区中有七行,因此 Date 分区的 Size() 为 7。

示例:当前分区包含五行时 SIZE() = 5。

LOOKUP


返回目标行(指定为与当前行的相对偏移)中表达式的值。使用 FIRST() + n 和 LAST() - n 作为相对于分区中第一行/最后一行的目标偏移量定义的一部分。如果省略了偏移量,则可以在字段菜单上设置要比较的行。如果无法确定目标行,则此函数返回 NULL。

下面的视图显示每季度销售额。当在 Date 分区中计算 LOOKUP (SUM(Sales), 2) 时,每行都会显示接下来 2 个季度的销售额值。

语法:LOOKUP(表达式,[偏移量])

示例:LOOKUP(SUM([销售额]), FIRST()+2) along [维度],计算分区第三行中的 SUM(销售额)。

LOOKUPDATE


返回目标行(指定为与当前行的日期偏移若干时间单位后的日期行)中表达式的值。

语法:LOOKUPDATE(表达式, 日期表达式, 偏移量, 偏移单位) along [维度表达式]

示例:LOOKUPDATE(SUM([销售额]), [日期], -7, "DAY") along [维度],表示在分区中寻找当前行的日期减去7天后的日期行,返回该行的 SUM(销售额)。

RUNNING_AVG

返回给定表达式从分区中第一行到当前行的运行平均值。下面的视图显示每季度销售额。当在 Date 分区中计算 RUNNING_AVG(SUM([Sales]) 时,结果为每个季度的销售额值的运行平均值。

语法:RUNNING_AVG(表达式) along [维度]

示例:RUNNING_AVG(SUM([Profit]))计算 SUM(Profit) 的运行平均值。

RUNNING_COUNT

返回给定表达式从分区中第一行到当前行的运行计数。

语法:RUNNING_COUNT(表达式) along [维度]

示例:RUNNING_COUNT(SUM([Profit])) 计算 SUM(Profit) 的运行计数。

RUNNING_MAX

返回给定表达式从分区中第一行到当前行的运行最大值。

语法:RUNNING_MAX(表达式) along [维度]

示例:RUNNING_MAX(SUM([Profit])) along [Date],[Quarter] 计算 SUM(Profit) 的运行最大值。

RUNNING_MIN

返回给定表达式从分区中第一行到当前行的运行最小值。

语法:RUNNING_MIN(表达式) along [维度]

示例:RUNNING_MIN(SUM([Profit])) along [Date],[Quarter] 计算 SUM(Profit) 的运行最小值。

RUNNING_SUM

返回给定表达式从分区中第一行到当前行的运行总计。

语法:RUNNING_SUM(表达式) along [维度]

示例:RUNNING_SUM(SUM([Profit])) along [Date],[Quarter] 计算 SUM(Profit) 的运行总计。

WINDOW_AVG

返回给定表达式从分区中第一行到当前行的运行平均值。

语法:WINDOW_AVG(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_AVG(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 平均值。

WINDOW_COUNT

返回窗口中表达式的计数。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

语法:WINDOW_COUNT(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_COUNT(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 计数。

WINDOW_MAX

返回窗口中表达式的最大值。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

例如,下面的视图显示每季度销售额。Date 分区中的窗口最大值返回所有日期间的最大销售额。

语法:WINDOW_MAX(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_MAX(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 最大值。

WINDOW_MIN

返回窗口中表达式的最小值。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

例如,下面的视图显示每季度销售额。Date 分区中的窗口最小值返回所有日期间的最小销售额。

语法:WINDOW_MIN(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_MIN(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 最小值。

WINDOW_SUM

返回窗口中表达式的总计。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

例如,下面的视图显示每季度销售额。Date 分区中计算的窗口总计返回所有季度的销售额总计。

语法:WINDOW_SUM(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_SUM(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 求和。

WINDOW_VAR

返回窗口中表达式的样本方差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

语法:WINDOW_VAR(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_VAR(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 方差。

WINDOW_VARP

返回窗口中表达式的样本方差。窗口用与当前行的偏移定义。使用 返回窗口中表达式的有偏差方差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

语法:WINDOW_VARP(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_VARP(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 方差。

WINDOW_STDEV

返回窗口中表达式的样本标准差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

语法:WINDOW_STDEV(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_STDEV(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 标准差。

WINDOW_STDEVP

返回窗口中表达式的样本标准差。窗口用与当前行的偏移定义。使用 FIRST()+n 和 LAST()-n 表示与分区中第一行或最后一行的偏移。如果省略了开头和结尾,则使用整个分区。

语法:WINDOW_STDEVP(表达式, [开始位置, 结束位置]) along [维度]

示例:WINDOW_STDEVP(SUM([Profit]), FIRST()+1, 0) along [Date],[Quarter] 计算从第二行到当前行的 SUM(Profit) 标准差。

RANK

返回分区中当前行的唯一排名。为相同的值分配相同的排名,允许并列。使用可选的 “asc” 或者”desc” 参数指定升序或降序顺序。默认为降序。

语法:RANK(表达式, ["asc"|"desc"]) along [维度表达式]

示例:RANK(sum([销售额]), "desc") along [部门] 利用此函数,可以按照部门的销售额求和进行降序排名,其中的排名有并列且会跳过并列名次,若销售额分别为(6, 7, 7, 9) 则排名结果为(4, 2, 2, 1)。

RANK_UNIQUE

返回分区中当前行的唯一排名。为相同的值分配不同的排名。使用可选的 “asc” | “desc” 参数指定升序或降序顺序。默认为降序。

语法:RANK_UNIQUE(表达式, ["asc"|"desc"]) along [维度表达式]

示例:RANK_UNIQUE(sum([销售额]), "desc") along [部门] 利用此函数,可以按照部门的销售额求和进行降序排名,且排名不会并列,若销售额分别为(6, 7, 7, 9) 则排名结果为(4, 2, 3, 1)。

RANK_MODIFIED

返回分区中当前行的调整后竞争排名。为相同的值分配相同的排名。使用可选的 ‘asc’ | ‘desc’ 参数指定升序或降序顺序。默认为降序。

语法:RANK_MODIFIED(表达式, ['asc'|'desc']) along [维度]

示例:利用此函数,将对值集 (6, 7, 7, 9) 进行排名 (4, 3, 3, 1)。

RANK_DENSE

返回分区中当前行的排名。为相同的值分配相同的排名,允许并列,但不会跳过并列名次。使用可选的 “asc” 或者 “desc” 参数指定升序或降序顺序。默认为降序

语法:RANK_DENSE(表达式, ["asc"|"desc"]) along [维度表达式]

示例:RANK_DENSE(sum([销售额]), "desc") along [部门] 利用此函数,可以按照部门的销售额求和进行降序排名,其中的排名有并列但不会跳过名次,若销售额分别为(6, 7, 7, 9) 则排名结果为(3, 2, 2, 1)。