报告设计最佳实践
本主题介绍使用 Application Studio 在 OLAP 多维数据集上编写报告时需要考虑的关键因子。
前端考虑因素
本表显示了前端报告设计的关键考虑因素:
考虑因素 | 说明 |
---|---|
您的报告是否包含嵌套超级数据块? | 基于切片的报告,并且当对超级数据块进行筛选以排除空值等时,其性能更佳。使用切片需要一定的学习曲线,而且缺少一些可用性功能,但可用的功能可以满足 80% 的使用场景。 |
报告是否需要垂直滚动? | 如果是,则在报告页脚加入分页 Web 扩展。它能改善用户体验,提高性能。 |
报告是否使用条件格式设置? | 条件格式设置是一项功能强大的特征,但要慎用,因为它在评估条件时会影响性能。使用数字格式时,可以避免条件格式设置,而依赖于数据库中定义的数字格式。Application Studio 对公式的数据请求进行群集,然后发送到 OLAP 数据库。结果是一个整体查询,而不是多个单元格查询。群集查询比单个单元格访问更快。条件格式和报告跳转中的数据读取公式不能进行群集,始终以单个单元格请求的方式进行查询。 |
样式表报告是否设计过度? | 在开发新样式表时要考虑简洁性,并尽可能克制在现有样式表中不断添加内容的冲动。样式的数量会增加报告的大小。 |
您是否已指定报告实体的初始化选择? | 如果存储了用户可视化的最后一个实体,报告加载速度会更快。例如,如果在“所有实体”级别加载报告,则必须获取更多的数据,而且报告需要更多时间来加载。 |
您是否使用无状态控件(例如查找对象),而不是基于列表视图的控件? | 基于列表视图的控件(例如组合框)在报告加载时检索元素列表。无状态控件不检索元素列表,这使得它们的加载速度更快。 |
您是否彻底测试过您的报告? | 您可以构建连接字符串以派生元素 ID 的报告,但如果您将请求发送到 OLAP Server 以派生不存在的元素,则可能会出现错误和超时。测试应该始终考虑最终用户的安全设置。 |
列表筛选器 | 某些筛选器类型比其他筛选器类型慢,例如特性筛选器比值筛选器慢。筛选器通常比结构选择慢。在筛选器中避免使用大数据区域。每个维度选择的元素越多,筛选器的速度就越慢。 |
全局操作 | 考虑使用全局操作来减少单个报表的计算时间。全局操作在用户登录期间、创建 Repository Modeler 之后以及创建任何引擎之前运行。全局变量值在任何报告开始加载之前已设置好。 |
报告变量 | 避免在变量中使用大字符串。 |
后端、环境和人际关系方面的考虑因素
在成功的项目中,报告开发人员和多维数据集作者之间有一个反馈循环。糟糕的多维数据集设计可能是导致性能不佳的最大因子。此表显示了需要考虑的重要因子:
考虑因素 | 说明 |
---|---|
用现实的数据集合编写报告和测试报告 | 维度包括多达 30 个元素、多维数据集包括几百个数据点的报告性能会很好,但由于数据集较大,维护起来比较困难。使用真实的数据集进行测试至关重要。 |
写出正确的 OLAP 规则。写得不好的规则示例:[收入] = [价格] * [数量] 或 [账户 1] = [账户 2}+ [账户3] + [账户4] | 熟悉编写 OLAP 规则的最佳实践。请参阅联机文档以获取指导。 |
结构不良的维度 | 考虑一个顶层元素为“所有产品”,但有 10,000 个子级的产品维度。在某些时候,用户很可能会触发对 OLAP Server 的请求,要求检索全部元素,并有可能显示全部元素。中间层次结构使基于层次结构的报告具有更多性能。 |
大量用户 | 避免在上班时间更改维度,因为此时是用户联机的高峰期。 |
维度中缺少父级元素,例如年份总元素 | 与在 OLAP 数据库中计算总计的报告相比,在隐藏列中检索每日数据以进行累加并显示为年份总计的报告要慢得多。 |
特性的误用 | 特性可以自由定义并用于筛选报告,但筛选的报告性能不如按潜在特性值对元素进行分组的层次结构。 |
确保 OLAP Server 有足够的 RAM | OLAP 是一种内存数据库。写得不好的查询会消耗大量 RAM。如果你的 OLAP Server 是分页的,性能预期会很差。 |
不要将事务数据集放在多维数据集中 | Infor OLAP 针对平衡级别报告进行了优化。您可以建立一个性能不佳的报告,而应用程序不会阻止。例如,您可以在采购订单的行文件上建立一个详细多维数据集,但这可能性能不佳。 |
写一个糟糕的报告作为短期补救措施 | 抵制项目压力,不做创建性能不佳报告的事情。将您的担忧写成书面材料,并提出替代方案。 |
不要在多维数据集中存储零值 | 零是一个必须存储在 OLAP 内存中并在规则计算中进行评估的数字,而替代空值则不需要。您可以创建一个 Application Engine 流程,该流程可以将多维数据集中的零替换为空。 |
进行计算的最佳位置 | 这依存于多种因子,包括需要计算值的频率。以下是按首选项顺序进行计算的示例选项:
|
设置特定的默认元素 | 如果没有为分级维度选择特定的默认元素,则会选择顶层元素作为默认元素。这需要更多时间来重置默认元素。当前默认元素设置为维度的延长属性。 |
在版本 11 中,XML 接口的使用比通过内置接口通信要慢 | 为了加快通信速度,我们建议您不要通过单个单元格请求读取值,而是把它们放到一个或几个向 OLAP 提出的请求中。这可以通过多维数据集读取请求完成,方法是添加多个 CellCoordinate 标记。 |
使用服务器端分页功能使报告只查询可见值 | 超级数据块页面中的分页是在客户端进行的。从服务器返回全部单元格,但只绘制一个页面。 在 OLAP 列表中,使用子集函数在服务器端进行分页。 在关系列表中,使用查询中的高级方法来创建子集。 |
筛选查询以确保不查询维度中的全部元素 | 使用空值排除功能只显示已填充的单元格,显示某个父级下的全部元素,而不是显示整个维度。降低切片和列表中的初始展开级别。 |
避免在轴上放置大量维度 | 最佳数量为每个行轴三个维度,每个列轴一个维度。 |