请求聚合的小计数据

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

注意

版本 2.6.0 及更高版本中支持请求分类汇总数据。 rowSubtotalType 属性在版本 5.1.0 及更高版本中可用。 若要了解所使用的版本,请检查 pbiviz.json 文件中的 apiVersion

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

突出显示了小计行和列的视觉对象的屏幕截图。

小计 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",
   }

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

Power BI“可视化效果”窗格的屏幕截图,其中显示了列小计和行小计字段井。

注意事项和限制

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

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

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