在脚本中使用数组来增强故事
学习目标
使用数组循环结果集。
结果集迭代
结果集的可视化
在脚本中使用结果集之前,必须确保了解结果集的元素。
维标题 包含维名称。
在 "列标题" 和" 行标题" 中,可以找到通常形成树的成员。一个轴上所有成员的组合称为 轴元组 。
在行和列轴元组的交叉点处,可以在" 数据 "区域中找到数据单元格。
可以将行和列中的两个元组组合成具有相同效果的较大元组:选择单个数据单元格。诸如此类的"大元组"选择也存在一些更改,例如,如果维从行移动到列,或者轴被交换。
故事设计中使用"单个元组"方法来选择数据单元格。

单个数据单元的参考
可以使用数据源的 getData({selection}) 函数引用单个数据单元格。要指定单元格,请将选择传递给函数。选择以通用 JSON 格式写入。
对于每个单元格,可以获取以下值之一:
格式化值,例如 10,803,914.00
原始值,例如 10803914

读取选择集
如果必须使用多个单个数据单元格,则可以使用选择。例如,您可以将一组选择读取到数组中,然后生成所需的可视化,对数组循环。

从选择中读取单元格值
第 1 步:将所需的选择读入数组中。
第 2 步:循环数组并使用函数。例如,使用 getData({selection}) 函数对数据值进行可视化/反应。

以下是上述示例中使用的代码:
var selections = Table_1.getDataSource().getDataSelections({
[Alias.MeasureDimension]:"00O2SOEHXWHF3AU4LBEW8WZSX",
"0D_NW_BP__0D_NW_CNTRY":"US"
});
console.log(selections);
for (var x=0; x<selections.length; x++ ){
var cell = Table_1.getDataSource().getData(selections[x]);
console.log(cell.formattedValue);
}
从选定内容中读取维成员
可能仅使用值是不够的,因为您的用户想要了解值所属的元素。
您可以使用 getResultMember(dimension, {selection}) 函数执行此操作,如下图所示。

以下是上述示例中使用的代码:
var selections = Table_1.getDataSource().getDataSelections({
[Alias.MeasureDimension]:"00O2SOEHXWHF3AU4LBEW8WZSX",
"0D_NW_BP__0D_NW_CNTRY":"US"
});
console.log(selections);
for (var x=0; x<selections.length; x++ ){
var cell = Table_1.getDataSource().getData(selections[x]);
var year = Table_1.getDataSource().getResultMember("0CALYEAR", selections[x]);
var country = Table_1.getDataSource().getResultMember("0D_NW_BP__0D_NW_CNTRY", selections[x]);
console.log(country.description + " / " + year.description + " / " + cell.formattedValue);}
读取完整结果集
作为目前所显示内容的替代方法,您可以立即将结果集的整个(或部分)读入一个数组中。对于每个单元格,可以获得可在进一步脚本处理中引用的属性的完整列表。
例如:
var resultset = Table_1.getDataSource().getResultSet();
console.log(resultset);

要读取上述示例中的 值,您可以使用:
console.log(resultset[0][Alias.MeasureDimension].formattedValue);
getResultSet 的语法提供了三个可选参数。如果未指定任何参数,则检索整个可用结果集。
Table_1.getDataSource().getResultSet(selection?, offset?, limit?: integer)
selection 可用于限制返回的结果集,例如,限制为度量或维成员。
offset 在开始之前跳过偏移单元格以返回单元格。
limit 约束返回的单元格数。
脚本别名
脚本环境提供可用于引用不同标准对象的 Alias 对象。可用对象如下:
Alias.DefaultTheme
Alias.FlatHierarchy
Alias.MeasureDimension
Alias.NullMember
Alias.TotalsMember
要在脚本中引用结果成员,可以使用别名 Alias.TotalsMember。

要在脚本中引用度量维,可以使用别名 Alias.MeasureDimension。

循环结果集
**业务场景:**您的团队请求向故事中添加领导董事会。他们希望直观地显示前三个国家/地区,并在图像下方的表格中显示其余国家/地区。他们希望所有可视化数据在数据更改时立即自动更新,例如,当用户选择一年时。
要使用的故事已经通过可视化对象微件和某些必需的脚本创建,因为在本练习中,你将只编写一个脚本函数来循环结果集并相应地更新所有文本字段。当值需要保持最新时,需要使用此功能。
本视频将引导你完成所需的最终故事和脚本。
视频:本节含 SAP 官方视频(视频 ID
1_rn3jts7n),需在 learning.sap.com 在线观看。
模拟步骤
以下练习模拟 SAP Analytics Cloud 中的高级模式,并带你使用数组来循环结果集,如演示视频所示。
**任务流:**在本练习中,您将:
向页面和表添加脚本,以便在打开故事或表结果发生更改时更新文本微件
制定脚本,实现领导董事会的可视化
增强脚本功能以将表视图可视化
在查看模式下测试故事
练习:开始练习(SAP 官方交互式练习)