有效使用 API 设置筛选器

学习目标

  • 在故事脚本中对微件应用筛选器时,使用 setDimensionFilter API。

在本课中,我们将了解两个场景,这些场景介绍了如何以有效的方式使用 setDimensionFilter API。我们将从更简单的场景开始,在故事中仅使用一个图表,然后转到具有多个图表的更复杂的场景。

有效使用 API 设置过滤器 - 场景 1

在此场景中,我们将探索如何使用 SAP Analytics Cloud 故事中的 API 有效地设置过滤器,以及如何使用性能洞察工具分析对故事性能的影响。我们考虑通过防止使用 setRefreshPaused API 而不是在"生成器"面板中设置筛选器来阻止初始数据请求,从而避免对结果集进行额外的数据加载。

观看此视频以了解如何操作。

视频:本节含 SAP 官方视频(视频 ID 1_r3ct0ebx),需在 learning.sap.com 在线观看。

总结

在第一个场景中,以下步骤有助于优化故事性能并减少使用单个图表时对后端的调用次数。

  1. 在 onInitialization 事件脚本中,我们添加一个使用 setDimensionFilter API 在维上定义过滤器值的脚本。在我们的场景中,将国家/地区指定为维度,并将德国指定为值。

  2. 由于我们希望避免对结果集进行额外的数据加载,因此我们可以使用故事微件级别 的数据刷新 设置中的" 始终暂停 "选项以及该页面的 onInitialization 事件脚本中的 setRefreshPaused(false) API 来阻止初始数据请求。

Chart_1.getDataSource().setDimensionFilter("0D_NW_BP__0D_NW_CNTRY","DE");
Chart_1.getDataSource().setRefreshPaused(false);

具有第 1 页 onInitialization 事件脚本的 SAP Analytics Cloud 故事。屏幕截图中的脚本位于屏幕截图的上方。

有效方式使用 API 设置过滤器 - 场景 2

在此场景中,我们将浏览一个更复杂的场景,其中有三个图表和一个下拉列表,用于选择维度并将其作为过滤器应用于所有三个图表。首先查看读取维国家/地区所需的 onSelect 事件脚本,并将其写入将充当三个统计图的筛选器的下拉列表中。

我们查看编写脚本的正确和错误方法,并使用"性能洞察"工具分析性能并查看脚本优化建议,以将到后端的额外行程数量从三次行程减少到单个行程。

观看此视频以了解如何操作。

视频:本节含 SAP 官方视频(视频 ID 1_gi3yebm7),需在 learning.sap.com 在线观看。

总结

在第二个场景中,以下步骤有助于优化故事性能并减少使用多个图表时对后端的调用次数。

  1. 在下拉列表的 onSelect 脚本中,使用 copyDimensionFilter API 复制第一个 setDimensionFilter 调用的获取描述。 使用 copyDimensionFilter API,我们指定要从中复制过滤器的其他数据源。在我们的示例中,第一个统计图的数据源。

var ds = Chart_1.getDataSource();
ds.setDimensionFilter("0D_NW_BP__0D_NW_CNTRY",this.getSelectedKey());
Chart_2.getDataSource().copyDimensionFilterFrom(ds);
Chart_3.getDataSource().copyDimensionFilterFrom(ds);
  1. 在 onSelect 事件脚本中,使用 MemberInfo 对象提供筛选器值,而不是以字符串形式提供。 MemberInfo 对象使用 ID说明参数周围的花括号以 JSON 样式指定。当我们在 onInitialization 事件中创建条目时,我们提供了这两个元素,我们现在可以使用 getSelectedKeygetSelectedText 方法在 MemberInfo 对象中使用它们。

var ds = Chart_1.getDataSource();
ds.setDimensionFilter("0D_NW_BP__0D_NW_CNTRY",{id:this.getSelectedKey(), description:this.getSelectedText()});
Chart_2.getDataSource().copyDimensionFilterFrom(ds);
Chart_3.getDataSource().copyDimensionFilterFrom(ds);

具有第 1 页 onInitialization 事件脚本和下拉列表的 onSelect 事件脚本的 SAP Analytics Cloud 故事。