请求聚合的小计数据
- 版本 :2023.1(当前版本)
请求聚合的小计数据
使用“总计和小计 API”,具有矩阵数据视图的自定义视觉对象可以从 Power BI 主机请求聚合的小计数据。 为整个矩阵数据集计算小计,或者为矩阵数据层次结构的各个级别指定小计。 有关 Power BI 视觉对象中的“总计和小计 API”的示例,请查看示例报表。
备注
版本 2.6.0 及更高版本支持请求小计数据。 版本 5.1.0 及更高版本中提供了 rowSubtotalType
属性。 若要了解正在使用的版本,请检查 pbiviz.json 文件中的 apiVersion
。
视觉对象每次刷新其数据时,都会向 Power BI 后端发出数据提取请求。 这些数据请求通常用于用户拖动到视觉对象字段井的字段的值。 有时,视觉对象需要将其他聚合或小计(例如 sum、count)应用于这些字段井。 通过总计和小计 API,你可自定义传出数据查询来请求更多聚合或小计数据。
小计 API
API 为每个数据视图类型(当前只是矩阵数据视图)提供以下自定义项。
rowSubtotals
:(布尔值)指示是否应为行字段井中的所有字段请求小计数据。rowSubtotalsPerLevel
:(布尔值)指示是否可以为行字段井中的各个字段切换小计数据。columnSubtotals
:(布尔值)指示是否应为列字段井中的所有字段请求小计数据。columnSubtotalsPerLevel
:(布尔值)指示是否可以为列字段井中的各个字段切换小计数据。levelSubtotalEnabled
:(布尔值)指示是否为行或列请求小计。 与所有其他属性不同,此属性应用于各行或各列。rowSubtotalsType
:(“Top”或“Bottom”)指示是否应在其余数据之前 (top
) 或之后 (bottom
) 检索包含总计数据的行。 如果此属性设置为bottom
,则只能在提取所有数据后显示总计。 默认为bottom
。
上面列出的每个开关都将基于“属性”窗格中的相关属性和默认值进行赋值。
如何使用小计 API
视觉对象的 capabilities.json 文件必须:
指定上述每个开关映射到的属性。
如果属性未定义,则提供要使用的默认值。
开关使用与下例类似的格式:
JSON复制
"rowSubtotals": {
"propertyIdentifier": {
"objectName": "subTotals",
"propertyName": "rowSubtotals"
},
"defaultValue": true
},
上面的代码指示行小计由 subTotals
对象中的 rowSubtotals
属性启用。 该属性的默认值为 true
。
每当在 capabilities.json 文件中定义小计结构和所有开关映射后,就会自动为视觉对象启用 API。
下面的代码是 capabilities.json 文件(从 API 示例视觉对象复制)中完整 API 配置的示例:
JSON复制
"subtotals": {
"matrix": {
"rowSubtotals": {
"propertyIdentifier": {
"objectName": "subTotals",
"propertyName": "rowSubtotals"
},
"defaultValue": true
},
"rowSubtotalsPerLevel": {
"propertyIdentifier": {
"objectName": "subTotals",
"propertyName": "perRowLevel"
},
"defaultValue": false
},
"columnSubtotals": {
"propertyIdentifier": {
"objectName": "subTotals",
"propertyName": "columnSubtotals"
},
"defaultValue": true
},
"columnSubtotalsPerLevel": {
"propertyIdentifier": {
"objectName": "subTotals",
"propertyName": "perColumnLevel"
},
"defaultValue": false
},
"levelSubtotalEnabled": {
"propertyIdentifier": {
"objectName": "subTotals",
"propertyName": "levelSubtotalEnabled"
},
"defaultValue": true
}, "rowSubtotalsType": { "propertyIdentifier": { "objectName": "subtotals", "propertyName": "rowSubtotalsType"
}, "defaultValue": "Bottom"
}
}
}
视觉对象的 enumerateProperties()
函数与 capabilities.json 文件中指定的默认值一致非常重要。 自定义逻辑根据指定的默认值运行。 如果 enumerateProperties()
函数和默认值不一致,则实际的小计自定义项可能与用户预期不同。
TypeScript复制
enum RowSubtotalType {
Top = "Top",
Bottom = "Bottom",
}
若要查看可用的自定义项,请在“格式”属性窗格中展开“小计”下拉菜单。 修改小计设置,并在“可视化”窗格中跟踪对小计演示(称为“总计”)的更改。
注意事项和限制
rowSubtotalsType
属性仅适用于行。 不能将列小计设置为列的开头。展开和折叠功能替代了
rowSubtotals
。 即使rowSubtotals
设置为 false,也会在展开行时显示小计。