请求聚合的小计数据

使用“总计和小计 API”,具有矩阵数据视图的自定义视觉对象可以从 Power BI 主机请求聚合的小计数据。 为整个矩阵语义模型计算小计,或者为矩阵数据层次结构的各个级别指定小计。 有关 Power BI 视觉对象中的“总计和小计 API”的示例,请查看示例报表

注意

版本 2.6.0 及更高版本支持请求小计数据。 版本 5.1.0 及更高版本中提供了 rowSubtotalType 属性。 若要了解正在使用的版本,请检查 pbiviz.json 文件中的 apiVersion

视觉对象每次刷新其数据时,都会向 Power BI 后端发出数据提取请求。 这些数据请求通常用于用户拖动到视觉对象字段井的字段的值。 有时,视觉对象需要将其他聚合或小计(例如 sum、count)应用于这些字段井。 通过总计和小计 API,你可自定义传出数据查询来请求更多聚合或小计数据。

Screenshot of visual with subtotals row and columns highlighted.

小计 API

API 为每个数据视图类型(当前只是矩阵数据视图)提供以下自定义项。

  • rowSubtotals:(布尔值)指示是否应为行字段井中的所有字段请求小计数据。
  • rowSubtotalsPerLevel:(布尔值)指示是否可以为行字段井中的各个字段切换小计数据。
  • columnSubtotals:(布尔值)指示是否应为列字段井中的所有字段请求小计数据。
  • columnSubtotalsPerLevel:(布尔值)指示是否可以为列字段井中的各个字段切换小计数据。
  • levelSubtotalEnabled:(布尔值)指示是否为行或列请求小计。 与所有其他属性不同,此属性应用于各行或各列。
  • rowSubtotalsType:(“Top”或“Bottom”)指示是否应在其余数据之前 (top) 或之后 (bottom) 检索包含总计数据的行。 如果此属性设置为 bottom,则只能在提取所有数据后显示总计。 默认为 bottom

上面列出的每个开关都将基于“属性”窗格中的相关属性和默认值进行赋值。

如何使用小计 API

视觉对象的 capabilities.json 文件必须:

  • 指定上述每个开关映射到的属性。
  • 如果属性未定义,则提供要使用的默认值。

开关使用与下例类似的格式:

    "rowSubtotals": { 
                "propertyIdentifier": { 
                    "objectName": "subTotals", 
                    "propertyName": "rowSubtotals" 
                }, 
                "defaultValue": true 
            },

上面的代码指示行小计由 subTotals 对象中的 rowSubtotals 属性启用。 该属性的默认值为 true

每当在 capabilities.json 文件中定义小计结构和所有开关映射后,就会自动为视觉对象启用 API。

下面的代码是 capabilities.json 文件(从 API 示例视觉对象复制)中完整 API 配置的示例:

"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() 函数和默认值不一致,则实际的小计自定义项可能与用户预期不同。

enum RowSubtotalType {
        Top = "Top",
        Bottom = "Bottom",
   }

若要查看可用的自定义项,请在“格式”属性窗格中展开“小计”下拉菜单。 修改小计设置,并在“可视化”窗格中跟踪对小计演示(称为“总计”)的更改。

Screenshot of the Power BI Visualizations pane, which shows the Column and Row subtotals field wells.

注意事项和限制

  • rowSubtotalsType 属性仅适用于行。 不能将列小计设置为列的开头。

  • 展开和折叠功能替代了 rowSubtotals。 即使 rowSubtotals 设置为 false,也会在展开行时显示小计。

使用 Power BI 视觉对象选择将交互性添加到视觉对象