您可以创建一个组或计算项,以便作为热矩阵、表、数据透视表、格状图或图形中数据的一种显示方式。
通过组和计算项,您可以在数据源中不存在新“成员”时向列添加这些“成员”。这些成员也称为“定制成员”。
组是所选成员的静态列表或选择步骤生成的静态或动态列表。组表示为成员。您可以钻探为分层列创建的组,但不能钻探为属性列创建的组。
组使用与其一起显示的度量列的现有聚合函数。从 Oracle BI Server 中详细程度最低的级别向上执行聚合,但任何值都不会计算两次。
计算项是成员之间的计算,它表示为一个无法钻探的成员。当创建计算项时,您应当添加一个新成员,您在该成员中选择了如何聚合该项,例如总和、平均值或定制公式。计算在聚合级别执行,而不是在详细程度最低的级别执行。
如果您在创建组或计算项时选择了所有视图选项,则组和计算项将成为整个分析的选择步骤。因此,它们应用于该分析中的所有视图。这些组和计算项可保存为内嵌对象或命名对象。有关信息,请参阅将对象保存为内嵌或命名对象。
如果您通过选择当前视图选项来为特定视图创建组或计算项,则该组或计算项将只应用于特定的活动视图。
组 (在其他产品中也称为“保存的选择”) 是用户定义的列成员。
组可以是成员列表,也可以是一组为生成成员列表而执行的选择步骤。所有成员必须来自同一属性列或分层列,并且在分层列中,成员可以来自不同的层次级别。组始终按添加顺序在列的列表底部显示 (如“选择步骤”窗格中显示)。组可以包含成员或其他组。您可以创建一个定制组并将该定制组添加到视图内的列中。
您可以将组保存到目录并重用它。例如,您可以将组应用于分析、仪表盘列提示或变量提示。如果将组应用于提示,该提示在运行时会将该组作为一个选项列表选项 (或者将组成员作为多个选项列表选项) 向用户显示。有关当用户选择组或列成员时使用提示覆盖选择步骤的信息,请参阅使用列提示覆盖选择步骤。
计算项是成员之间的计算,它以一个成员的形式表示。
通过使用计算项,您可以覆盖在 Oracle BI 资料档案库中指定的默认聚合规则,对于现有分析,则覆盖设计人员选择的聚合规则。您可以使用定制公式 (默认值) 或者通过使用函数 (例如 SUM) 组合所选成员来定义计算项。
计算项是用户定义的列成员。计算项可包含多个成员或其他计算项。计算项始终按添加顺序在列列表底部显示 (如“选择步骤”窗格中所示)。您可以将计算项保存到目录并重用它。
当您希望将一组成员作为一个实体查看和处理时,计算项非常有用。例如,您可以为下列各项定义计算项:
某个地区的关键帐户
高端产品
非标准时段,如九月份的前三周
您可以在多个位置为列创建计算项。计算不同于应用于度量的默认聚合规则,如将总计添加到表和数据透视表中所述。计算项在内部作为 SQL SELECT 语句处理,并在结果集内执行指示的函数。有关 SQL 函数的详细信息,请参阅逻辑 SQL 参考。
可以为视图创建计算项或组。
使用以下过程可以创建计算项或组。
要创建计算项或组,请执行以下操作:
注:
当 Oracle OLAP 是分析的数据源时,您可能会在使用组的过程中遇到错误。如果组包含在视图中,并且显示一条错误消息,问题可能是该分析中的度量列使用了外部聚合。有关如何实施下面某个可能的解决方案的信息,请与管理员联系:
为资料档案库中的度量显式指定聚合规则。
在 Oracle OLAP 分析工作区中创建适当的值组作为维成员。
可以更新组和计算项以向用户提供最有用的信息。
您可以采用多种方法来编辑组和计算项:
在“选择步骤”窗格中,单击计算项或组的相应链接,然后单击编辑以显示相应对话框。
如果您已将对象保存到目录,请在“目录”窗格中选择该对象,然后单击编辑以便显示相应对话框。
在热矩阵、表、数据透视表或格状图中 (在外维边上),右键单击组或计算项,然后选择编辑组或编辑计算项。
组或计算项的值可能会受过滤器和选择步骤的影响,如以下列表中所述:
过滤器 - 仅使用未通过过滤器删除的成员来对组或计算项求值。例如,如果您需要对某个计算项执行 SUM(EAST + WEST),但已通过过滤器删除 WEST,则计算项仅包含 EAST 总和。如果已删除所有成员,则会返回一个空值,空值在热矩阵、表、数据透视表或格状图中显示为一个空白单元。
选择步骤 - 当创建选择步骤时,您可以在某个步骤中添加一个组或计算项。后续的“仅保留”或“删除”步骤可以引用该组或计算项中包含的成员。
后续步骤中保留或删除的成员会对组列表产生影响,但组大纲值保持不变。例如,假定 MyNewYork 组包含 Albany 和 Buffalo,并且其值为 100。另外假定在后续步骤中删除了 Albany。MyNewYork 组的值仍保持为 100,但 Albany 不再随该组列出。
计算项不受在后续步骤中保留或删除的成员的影响。
如果从所有视图中删除通过使用当前视图选项按钮创建的组或计算项,则组或计算项将保留,并且将不会添加到您随后添加的任何新视图。
如果从所有视图中删除通过使用所有视图选项按钮创建的组或计算项,则组或计算项将保留,并且将添加到您随后添加的任何新视图。
如果要使用右键单击菜单删除某个组或计算项,应考虑以下事项:
从仪表盘页内的视图中 - 将仅从当前视图中删除计算项或组。
从视图编辑器内的视图中 - 将从所有视图中删除计算项或组。
可以将组添加到在其他分析中创建该组时使用的同一列。
添加到分析的组可以是成员列表,也可以是一组选择步骤。有关这些组的信息,请参阅将选择步骤保存为组对象。
下面的过程介绍如何使用结果选项卡添加组,但是,您也可以在显示“目录”窗格的任意位置执行此操作。您也可以采用下列方式来添加组:
在编辑成员步骤对话框的操作框中选择以组或计算项开始,然后从“目录”窗格中的“可用”列表选择相应组。
在“选择步骤”窗格中,单击相应列对应的然后,新建步骤,选择添加组或计算项,再选择选择现有组和计算项,然后在生成的对话框中选择相应组。
要使用“目录”窗格将组添加到其他分析,请执行以下操作:
当使用组和计算项时,您可能需要“嵌套”组和计算项;举例来说,也就是在某个组中创建一个组。
下面的列表提供了嵌套组和计算项的各种情况:
组可以嵌套;即它们可以包含其他组。嵌套组“已展平”。例如,假设 my_favorite_countries 组包含 my_favorite_cities 组。当您在表中显示和展开 my_favorite_countries 组时,您将无法看到 my_favorite_cities 组,而会看到 my_favorite_cities 组的成员值。
可以嵌套计算项;也就是说,计算项可以包含其他计算项。
组不能包含计算项,计算项也不能包含组。
当使用选择步骤时:
您可以将包含组或计算项的选择步骤保存为将在运行时生成其结果的步骤系列,也可以将其保存为每次重新显示的静态结果。
您可以使用“目录”窗格应用作为已保存步骤选择的组。如果在保存的选择包含计算项的步骤时执行此操作,则只能添加组的成员。您无法添加组本身。
要了解计算项,您必须对 SQL 有着基本了解。
此部分中的示例和说明假定您已基本了解 SQL 语句及其语法。这些示例中显示的语法适用于新建计算项对话框中的“定制公式”函数。这些示例是虚拟的。此处并未显示所有可能的计算项。
示例 6-1 显示获取 SoftDrinkA、SoftDrinkB 和 SoftDrinkC 中每个产品的当前度量值 (例如,美元销售额) 所需的代码,并累加相应值。
这等效于从“函数”列表中选择“总和”,并键入或单击“SoftDrinkA”、“SoftDrinkB”、“SoftDrinkC”以将其添加到“函数”字段。
示例 6-2 获取 SoftDrinkA 或 SoftDrinkB 的当前最小度量 (取二者中的较小者),例如,美元销售额。
在示例 6-1 和示例 6-2 中,对外部层 (例如“Product”层) 中的每个成员执行每个函数计算项。例如,如果“Year”和“Product”位于一个轴上,并且上面的某个计算项是基于“Product”层构建的,则会按年计算结果。
示例 6-3 获取外部层 (例如“Year”和“Product”) 中每项的值,并累加这些值。
您不能为属性列指定命名的项 (例如,SoftDrinkA),但可以指定 $n 或 $-n,其中 n 是一个整数,表示该项在行中的位置。如果指定 $n,则从第 n 行提取度量。如果指定 $-n,则从倒数第 n 行提取度量。
例如,对于美元销售额,$1 从数据集内的第一行获取度量,$-1 从数据集内的最后一行获取度量。
示例 6-4 从第一、第二和第三行中获取项的当前度量 (例如美元销售额),并计算这些度量的总和。
示例 6-5 将 SoftDrinkA、SoftDrinkB 和 SoftDrinkC 的销售额相加。请注意,本示例中显示的两个计算项等效。也就是说,Sum 是默认函数;因此,可以忽略该函数。
示例 6-6 累加 SoftDrinkA 的销售额与食物 SoftDrinkA 的销售额,然后累加 SoftDrinkB 的销售额与食物 SoftDrinkB 的销售额,并返回这两个数量的最大值。
示例 6-1 获取当前度量的值
sum('SoftDrinkA','SoftDrinkB','SoftDrinkC')
示例 6-2 获取当前最小度量
min('SoftDrinkA','SoftDrinkB')
示例 6-3 获取外部层中每项的值
sum(*)
示例 6-4 获取度量值并计算度量值的总和
sum($1,$2,$3)
示例 6-5 累加销售额值
'SoftDrinkA' + 'SoftDrinkB' + 'SoftDrinkC'
sum('SoftDrinkA','SoftDrinkB','SoftDrinkC')
示例 6-6 累加销售额值并返回最大值
max('SoftDrinkA' + 'diet SoftDrinkA', 'SoftDrinkB' + 'diet SoftDrinkB')