设计穿透钻取报表
如果您是 Essbase 数据库管理器或更高版本,则可以创建穿透钻取报表定义,以允许用户访问存储在外部关系源中的更多数据。设计因素包括列映射、可钻取区域,以及(可选)参数化(如果要增加变量的灵活性)。
设计穿透钻取报表的一般注意事项
穿透钻取报表可从外部源系统或文件提取数据,或者链接到 Web 应用程序。要创建穿透钻取报表定义,您必须是数据库管理者或更高级别角色。在数据库的“脚本”部分中,在 Essbase Web 界面中创建该脚本。
每个穿透钻取报表定义必须包含列映射和可钻取区域。(可选)如果为穿透钻取报表提供外部源数据连接的数据源中存在参数化查询,您可以为运行时参数定义映射。
注意:
如果穿透钻取报表的数据源连接到 Oracle 数据库,则您可以选中使用临时表选项以提高 SQL "IN" 子句具有大量值的查询的性能。您还可以设计穿透钻取报表来访问 Web URL。
为穿透钻取报表定义列映射
Essbase 穿透钻取报表定义的列映射部分定义哪些外部源列应包含在报表中,以及这些列映射到的 Essbase 维,以及(可选)层代/级别筛选条件(指示要提供的访问深度)。
要深入了解列映射,请参见 Drill Through Report Definition 。
要定义列映射,
-
在主页上,打开应用程序并打开多维数据集。
-
在左侧面板中选择脚本。
-
单击穿透钻取报表。
-
单击创建,然后从菜单中选择数据源。
-
在名称字段中,添加报表名称。
-
在数据源字段中,选择要使用的数据源。
-
创建列映射:
-
从外部数据源中选择要包括在报表中的列。
-
选择要将每个列映射到的维。
-
选择用于映射的筛选条件;例如“0 级”、“层代”或“无”(对于维映射)。

-
完成后,单击可钻取区域。未定义区域,则无法保存穿透钻取报表定义,如 Define Drillable Regions for Drill Through Reports 中所述。
-
为穿透钻取报表定义可钻取区域
Essbase 穿透钻取报表定义的“可钻取区域”部分用于在 Essbase 多维数据集中指定一个或多个区域/数据交叉点,您可以从中提供对外部数据源中可用的其他详细信息的穿透钻取访问权限。
要使用 Essbase Web 界面指定可钻取区域,
-
完成穿透钻取报表的列映射后,单击可钻取区域。
- 单击加号并选择以下方法之一:
- 在空行中双击并使用计算语法定义区域:成员名称和成员集函数。
- 单击铅笔图标以打开可钻取区域选择器,选择要添加的成员,单击右键,然后从菜单选项中选择以定义区域。

-
单击保存。此时会显示一条消息,指示是否已成功更新穿透钻取报表。

可钻取区域示例
以下示例显示了 Smart View 中的可钻取区域(以蓝色突出显示)。
示例 1
要在 Market、Year 和 Scenario 维顶部、成员 Sales 以及 Product 维的所有 1 级成员定义可钻取区域,请使用:
Market,Year,Scenario,Sales,@LEVMBRS(Product,1)
钻取到 Smart View 工作表中时,生成的网格类似于以下:

示例 2
要为 Market 的后代定义可钻取区域,请使用:
@DESCENDANTS(Market)
钻取到 Smart View 工作表中时,生成的网格类似于以下:

示例 3
要在 Market、Year、Scenario 维顶部和成员 Sales 为 Product 维中层代 3 的成员定义可钻取区域,请使用:
Market,Year,Scenario,Sales,@GENMBRS(Product,3)
钻取到 Smart View 工作表中时,生成的网格类似于以下:

为穿透钻取报表实施参数
为了提高对外部源数据的穿透钻取报表的灵活性,您可以实施参数,使 Essbase 能够根据传递到 SQL 查询的变量动态构建穿透钻取报表。
如果您是数据库管理器或更高级别角色,您可以在穿透钻取报表中实施参数化数据源查询。
先决条件:应用程序管理器或更高级别的用户为您提供了访问使用固定(默认)值、替代变量或用户定义的外部函数作为参数的数据源。
Essbase 在运行时会识别参数的值,并将其当前值插入到执行穿透钻取时 Essbase 生成的查询中。
在穿透钻取报表定义中,您可以选择为运行时参数添加维、层代和级别映射。这样,您可以基于当前变量上下文进一步定制穿透钻取报表的结果。
如果您希望 Essbase 基于变量动态构建穿透钻取报表,请按照以下工作流进行操作:
-
在基础数据源查询中实施参数。这必须由应用程序管理器或更高级别的角色完成。
-
创建与数据源关联的追溯报表定义。
-
(可选)在穿透钻取报表定义中提供要供参数使用的运行时定制设置。下面提供了一个示例。
-
通过运行穿透钻取报表和检查平台日志来测试并验证预期行为。
运行时参数和用户定义的函数
以下示例用例基于先决条件假设:
-
在外部源系统中定义了用户定义的函数 getMonths。该函数返回逗号分隔的月份列表。
-
使用调用 getMonths 函数的查询定义了用于穿透钻取报表定义的数据源,如下所示:
select * from SampleBasic where month in (getMonths(?))
运行时参数的 0 级(递归)映射
在穿透钻取报表定义中,当运行时参数在 0 级绑定到 Year 时,
![穿透钻取报表定义的“运行时参数”选项卡。参数:Param1。变量:已选中。值:Sample.mnth。维:Year。层代绑定:Level0 [Level] 穿透钻取报表定义的“运行时参数”选项卡。参数:Param1。变量:已选中。值:Sample.mnth。维:Year。层代绑定:Level0 [Level]](img/drill-through-param-level0.jpg)
如果 Smart View 用户对 Year 维的 Qtr1 进行穿透钻取,则穿透钻取报表将包含 Jan、Feb、Mar。如果 Smart View 用户对 Year 进行穿透钻取,则穿透钻取报表将包含 Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec。
运行时参数的层代映射
在穿透钻取报表定义中,当运行时参数在 Quarter 层代绑定到 Year 时,
![穿透钻取报表定义的“运行时参数”选项卡。参数:Param1。变量:已选中。值:Sample.mnth。维:Year。层代绑定:Quarter [Generation] 穿透钻取报表定义的“运行时参数”选项卡。参数:Param1。变量:已选中。值:Sample.mnth。维:Year。层代绑定:Quarter [Generation]](img/drill-through-param-quargen.jpg)
如果 Smart View 用户对 Year 维成员进行穿透钻取,则穿透钻取报表将包含 Qtr1、Qtr2、Qtr3、Qtr4。
注意:
如果设置的运行时参数的维/层代绑定与列映射重叠,则设置无效。在此情况下生成的查询始终为空值集。