在 DB2 Data Warehouse Edition 中使用 Business Intelligence Reporting Tool 4
2008-12-12 16:36:06 来源:WEB开发网创建交互式报告(向下钻取)
到目前为止,我们看到的特性都只涉及一个报告。尽管可以根据不同的条件动态地修改报告元素,但是如果希望查看商店的某个子部门的详细数据,那么应该怎么办呢?可以单击希望查看详细数据的子部门,BIRT 就会转到另一个报告,这个报告显示子部门的详细数据。
在本节中,我们将使用 第 3 部分 中创建的汇总报告,并向下钻取到另一个显示所选子部门的详细数据的报告。首先准备一个向下钻取报告,它从汇总报告接收参数,然后显示相应的详细数据。
准备向下钻取报告
创建一个新报告并把它命名为 InteractivityReport.rptdesign。通过使用 MartLibrary,创建一个数据集并修改主页面。
创建数据集并在其中添加参数
现在我们来创建一些新参数,这些参数将驱动页面上的结果集。根据这些参数的值,从数据库获取数据并显示在网格中。
在 Data Explorer 视图中,右击 Report Parameter 并选择 New Parameter。
在向导中输入以下参数值:
Name: pDepartment
Data type: String
Display type: Text Box
Default value: CHILDREN SCHOOL APPAREL
选择 Hidden 复选框并单击 OK 关闭窗口。
为子部门创建另一个参数:
Name: pSubDepartment
Data type: String
Display type: Text Box
Default value: PANTS SCHOOL
选择 Hidden 复选框并单击 OK 关闭窗口。
创建另外三个新参数(与本系列前面部分中创建的参数相似)。把它们命名为 pStoreId、pYear 和 pMonth,把数据类型设置为整数。分别输入默认值 16、2002 和 3。对于所有参数,选中 Hidden 复选框。
图 1. 添加报告参数
在数据集中添加参数
创建数据集
在 Data Explorer 视图中,可以看到已经添加了 Db2Server 数据源。现在,可以创建自己的数据集并在报告中显示数据:
在 Data Explorer 视图中,右键单击 Data Set 节点并选择 New Data Set。New Data Set 向导打开。
如果还没有选择 DB2Server 的话,就选择它作为数据源。可以检查数据源类型(DB2Server)中的详细信息是否与前面设置的信息相同。
把数据集的名称改为 Interactivitydataset 并单击 Next。
查询编辑对话框打开,其中显示数据集的详细信息。把以下 SQL 语句(清单 1)粘贴到 SQL 框中:
清单 1. SQL 语句
select * from MARTS.V_SALES where DEPARTMENT = ? and SUBDEPARTMENT = ? and STOREID = ? and YEAR=? and MONTH=? |
选择 Finish。
在数据集的参数部分中,按照前面报告中动态更新查询的方法,把所需的参数(参数 1 到 5)与报告参数链接起来。
单击 Preview Results 查看查询的结果。
创建报告布局
现在要创建报告的布局。因为要从数据集获取许多详细信息,所以需要逐一添加列并按照您希望的次序在报告上显示它们。
按照以下步骤创建报告布局:
右键单击报告布局并插入一个表。把列数设置为 9 并选择 OK。
在 Data Explorer 视图中,单击加号(+)打开数据集,并把 STORENAME 列拖到表细节行的第一列中。
图 2. Data explorer 视图
按照相似的方式,把 CLASS、PRODUCT、ITEMS、BASKET、PRICE、CGS 和 SALES 列从数据集拖到表的细节行中。
现在,我们来看看用于创建这个报告的过滤器值:
右键单击这个表的标题行,选择 Insert > Row > Above,然后按照相同的过程创建另一行。
在最上面的标题行中,右键单击第一个单元格并插入一个标签。在这个标签中输入 Details for。同样,在最上面标题行的第二和第三个单元格中,插入 Department 和 Sub-Department。在最后三列中插入标签,文本分别是 StoreId、Year 和 Month。
在 Data Explorer 中打开 parameters 节点。把 pDepartment 拖到标签 Department 下面。按照相同方式,把其他参数拖到对应的标题下面。把表的第一行设置为粗体,让标题更加醒目。另外,把显示过滤器值的第二个标题行设置为斜体。
在运行时隐藏报告上的列
我们已经在报告上添加了许多详细数据,现在提供一个在运行时隐藏一些列的选项。
创建隐藏参数并在列中添加隐藏图像
首先创建一个参数,然后根据这个参数的值显示或隐藏列。
在 Navigator 视图中右键单击 Parameter 节点,单击 New Parameter。
输入以下参数值:
Name: hBasket
Data type: Integer
Display type: Text Box
Default value: 0
选择 Hidden 复选框并单击 OK 关闭窗口。
在标题行的 BASKET 列中,右键单击并选择 Insert > Image。在 “Select picture from” 中,单击 Embedded Image。
在本教程附带的源代码中(见 下载 一节),有一个 HideImage.bmp 文件。单击 Add Image,选择这个文件。
选择 OK 关闭对话框。我们将使用这个图像隐藏 BASKET 列。还可以看到这个图像已经添加到了标题行中。
启用列的隐藏
单击隐藏图像(H)。在 Property Editor 视图中 Properties 选项卡下面,单击 Hyperlink。
单击 “Link to:” 旁边的按钮。超链接对话框打开。
选择 Drill-through。
在 target report 部分中,单击 browse 按钮并找到 .../<workspace>/SampleReports/InteractiveReport.rptdesign。
在 Report Parameters 部分中,单击 Parameters。这时能够看到列出的报告中的所有参数。
选择 pDepartment 并选中 Required 框。
在 Value 部分中,单击提供的按钮。表达式构建器打开。
选择 Report Parameters > All,双击 pDepartment。对于 pSubDepartment、pYear、pMonth、pDay 和 pStoreID,执行相同的步骤。这会使这些参数在下一个报告中保持现有值。
对于 hBasket,选中 Required 框,并把值设置为 1。
在 “Show target report in” 部分中,选中 Show in Same Window 并把格式设置为 HTML。
单击 OK 关闭对话框。
图 3. 超链接选项
返回到编辑器的 Layout 选项卡。把鼠标放在表上;Table 选项卡出现。如果单击这个选项卡,就会显示表的布局。使用布局选择整个 BASKET 列。
在 Property Editor 视图中 Properties 选项卡下面,单击 Visibility 部分。
选中 Hide element 和 For all outputs。
单击 Expression Builder 按钮(...)。
删除 true 并输入 params["hBasket"]!=0。
选择 OK 关闭对话框。
图 4. 启用隐藏
预览报告并单击隐藏图像(H),查看结果。
可以重复相同的过程创建 hItem 参数,在标题中插入它,创建一个超链接,然后修改这一列的可见性,使 Items 列也隐藏起来。切记,要在隐藏 BASKET 的超链接选项中添加 hItem 参数(添加新参数之后,它就会出现在参数列表中),以使这个参数的值在交互期间保持原来的值。如果不这么做,在生成报告时 BIRT 会使用默认值。
添加预先创建的样式和基本格式
在这个报告中,复制 MonthlyProfitabilityReport 中创建的样式。把标题样式应用于标题行。与 MonthlyProfitabilityReport 一样,这个报告也用两种背景颜色交替显示细节行。
在标题中添加一个标签并在其中输入 STATUS。
把鼠标放在表上,Table 选项卡出现。把文本对齐设置为 centered,垂直对齐设置为 middle。把分页间隔设置为 25。
对数据进行复合排序
在默认情况下,报告中的行并不排序。BIRT 保持从数据库获取行的次序。下面按照 STORENAME 列进行排序,并介绍由用户在运行时执行的复合排序技术。
创建排序参数并在报告上添加排序图像
创建三个报告参数 sStoreName、sClass 和 sProduct,设置默认值 STORENAME 并选中 Hidden 复选框。我们将使用这些参数对细节行进行排序。
右键单击 STORENAME 列的标题单元格,选择 Insert > Image。在 Edit Image 中,选择 Embedded Image。
在本教程附带的源代码文件夹中(见 下载 一节),有一个 Sort.bmp 文件。单击 Add 并选择这个图像。
对 CLASS 和 PRODUCT 列的标题重复这个过程。
增加排序交互功能
单击 STORENAME 标题中的图像,在 Property Editor 视图中 Properties 选项卡下面,单击 Hyperlink。
单击 Link to: 按钮。
选择 Drill-through 作为超链接类型。
在 Report Design 中选择 .../>workspace</SampleReports/InteractiveReport.rptdesign。
在参数中选择 sStoreName。
选中 Required 框,输入 'STORENAME' 值。
在参数中选择 sClass。
选中 Required 框,在 value 部分中单击按钮,打开表达式构建器。
选择 Report Parameters > All,然后双击 sClass。
选择 OK 关闭构建器。
对其余参数重复相同的过程。对于 sProduct、pYear、pMonth、pStoreId、hItem 和 hBasket,在 value 部分中选择 Report Parameters > All,然后分别双击 sProduct、pYear、pMonth、pStoreId、hItem 和 hBasket。
在对话框中,选中 Same Window 和 HTML 格式,然后选择 OK 关闭它。
图 5. 排序交互功能
对于 CLASS 和 PRODUCT 重复相似的过程,修改在钻通时传递的参数的 Value 字段中的名称。例如,对于 sClass,传递的值是 'CLASS';对于 sProduct,传递的值是 'PRODUCT'。
在三个图像中添加所有参数之后,就要定义排序条件了。
把鼠标放在 layout 选项卡中的表上。单击表下面出现的 Table 选项卡。
在 Property Editor 视图中,选择 Sorting 选项卡,然后选择 Add。
在 Sort key 中输入 row[params["sStoreName"]],指定排序方向为 ascending(升序)。
图 6. 排序键
创建另外两个排序键,row[params["sClass"]] 和 row[params["sProduct"]],保持排序方向为 ascending。
现在可以在报告中看看运行时排序的效果了。但是,在此之前必须纠正几个问题。
我们已经创建了两个可隐藏的列。需要返回到 BASKET 和 ITEM 标题单元格中的这些图像,并在超链接的 report parameter 部分中输入这三个排序参数的值。尽管隐藏这些变量的值,但是必须保持它们的现有值。
在继续操作之前,保存报告。在 Layout 选项卡中,表应该与图 7 相似:
图 7. 报告布局
现在已经创建了钻通报告。下面要把它链接到汇总报告,MonthlyProfitabilityReport.rptdesign。
增加报告的交互功能
打开 MonthlyProfitabilityReport.rptdesign。在编辑器的 Layout 选项卡中,单击细节行中的 SUBDEPARTMENT。
在 Property Editor 视图中 Properties 选项卡下面,单击 Hyperlink。一个对话框打开。
选择 Drill-through 单选按钮。
单击 Report Design 的 browse 按钮,打开文件浏览器。找到 ../>workspace</SampleReports/InteractivityReport.rptdesign。
在 Parameter 部分中,单击第一个参数行,显示下拉列表。列表中显示 InteractivityReport.rptdesign 的参数。把 InteractivityReport 的参数链接到 MonthlyProfitabilityReport 的行和参数。
在下拉列表中,选择 pDepartment。
选中必需的列,单击值列的按钮。表达式构建器打开。
在 Category 部分中,选择 Available Column Bindings。
对于 Sub-category,选择 All。
双击 DEPARTMENT 列把它添加到表达式中。
选择 OK 关闭构建器。
图 8. 增加交互功能
按照相似的方式,选择 pSubDepartment 参数,打开构建器并选择 SUBDEPARTMENT 列。这会把 SUBDEPARTMENT 的值传递给 InteractivityReport。
因为还必须把 MonthlyProfitabilityReport 中的参数传递给 InteractivityReport,我们来添加这些参数。
单击 Parameter 下拉列表并选择 pStoreId。
选中 Required 列,打开表达式构建器。
在 Category 部分中,选择 Report Parameters。
在 Sub-category 中,选择 All。
双击 pStoreId 输入它作为表达式。
对于 pYear 和 pMonth 报告参数重复相同的过程。这会把报告参数从 MonthlyProfitabilityReport 传递给 InteractivityReport。
最后,选择在同一个窗口中显示目标报告,关闭对话框。
图 9. 交互性超链接
保存报告并预览 MonthlyProfitabilityReport。现在能够在 SUBDEPARTMENT 列中看到超链接。
图 10. 增加的交互功能
单击任何子部门,可以看到报告钻通到交互性报告,并根据适当的过滤器显示数据。
当单击 CHILDREN SCHOOL APPAREL 部门下属的 PANTS SCHOOL 子部门时,交互性报告如图 11 所示:
图 11. 最终的报告
它只包含符合以下条件的行:部门为 CHILDREN SCHOOL APPAREL,子部门为 PANTS SCHOOL,商店 Id 为 16,年份是 2002,月份是 3。
在一个报告上同时使用图表和网格
到目前为止,我们总是在不同的报告上显示网格或表。本系列 前面的教程讨论了如何创建基本的报告和图表(见 第 2 部分)、如何创建复杂的报告(见 第 3 部分)以及如何在报告中创建钻通(在本教程前面讨论)。本节将讨论如何链接同一个页面上的图表和报告,根据相同数据集的不同列创建图表,然后在图表上提供钻通特性。关于如何创建简单的图表,参见本系列的 第 2 部分。
本节假设您已经学习了创建基本图表的过程并熟悉这些步骤。创建一个新报告并把它命名为 ChartAndGridGroupReport.rptdesign。选择一个空模板。这是一个高级配置,所以需要从一个空报告开始从头创建布局。添加 MartLibrary 中的数据源和主页面(见 第 2 部分)。
创建数据集和计算列
创建一个数据集并把它命名为 ChartAndGridGroupdataset。输入以下查询:
清单 2. 查询
select MARTS.V_SALES_GROUPED.GROUP,MARTS.V_SALES_GROUPED.ITEMS, MARTS.V_SALES_GROUPED.CGS,MARTS.V_SALES_GROUPED.SALES, MARTS.V_SALES_GROUPED.PROFIT,MARTS.V_SALES_GROUPED.PROFITPCT from MARTS.V_SALES_GROUPED |
我们要创建一个按照特定组显示利润率的图表。为此,创建一个计算列,它显示各个组实现的利润率。创建一个计算列并把它命名为 ProfitPerGroup,选择类型为 float,输入表达式 (row["PROFIT"]/Total.sum(row["PROFIT"]))*100。
在继续操作之前,保存报告。
创建报告的布局
在 Layout 选项卡中,右键单击插入一个网格。在网格的 Property Editor 视图中,指定这个网格为两行两列。单击各行,设置选项,把每列的宽度和每行的高度设置为 50%。另外,对于网格中的每个单元格,在 Border 选项卡中把边框的每一边设置为最小线宽度。
创建销售图表
在第一行的第一列中,插入一个图表。在 Chart types 类型中,选择 Pie chart 并把 dimension 设置为 2D。
选择输出格式为 jpg。
单击 Next 选择数据。
选择 Use Data Set 单选按钮并选择 ChartAndGridGroupdataset。
把 GROUP 列拖到 Category Definition 中,把 Sales 列拖到 Slice Size Definition 中。
图 12. 选择显示的数据
单击 Next 移动到 Format Chart 选项卡。
在 Series 节点中,选择 Category Series。
在 Category Series 选项卡中,启用分组。指定 Type 为 Text,Interval 为 0,Aggregate Expression 为 Sum。
图 13. 饼图标题
单击 Value Series 节点。
把 Leader Line size 设置为 50,By Distance value 设置为 5。在预览中可以看到修改这些设置的效果。
移动到 Chart Area 节点,输入图表标题 Sales。
取消 Interactivity 复选框(在本教程的下一节中会调整这个设置)。
单击 Text Format 按钮。
单击 "Font" 旁边的按钮(...)。
把 Font 设置为 Arial,Size 设置为 14,Style 设置为 Bold。
把 Color 设置为 Navy blue,Alignment 设置为 Left align。
选择 OK 关闭对话框。
图 14. 编辑图表
移动到 Legend 节点。
单击 Layout 按钮并做以下修改:
Orientation: Horizontal
Position: Below
Anchor: West
Stretch: Horizontal
Direction: Top Bottom
图 15. 布局
在默认情况下,图例会显示在图表的左边。这里把它设置为显示在图表下面。
按 Finish 关闭 Chart 向导。
以刚才创建的销售图表作为基础,通过修改它,在同一个报告上创建另外两个图表。这些图表放在报告的其他单元格中,并使用数据集中不同的列。最后,我们将在网格的最后一个单元格中添加一个表,它以聚合的格式包含所有数据。这三个图表的大多数格式是相同的,所以只需复制并粘贴刚才创建的图表,并修改 Slice Size Definition 部分中连接的数据集。
创建 Profit 和 Profit % 图表
把销售图表复制到第一行第二列中。
双击这个图表,再次打开向导。
移动到向导的 Select Data 部分。把数据集中的 Profit 列拖到 Slice Size Definition 部分中。
移动到向导的 Format Data 部分。单击 Value Series 节点。
单击 Label 按钮,在 Prefix 文本框中输入一个 美元符号($)。
图 16. 标签
单击 Chart Area 节点。
在 chart title 中,把 Sales 改为 Profits。
把销售图表复制到第二行第一列中。
双击这个图表,再次打开向导。
移动到向导的 Select Data 部分。把在数据集中创建的计算列 ProfitPerGroup 拖到 Slice Size Definition 部分中。
移动到向导的 Format Data 部分。
单击 Value Series 节点。
单击 Label 按钮。
输入后缀 % 并关闭这个选项卡。
单击 Chart Area 节点。
在 chart title 中,把 Sales 改为 Profit %。
可以看到我们通过复制销售图表并修改它,省去了许多工作。现在,我们要在网格的最后一个单元格中添加一个表。
添加网格并映射到图表的值
在空单元格中添加一个包含六列和一个细节行的表。
在 data set 下拉列表中选择 ChartsAndGridGroupdataset。使用 Property Editor 视图为表创建一个新组。
把它命名为 gGroup 并在 “Group On” 部分中选择 GROUP 列。(关于创建分组报告的更多信息,参见本系列 第 3 部分 中的 “创建分组报告” 小节。)
因为只需要汇总信息,所以隐藏细节行。
单击 Hide Detail 复选框。
其他设置保持默认值,选择 OK。
图 17. 分组
系统会在表中添加组标题和页脚。可以删除表标题行、细节行和页脚行,因为不需要它们。
在 gGroup 标题行的 GROUP 单元格中插入一个数据元素。把它命名为 ItemsSum,指定数据类型为 Integer,并在表达式构建器中选择 Items 列。
按照相似方法创建另外三个数据元素,数据类型为 Float,名称分别为 ProfitSum、SalesSum 和 Profit%Sum。
在 expression 部分中分别输入 row["PROFIT"]、row["SALES"] 和 row["ProfitPerGroup"]。
其他设置保持默认值。
因为希望显示每个数据元素的标题,所以插入另一个组标题行,并插入对应的标题。
把 DailySalesReport 中创建的样式应用在这个报告上。复制那些样式并粘贴在这个报告的大纲中。把标题样式应用于包含所有标签的组标题(关于创建标题样式的更多信息,参见本系列 第 2 部分 中 “创建第一个 BIRT 报告” 中的 “设置报告的格式和样式” 小节)。
报告的布局应该与下面的图 18 相似:
图 18. 最终布局
如果查看报告的预览,就会看到小图表,而且会发现布局还没有完全设置好。
单击销售图表。
在 Property editor 视图中 Properties 选项卡下面的 general 部分中,把宽度改为 6 英寸(in),高度改为 4 英寸(in)。对 Profit 和 Profit % 图表重复这个步骤。表会相应地调整。
保存报告并预览它。
注意:如果没有看到 图 19 中显示的图表,那么可能是因为透视图首选项设置不合适(见 图 20)。必须修改设置,让系统在预览时获取所有数据行。选择 Windows > Preferences > Report Design > Preview。把显示值的最大行数改为 2147483647。通过从数据库获取这么多行,BIRT 报告就能够显示数据了。
图 19. 图表和网格
图 20. 首选项
增加图表交互功能
在本节中,我们将在前面创建的报告中增加交互功能。用户单击图表中的部分或网格中的文本,就可以转到显示这一组的详细数据的报告。我们将创建两个看起来完全相同的报告,但是它们分别显示部门和子部门的信息。用户可以从组级钻通到部门级,然后从部门级钻通到子部门级。
在增加交互功能之前,我们先在这个报告中添加动态查询特性。
在 ChartAndGridGroup 报告中添加动态查询
我们来创建几个参数,并提供修改用来生成报告的 StoreID、Year 和 Month 的基本交互功能。
在 ProfitabilityByDepartment.rptdesign 报告中,从 layout 选项卡复制列表,并把它粘贴到 ChartAndGridGroup 报告的网格下面。
删除列表页脚中的表并把 ChartAndGridGroup 报告的网格粘贴在这里。
把标题由 “Monthly Profitability By Department” 改为 Monthly Profitability。
在列表标题上,已经插入了一个网格。在网格上,在动态文本中(用来插入动态查询),把报告名称改为 ChartAndGridGroupReport.rptdesign,其他设置保持默认值。
按照 profitability 报告中的方法,添加三个参数 —— StoreId、Year 和 Month。(关于创建数据集并在其中添加参数的更多信息,参见本系列 第 3 部分 中 “创建汇总报告” 中的 “创建报告参数” 小节。)
在 ChartAndGridGroupdataset 查询中添加 where 子句:where StoreId = ? and Year = ? and Month = ?
在数据集的 Parameter 部分中做必要的修改,把它们链接到报告参数。
保存报告并在编辑器中预览报告。现在应该会看到动态查询文本框。
图 21. 添加了动态查询的图表和网格
因为下面要创建的钻通图表将使用相同的布局,所以我们用组级图表创建一个模板。这样的话,通过修改数据集查询和布局中的参数链接,就能够生成新报告,避免重复设置布局。
创建模板
打开 ChartsAndGridGroupReport.rptdesign 报告。
在 Outline 视图中,右键单击根节点(它显示报告名)并选择 Publish to Template Folder…。
在 Display Name 框中,输入 Samples Template。
在 Description 中,输入 Three Charts and One Grid。
选择 Sample Reports 源代码中提供的 3 Charts and 1 Grid.GIF 图像文件作为模板的图像(见 下载)。
按 OK 关闭对话框。
图 22. 发布到模板
使用刚才创建的模板创建一个报告(钻取报告)
现在使用刚才创建的模板创建几个报告:
在 Navigator 视图中右键单击 Sample Reports Project 并创建一个新报告。
把报告名称改为 ChartsAndGridDeptReport.rptdesign 并选择 Next。
在 Report Templates 的各种选项中,选择 Samples Template。可以看到模板的描述和图像。
按 Finish 关闭对话框。
图 23. 使用模板
一个新报告会在布局中打开。在默认情况下,它与前面的报告完全相同。下面修改数据集、图表和网格链接以及动态查询网格,并在报告中增加交互功能。
在列表标题中,已经插入了一个网格。在这个网格中,打开为启用动态查询而添加的动态文本。
把报告名称改为 ChartsAndGridDeptReport.rptdesign。
按 OK 关闭对话框。
在最后一行的中间列中插入一个标签,并输入文本 GROUP。
把颜色改为深蓝色并设置粗体。
把数据集名称改为 ChartsAndGridDeptdataset,把查询改为:
清单 3. 修改查询
|
把计算列名称改为 ProfitPerDept。因为使用了模板,所以不需要重复创建在 GROUP 报告中创建的计算列 PorfitPerGroup。
因为已经把图表和列的大小设置为 6 英寸宽和 4 英寸高,根据布局宽度不同,可能必须恢复原来的设置(宽度 212 点,高度 130 点)。
在 layout 视图中,双击销售图表并把数据集改为 ChartsAndGridDeptdataset。
选择 DEPARTMENT 作为 Category Definition,选择 SALES 作为 Slice Size Definition。
关闭向导。
按照相似方式修改 Profit 和 Profit % 图表,把数据集改为 ChartsAndGridDeptdataset,选择 DEPARTMENT 作为 Category Definition 替代 GROUP,对于 Slice size 分别选择 PROFIT 和 ProfitPerDept。
把鼠标放在表上,Table 选项卡出现。
在 Property editor 视图中 Binding 选项卡下面,在下拉列表中选择 None 以清空绑定信息。
一个警告消息指出当前没有释放绑定,按 OK。
同样,在下拉列表中选择 ChartsAndGridDeptdataset。这会把数据集绑定到表。
图 24. 编辑数据集绑定
移动到 Groups 选项卡。
编辑 gGroup 组,把名称改为 gDepartment。
选择 DEPARTMENT 作为 Group On,清空 Table Of Content 表达式值。
按 OK 关闭对话框。
在 layout 视图中,删除包含 GROUP 条目的列。
双击布局中的 ITEMS 数据类型。可以看到绑定已经消失了,这是因为已经改变了数据集。
把数据元素名称改为 ItemSum,选择 Integer 数据类型。
在 expression 框中,输入 Total.sum(row["ITEMS"])。
对于其他数据元素(PROFIT、SALES 和 PROFIT %),重复相同的过程,表达式分别为 Total.sum(row["PROFIT"])、 Total.sum(row["SALES"]) 和 Total.sum(row["ProfitPerDept"])。
对于所有数据元素,把 Aggregate on 设置为 gDepartment,数据类型为 Float。(更多信息参见本教程中 “在一个报告上同时使用图表和网格” 中的 “添加网格并映射到图表的值” 小节。)
现在,已经完成了钻通报告的布局。下面要链接 Group 报告和 Department 报告。
增加交互功能
现在要把两个报告关联起来。这样的话,单击报告中的一个部分,就会打开钻通报告。
在 ChartsAndGridDeptReport 报告中添加一个新参数,把它命名为 pGroup 并选择 string 数据类型。
输入默认值 APPLIANCES AND ELECTRONICS 并隐藏它。
把这个报告参数拖到网格单元格 GROUP 中(这个网格在列表的标题中)。
把数据集查询改为:
清单 4. 数据集查询
select RTRIM(MARTS.V_SALES_GROUPED.DEPARTMENT)AS DEPARTMENT,
MARTS.V_SALES_GROUPED.ITEMS,MARTS.V_SALES_GROUPED.CGS,
MARTS.V_SALES_GROUPED.SALES,MARTS.V_SALES_GROUPED.PROFIT
from MARTS.V_SALES_GROUPED
where StoreId=? and Year=? and Month=? and GROUP = ?
添加参数 pStoreId、pYear、pMonth 和 pGroup。
在 ChartsAndGridGroupReport 中,单击表的组标题行中的 GROUP 数据元素。
在 Property Editor 视图中 Properties 选项卡下面的 Hyperlink 部分中,选择 Link To 为 Drill-through。
在 Report Design 中输入 ../<workspace>/SampleReports/ChartsAndGridDeptReport.rptdesign 并链接以下参数:
清单 5. 链接参数
pStoreId to params["pStoreId"]
pYear to params["pYear"]
pMonth to params["pMonth"]
pGroup to row["GROUP"]
这会把表中的 GROUP 列与超链接链接起来。完成之后,在图表中添加交互功能,首先从销售报告开始,然后对其他图表重复相同的过程。
在继续操作之前,保存报告。
双击销售报告,打开它。
在 Format Chart 部分中,选中 Interactivity 复选框。
图 25. 图表区域
移动到树的 Value Series 节点。
单击 Interactivity 按钮。
在 Interactivity 对话框中,从下拉列表中选择 Mouse click 作为类型,选择 URL Redirect 作为操作。
单击 Edit Base URL 按钮。超链接对话框打开。
在 Report Design 中输入 ../<workspace>/SampleReports/ChartsAndGridDeptReport.rptdesign,把参数 pStoreId、pYear 和 pMonth 与报告参数链接起来,如 图 26 所示。要在 Interactivity 部分中添加 pGroup 参数。无法通过表达式构建器获得这些值,必须手工输入。
图 26. 超链接对话框
按 OK 关闭对话框。
在 Interactivity 对话框中的 Category Series 文本框中,输入 pGroup 并单击 Add 按钮。
关闭对话框。
图 27. 增加图表交互功能
完成之后,把类型设置为 Mouse Over,操作设置为 Show Tooltip。
在表达式构建器中,选择 GROUP 列。
关闭表达式构建器并选择 Add。
把类型设置为 Mouse Move,操作设置为 Show Tooltip 以显示 GROUP 列,然后选择 Add。
选择 Finish 关闭 chart 向导。
对 PROFIT 和 PROFIT % 图表重复相同的过程。
保存报告并在 Preview 选项卡中预览报告。
单击饼图的不同部分,查看此组中部门的信息。
图 28. 预览
图 29. 最终的报告
创建从部门钻通到子部门级的报告
从部门钻通到子部门级的过程是相同的。如果理解了前一节,您就可以自己完成这个任务。可以按照以下步骤增加这种交互功能:
使用 Samples template 创建一个名为 ChartsAndGridSubDeptReport.rptdesign 的新报告。
创建一个名为 pDepartment 的报告参数,把它的默认值改为 Computer Technology。
把数据集设置为 ChartsAndGridSubDeptdataset,在查询中添加子部门所需的 where 子句。在数据集中添加必要的参数(参见本教程 “在一个报告上同时使用图表和网格” 中的 “使用刚才创建的模板创建一个报告” 小节)。
清单 6. 添加 where 子句
select MARTS.V_SALES_GROUPED.SUBDEPARTMENT,MARTS.V_SALES_GROUPED.ITEMS,
MARTS.V_SALES_GROUPED.CGS,MARTS.V_SALES_GROUPED.SALES,
MARTS.V_SALES_GROUPED.PROFIT from MARTS.V_SALES_GROUPED
where StoreId=? and Year=? and Month=? and Department=?
把计算列的名称改为 ProfitPerSubDept。
在列表标题中,已经插入了一个网格。在这个网格中包含动态查询的动态文本。在动态文本框中,把报告名称改为 ChartsAndGridSubDeptReport.rptdesign。
在最后一行的中间列中插入一个标签,并输入文本 DEPARTMENT:。
把颜色改为深蓝色并设置粗体。
把 pDepartment 参数拖到标签下面的列中。
在继续操作之前,保存报告。
在布局中双击销售图表并在 Select Data 部分中添加 ChartsAndGridSubDeptdataset。
把 SubDepartment 列拖到 Category 中,把 Sales 列拖到 Slice Size Series 文本框中。
对 PROFIT 和 PROFIT % 图表重复相同的过程,但是把 Slice Size Series 列分别设置为 PROFIT 和 ProfitPerSubDept。
把鼠标放在表上,编辑它与 ChartsAndGridSubDeptdataset 数据集的绑定。
按照与部门图表相同的方式,编辑表上的数据元素。
图 30. 编辑绑定
完成了基本设置之后,就要在部门报告上添加交互功能。
打开 ChartsAndGridDeptReport.rptdesign。添加与 ChartsAndGridGroupReport.rptdesign 相似的交互功能,先为表启用交互功能,然后是图表。
单击 Group 标题中的 Department 数据元素并添加一个超链接。
选择 ../<workspace>/SampleReports/ChartsAndGridSubDeptReport.rptdesign 作为报告设计。
在其中添加参数。切记,不要在这里添加 pDepartment 参数(与前面一样,将在 Interactivity 对话框中添加它)。
图 31. 超链接选项
用 pDepartment 更新 Interactivity 部分和 Category Series 值。
设置了表之后,双击图表,打开向导的 Format Chart 页面。
在 Chart Area 节点中启用 Interactivity,移动到 Value series。选择 Mouse Click 事件类型和 URL Redirect 操作。
添加 Mouse Over 和 Mouse Move 事件类型,以工具提示的形式显示 row[“DEPARTMENT”] 值(更多信息参见本教程 “在一个报告上同时使用图表和网格” 中的 “添加网格并映射到图表的值” 中的 “增加交互功能” 小节)。
图 32. 图表交互功能
对 PROFIT 和 PROFIT % 图表重复相同的过程。
保存图表并在编辑器中预览。
现在,可以使用图表部分或表,从 GROUP 钻通到 DEPARTMENT,再从 DEPARTMENT 钻通到 SUBDEPARTMENT。
图 33. 子部门报告
结束语
本教程是 在 DB2 Data Warehouse Edition 中使用 Business Intelligence Reporting Tool 系列 的最后一部分。本系列帮助您在 DWE Design Studio 中使用 BIRT 理解和构建报告。本系列首先在 Design Studio 中设置了创建报告所需的环境,然后讲解了从创建简单的表和图表,直至创建复杂的可分组交互性报告的各种内容。本系列讨论了以下主题:
添加主页面
在运行时对列进行排序和隐藏
分页
创建内容目录
创建和重用样式
创建红绿灯
使用报告中的多个列创建复杂的聚合计算
本系列的最后这一部分主要讨论交互功能、模板和钻通,这是报告的核心。
- ››DataGrid中CheckBox绑定bool属性来进行选中判断
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››data/data/目录下的私有数据
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
更多精彩
赞助商链接