Inzicht in toewijzing van gegevensweergaven in Power BI-visuals

In dit artikel worden de toewijzing van gegevensweergaven besproken en wordt beschreven hoe gegevensrollen worden gebruikt om verschillende typen visuals te maken. Hierin wordt uitgelegd hoe u voorwaardelijke vereisten voor gegevensrollen en de verschillende dataMappings typen opgeeft.

Elke geldige toewijzing produceert een gegevensweergave. U kunt onder bepaalde voorwaarden meerdere gegevenstoewijzingen opgeven. De ondersteunde toewijzingsopties zijn:

"dataViewMappings": [
    {
        "conditions": [ ... ],
        "categorical": { ... },
        "single": { ... },
        "table": { ... },
        "matrix": { ... }
    }
]

Power BI maakt alleen een toewijzing aan een gegevensweergave als de geldige toewijzing ook is gedefinieerd in dataViewMappings.

Met andere woorden, categorical kan worden gedefinieerd in dataViewMappings , maar andere toewijzingen, zoals table of single, zijn mogelijk niet. In dat geval produceert Power BI een gegevensweergave met één categorical toewijzing, terwijl table andere toewijzingen niet gedefinieerd blijven. Bijvoorbeeld:

"dataViewMappings": [
    {
    "categorical": {
        "categories": [ ... ],
        "values": [ ... ]
    },
    "metadata": { ... }
    }
]

Voorwaarden

In conditions de sectie worden regels voor een bepaalde gegevenstoewijzing vastgelegd. Als de gegevens overeenkomen met een van de beschreven sets voorwaarden, accepteert de visual de gegevens als geldig.

Voor elk veld kunt u een minimum- en maximumwaarde opgeven. De waarde vertegenwoordigt het aantal velden dat aan die gegevensrol kan worden gebonden.

Notitie

Als een gegevensrol wordt weggelaten in de voorwaarde, kan deze een willekeurig aantal velden bevatten.

In het volgende voorbeeld is het category beperkt tot één gegevensveld en is het measure beperkt tot twee gegevensvelden.

"conditions": [
    { "category": { "max": 1 }, "measure": { "max": 2 } },
]

U kunt ook meerdere voorwaarden instellen voor een gegevensrol. In dat geval zijn de gegevens geldig als aan een van de voorwaarden wordt voldaan.

"conditions": [
    { "category": { "min": 1, "max": 1 }, "measure": { "min": 2, "max": 2 } },
    { "category": { "min": 2, "max": 2 }, "measure": { "min": 1, "max": 1 } }
]

In het vorige voorbeeld is een van de volgende twee voorwaarden vereist:

  • Precies één categorieveld en precies twee metingen
  • Precies twee categorieën en precies één meting

Toewijzing van één gegevens

Enkele gegevenstoewijzing is de eenvoudigste vorm van gegevenstoewijzing. Het accepteert één metingveld en retourneert het totaal. Als het veld numeriek is, wordt de som geretourneerd. Anders wordt een telling van unieke waarden geretourneerd.

Als u enkele gegevenstoewijzing wilt gebruiken, definieert u de naam van de gegevensrol die u wilt toewijzen. Deze toewijzing werkt alleen met één metingveld. Als er een tweede veld wordt toegewezen, wordt er geen gegevensweergave gegenereerd. Het is dus raadzaam om een voorwaarde op te nemen waarmee de gegevens worden beperkt tot één veld.

Notitie

Deze gegevenstoewijzing kan niet worden gebruikt in combinatie met andere gegevenstoewijzingen. Het is bedoeld om gegevens te verminderen tot één numerieke waarde.

Bijvoorbeeld:

{
    "dataRoles": [
        {
            "displayName": "Y",
            "name": "Y",
            "kind": "Measure"
        }
    ],
    "dataViewMappings": [
        {
            "conditions": [
                {
                    "Y": {
                        "max": 1
                    }
                }
            ],
            "single": {
                "role": "Y"
            }
        }
    ]
}

De resulterende gegevensweergave kan nog steeds andere typen toewijzingen bevatten, zoals tabel of categorisch, maar elke toewijzing bevat alleen de ene waarde. De aanbevolen procedure is om alleen toegang te krijgen tot de waarde in één toewijzing.

{
    "dataView": [
        {
            "metadata": null,
            "categorical": null,
            "matrix": null,
            "table": null,
            "tree": null,
            "single": {
                "value": 94163140.3560001
            }
        }
    ]
}

Het volgende codevoorbeeld verwerkt eenvoudige toewijzing van gegevensweergaven:

"use strict";
import powerbi from "powerbi-visuals-api";
import DataView = powerbi.DataView;
import DataViewSingle = powerbi.DataViewSingle;
// standard imports
// ...

export class Visual implements IVisual {
    private target: HTMLElement;
    private host: IVisualHost;
    private valueText: HTMLParagraphElement;

    constructor(options: VisualConstructorOptions) {
        // constructor body
        this.target = options.element;
        this.host = options.host;
        this.valueText = document.createElement("p");
        this.target.appendChild(this.valueText);
        // ...
    }

    public update(options: VisualUpdateOptions) {
        const dataView: DataView = options.dataViews[0];
        const singleDataView: DataViewSingle = dataView.single;

        if (!singleDataView ||
            !singleDataView.value ) {
            return
        }

        this.valueText.innerText = singleDataView.value.toString();
    }
}

Het vorige codevoorbeeld resulteert in de weergave van één waarde uit Power BI:

Screenshot of a single data view mapping visual.

Categorische gegevenstoewijzing

Categorische gegevenstoewijzing wordt gebruikt om onafhankelijke groeperingen of categorieën gegevens op te halen. De categorieën kunnen ook worden gegroepeerd met behulp van 'groeperen op' in de gegevenstoewijzing.

Basiscategorische gegevenstoewijzing

Houd rekening met de volgende gegevensrollen en -toewijzingen:

"dataRoles":[
    {
        "displayName": "Category",
        "name": "category",
        "kind": "Grouping"
    },
    {
        "displayName": "Y Axis",
        "name": "measure",
        "kind": "Measure"
    }
],
"dataViewMappings": {
    "categorical": {
        "categories": {
            "for": { "in": "category" }
        },
        "values": {
            "select": [
                { "bind": { "to": "measure" } }
            ]
        }
    }
}

In het vorige voorbeeld wordt 'Mijn category gegevensrol toewijzen, zodat voor elk veld waarnaar ik sleep category, de bijbehorende gegevens zijn toegewezen aan categorical.categories. Wijs ook mijn measure gegevensrol toe aan categorical.values.".

  • Voor... in: Bevat alle items in deze gegevensrol in de gegevensquery.
  • Binden... to: Produceert hetzelfde resultaat als voor... in maar verwacht dat de gegevensrol een voorwaarde heeft die deze beperkt tot één veld.

Categorische gegevens groeperen

In het volgende voorbeeld worden dezelfde twee gegevensrollen gebruikt als in het vorige voorbeeld en worden er nog twee gegevensrollen toegevoegd met de naam grouping en measure2.

"dataRole":[
    {
        "displayName": "Category",
        "name": "category",
        "kind": "Grouping"
    },
    {
        "displayName": "Y Axis",
        "name": "measure",
        "kind": "Measure"
    },
    {
        "displayName": "Grouping with",
        "name": "grouping",
        "kind": "Grouping"
    },
    {
        "displayName": "X Axis",
        "name": "measure2",
        "kind": "Grouping"
    }
],
"dataViewMappings":{
    "categorical": {
        "categories": {
            "for": { "in": "category" }
        },
        "values": {
            "group": {
                "by": "grouping",
                "select":[
                    { "bind": { "to": "measure" } },
                    { "bind": { "to": "measure2" } }
                ]
            }
        }
    }
}

Het verschil tussen deze toewijzing en de basistoewijzing is hoe categorical.values wordt toegewezen. Wanneer u de measure gegevensrollen measure2 toe wijst aan de gegevensrol grouping, kunnen de x-as en y-as op de juiste manier worden geschaald.

Hiërarchische gegevens groeperen

In het volgende voorbeeld worden de categorische gegevens gebruikt om een hiërarchie te maken, die kan worden gebruikt om inzoomacties te ondersteunen.

In het volgende voorbeeld ziet u de gegevensrollen en toewijzingen:

"dataRoles": [
    {
        "displayName": "Categories",
        "name": "category",
        "kind": "Grouping"
    },
    {
        "displayName": "Measures",
        "name": "measure",
        "kind": "Measure"
    },
    {
        "displayName": "Series",
        "name": "series",
        "kind": "Measure"
    }
],
"dataViewMappings": [
    {
        "categorical": {
            "categories": {
                "for": {
                    "in": "category"
                }
            },
            "values": {
                "group": {
                    "by": "series",
                    "select": [{
                            "for": {
                                "in": "measure"
                            }
                        }
                    ]
                }
            }
        }
    }
]

Houd rekening met de volgende categorische gegevens:

Land/regio 2013 2014 2015 2016
USA x x 650 350
Canada x 630 490 x
Mexico 645 x x x
VK x x 831 x

Power BI produceert een categorische gegevensweergave met de volgende set categorieën.

{
    "categorical": {
        "categories": [
            {
                "source": {...},
                "values": [
                    "Canada",
                    "USA",
                    "UK",
                    "Mexico"
                ],
                "identity": [...],
                "identityFields": [...],
            }
        ]
    }
}

Elke category kaart wordt toegewezen aan een set values. Elk van deze values wordt gegroepeerd op series, uitgedrukt als jaren.

Elke matrix vertegenwoordigt bijvoorbeeld values één jaar. values Elke matrix heeft ook vier waarden: Canada, USA, UK en Mexico.

{
    "values": [
        // Values for year 2013
        {
            "source": {...},
            "values": [
                null, // Value for `Canada` category
                null, // Value for `USA` category
                null, // Value for `UK` category
                645 // Value for `Mexico` category
            ],
            "identity": [...],
        },
        // Values for year 2014
        {
            "source": {...},
            "values": [
                630, // Value for `Canada` category
                null, // Value for `USA` category
                null, // Value for `UK` category
                null // Value for `Mexico` category
            ],
            "identity": [...],
        },
        // Values for year 2015
        {
            "source": {...},
            "values": [
                490, // Value for `Canada` category
                650, // Value for `USA` category
                831, // Value for `UK` category
                null // Value for `Mexico` category
            ],
            "identity": [...],
        },
        // Values for year 2016
        {
            "source": {...},
            "values": [
                null, // Value for `Canada` category
                350, // Value for `USA` category
                null, // Value for `UK` category
                null // Value for `Mexico` category
            ],
            "identity": [...],
        }
    ]
}

Het volgende codevoorbeeld is voor het verwerken van categorische toewijzing van gegevensweergaven. In dit voorbeeld wordt de hiërarchische structuur Land/Regio > jaarwaarde >gemaakt.

"use strict";
import powerbi from "powerbi-visuals-api";
import DataView = powerbi.DataView;
import DataViewCategorical = powerbi.DataViewCategorical;
import DataViewValueColumnGroup = powerbi.DataViewValueColumnGroup;
import PrimitiveValue = powerbi.PrimitiveValue;
// standard imports
// ...

export class Visual implements IVisual {
    private target: HTMLElement;
    private host: IVisualHost;
    private categories: HTMLElement;

    constructor(options: VisualConstructorOptions) {
        // constructor body
        this.target = options.element;
        this.host = options.host;
        this.categories = document.createElement("pre");
        this.target.appendChild(this.categories);
        // ...
    }

    public update(options: VisualUpdateOptions) {
        const dataView: DataView = options.dataViews[0];
        const categoricalDataView: DataViewCategorical = dataView.categorical;

        if (!categoricalDataView ||
            !categoricalDataView.categories ||
            !categoricalDataView.categories[0] ||
            !categoricalDataView.values) {
            return;
        }

        // Categories have only one column in data buckets
        // To support several columns of categories data bucket, iterate categoricalDataView.categories array.
        const categoryFieldIndex = 0;
        // Measure has only one column in data buckets.
        // To support several columns on data bucket, iterate years.values array in map function
        const measureFieldIndex = 0;
        let categories: PrimitiveValue[] = categoricalDataView.categories[categoryFieldIndex].values;
        let values: DataViewValueColumnGroup[] = categoricalDataView.values.grouped();

        let data = {};
        // iterate categories/countries-regions
        categories.map((category: PrimitiveValue, categoryIndex: number) => {
            data[category.toString()] = {};
            // iterate series/years
            values.map((years: DataViewValueColumnGroup) => {
                if (!data[category.toString()][years.name] && years.values[measureFieldIndex].values[categoryIndex]) {
                    data[category.toString()][years.name] = []
                }
                if (years.values[0].values[categoryIndex]) {
                    data[category.toString()][years.name].push(years.values[measureFieldIndex].values[categoryIndex]);
                }
            });
        });

        this.categories.innerText = JSON.stringify(data, null, 6);
        console.log(data);
    }
}

Dit is de resulterende visual:

Screenshot of a visual with categorical data view mapping.

Toewijzingstabellen

De tabelgegevensweergave is in feite een lijst met gegevenspunten waarin numerieke gegevenspunten kunnen worden samengevoegd.

Gebruik bijvoorbeeld dezelfde gegevens in de vorige sectie, maar met de volgende mogelijkheden:

"dataRoles": [
    {
        "displayName": "Column",
        "name": "column",
        "kind": "Grouping"
    },
    {
        "displayName": "Value",
        "name": "value",
        "kind": "Measure"
    }
],
"dataViewMappings": [
    {
        "table": {
            "rows": {
                "select": [
                    {
                        "for": {
                            "in": "column"
                        }
                    },
                    {
                        "for": {
                            "in": "value"
                        }
                    }
                ]
            }
        }
    }
]

Visualiseer de tabelgegevensweergave zoals in dit voorbeeld:

Land/regio Jaar Verkoop
USA 2016 100
USA 2015 50
Canada 2015 200
Canada 2015 50
Mexico 2013 300
VK 2014 150
USA 2015 75

Gegevensbinding:

Screenshot of the table data view mapping data binds.

Power BI geeft uw gegevens weer als de tabelgegevensweergave. Neem niet aan dat de gegevens zijn geordend.

{
    "table" : {
        "columns": [...],
        "rows": [
            [
                "Canada",
                2014,
                630
            ],
            [
                "Canada",
                2015,
                490
            ],
            [
                "Mexico",
                2013,
                645
            ],
            [
                "UK",
                2014,
                831
            ],
            [
                "USA",
                2015,
                650
            ],
            [
                "USA",
                2016,
                350
            ]
        ]
    }
}

Als u de gegevens wilt aggregeren, selecteert u het gewenste veld en kiest u Som.

Screenshot of Sum selected from the field's dropdown.

Codevoorbeeld voor het verwerken van toewijzing van tabelgegevensweergaven.

"use strict";
import "./../style/visual.less";
import powerbi from "powerbi-visuals-api";
// ...
import DataViewMetadataColumn = powerbi.DataViewMetadataColumn;
import DataViewTable = powerbi.DataViewTable;
import DataViewTableRow = powerbi.DataViewTableRow;
import PrimitiveValue = powerbi.PrimitiveValue;
// standard imports
// ...

export class Visual implements IVisual {
    private target: HTMLElement;
    private host: IVisualHost;
    private table: HTMLParagraphElement;

    constructor(options: VisualConstructorOptions) {
        // constructor body
        this.target = options.element;
        this.host = options.host;
        this.table = document.createElement("table");
        this.target.appendChild(this.table);
        // ...
    }

    public update(options: VisualUpdateOptions) {
        const dataView: DataView = options.dataViews[0];
        const tableDataView: DataViewTable = dataView.table;

        if (!tableDataView) {
            return
        }
        while(this.table.firstChild) {
            this.table.removeChild(this.table.firstChild);
        }

        //draw header
        const tableHeader = document.createElement("th");
        tableDataView.columns.forEach((column: DataViewMetadataColumn) => {
            const tableHeaderColumn = document.createElement("td");
            tableHeaderColumn.innerText = column.displayName
            tableHeader.appendChild(tableHeaderColumn);
        });
        this.table.appendChild(tableHeader);

        //draw rows
        tableDataView.rows.forEach((row: DataViewTableRow) => {
            const tableRow = document.createElement("tr");
            row.forEach((columnValue: PrimitiveValue) => {
                const cell = document.createElement("td");
                cell.innerText = columnValue.toString();
                tableRow.appendChild(cell);
            })
            this.table.appendChild(tableRow);
        });
    }
}

Het bestand style/visual.less met visuele stijlen bevat de indeling voor de tabel:

table {
    display: flex;
    flex-direction: column;
}

tr, th {
    display: flex;
    flex: 1;
}

td {
    flex: 1;
    border: 1px solid black;
}

De resulterende visual ziet er als volgt uit:

Screenshot of a visual with table data view mapping.

Matrixgegevenstoewijzing

Matrixgegevenstoewijzing is vergelijkbaar met tabelgegevenstoewijzing, maar de rijen worden hiërarchisch weergegeven. Een van de gegevensrolwaarden kan worden gebruikt als kolomkopwaarde.

{
    "dataRoles": [
        {
            "name": "Category",
            "displayName": "Category",
            "displayNameKey": "Visual_Category",
            "kind": "Grouping"
        },
        {
            "name": "Column",
            "displayName": "Column",
            "displayNameKey": "Visual_Column",
            "kind": "Grouping"
        },
        {
            "name": "Measure",
            "displayName": "Measure",
            "displayNameKey": "Visual_Values",
            "kind": "Measure"
        }
    ],
    "dataViewMappings": [
        {
            "matrix": {
                "rows": {
                    "for": {
                        "in": "Category"
                    }
                },
                "columns": {
                    "for": {
                        "in": "Column"
                    }
                },
                "values": {
                    "select": [
                        {
                            "for": {
                                "in": "Measure"
                            }
                        }
                    ]
                }
            }
        }
    ]
}

Hiërarchische structuur van matrixgegevens

Power BI maakt een hiërarchische gegevensstructuur. De hoofdmap van de structuurhiërarchie bevat de gegevens uit de kolom Ouders van de Category gegevensrol met onderliggende elementen uit de kolom Onderliggende van de gegevensroltabel.

Semantisch model:

Bovenliggende waarden Kinderen Kleinkinderen Kolommen Waarden
Bovenliggend1 Onderliggend item1 Klein kind1 Col1 5
Bovenliggend1 Onderliggend item1 Klein kind1 Col2 6
Bovenliggend1 Onderliggend item1 Klein kind2 Col1 7
Bovenliggend1 Onderliggend item1 Klein kind2 Col2 8
Bovenliggend1 Onderliggend item2 Klein kind3 Col1 5
Bovenliggend1 Onderliggend item2 Klein kind3 Col2 3
Bovenliggend1 Onderliggend item2 Klein kind4 Col1 4
Bovenliggend1 Onderliggend item2 Klein kind4 Col2 9
Bovenliggend1 Onderliggend item2 Klein kind5 Col1 3
Bovenliggend1 Onderliggend item2 Klein kind5 Col2 5
Bovenliggend item2 Onderliggend item3 Klein kind6 Col1 1
Bovenliggend item2 Onderliggend item3 Klein kind6 Col2 2
Bovenliggend item2 Onderliggend item3 Klein kind7 Col1 7
Bovenliggend item2 Onderliggend item3 Klein kind7 Col2 1
Bovenliggend item2 Onderliggend item3 Klein kind8 Col1 10
Bovenliggend item2 Onderliggend item3 Klein kind8 Col2 13

De kernmatrixvisual van Power BI geeft de gegevens weer als een tabel.

Screenshot of a Matrix visual rendered as a table.

De gegevensstructuur van de visual wordt opgehaald zoals beschreven in de volgende code (alleen de eerste twee tabelrijen worden hier weergegeven):

{
    "metadata": {...},
    "matrix": {
        "rows": {
            "levels": [...],
            "root": {
                "childIdentityFields": [...],
                "children": [
                    {
                        "level": 0,
                        "levelValues": [...],
                        "value": "Parent1",
                        "identity": {...},
                        "childIdentityFields": [...],
                        "children": [
                            {
                                "level": 1,
                                "levelValues": [...],
                                "value": "Child1",
                                "identity": {...},
                                "childIdentityFields": [...],
                                "children": [
                                    {
                                        "level": 2,
                                        "levelValues": [...],
                                        "value": "Grand child1",
                                        "identity": {...},
                                        "values": {
                                            "0": {
                                                "value": 5 // value for Col1
                                            },
                                            "1": {
                                                "value": 6 // value for Col2
                                            }
                                        }
                                    },
                                    ...
                                ]
                            },
                            ...
                        ]
                    },
                    ...
                ]
            }
        },
        "columns": {
            "levels": [...],
            "root": {
                "childIdentityFields": [...],
                "children": [
                    {
                        "level": 0,
                        "levelValues": [...],
                        "value": "Col1",
                        "identity": {...}
                    },
                    {
                        "level": 0,
                        "levelValues": [...],
                        "value": "Col2",
                        "identity": {...}
                    },
                    ...
                ]
            }
        },
        "valueSources": [...]
    }
}

Rijkoppen uitvouwen en samenvouwen

Voor API 4.1.0 of hoger ondersteunen matrixgegevens het uitbreiden en samenvouwen van rijkoppen. Vanuit API 4.2 kunt u programmatisch het hele niveau uitvouwen/samenvouwen. De functie uitvouwen en samenvouwen optimaliseert het ophalen van gegevens naar dataView door de gebruiker in staat te stellen een rij uit te vouwen of samen te vouwen zonder alle gegevens voor het volgende niveau op te halen. De gegevens voor de geselecteerde rij worden alleen opgehaald. De uitbreidingsstatus van de rijkop blijft consistent voor bladwijzers en zelfs voor opgeslagen rapporten. Het is niet specifiek voor elke visual.

Opdrachten uitvouwen en samenvouwen kunnen worden toegevoegd aan het contextmenu door de dataRoles parameter aan de showContextMenu methode op te geven.

Screenshot showing context menu with expand and collapse options.

Als u een groot aantal gegevenspunten wilt uitbreiden, gebruikt u de API voor het ophalen van meer gegevens met de API voor uitvouwen/samenvouwen.

API-functies

De volgende elementen zijn toegevoegd aan API-versie 4.1.0 om het uitbreiden en samenvouwen van rijkoppen mogelijk te maken:

  • De isCollapsed vlag in het DataViewTreeNode:

    interface DataViewTreeNode {
        //...
        /**
        * TRUE if the node is Collapsed
        * FALSE if it is Expanded
        * Undefined if it cannot be Expanded (e.g. subtotal)
        */
        isCollapsed?: boolean;
    }
    
  • De toggleExpandCollapse methode in de ISelectionManger interface:

    interface ISelectionManager {
        //...
        showContextMenu(selectionId: ISelectionId, position: IPoint, dataRoles?: string): IPromise<{}>; // dataRoles is the name of the role of the selected data point
        toggleExpandCollapse(selectionId: ISelectionId, entireLevel?: boolean): IPromise<{}>;  // Expand/Collapse an entire level will be available from API 4.2.0 
        //...
    }
    
  • De canBeExpanded vlag in DataViewHierarchyLevel:

    interface DataViewHierarchyLevel {
        //...
        /** If TRUE, this level can be expanded/collapsed */
        canBeExpanded?: boolean;
    }
    

Visuele vereisten

Als u de functie Samenvouwen in een visual wilt inschakelen met behulp van de matrixgegevensweergave:

  1. Voeg de volgende code toe aan het bestand capabilities.json:

       "expandCollapse": {
        "roles": ["Rows"], //”Rows” is the name of rows data role
        "addDataViewFlags": {
            "defaultValue": true //indicates if the DataViewTreeNode will get the isCollapsed flag by default 
        }
    },
    
  2. Controleer of de rollen kunnen worden ingezoomd:

        "drilldown": {
        "roles": ["Rows"]
    },
    
  3. Maak voor elk knooppunt een exemplaar van de opbouwfunctie voor selecties door de withMatrixNode methode aan te roepen op het niveau van de geselecteerde hiërarchie en een selectionId. Bijvoorbeeld:

        let nodeSelectionBuilder: ISelectionIdBuilder = visualHost.createSelectionIdBuilder();
        // parantNodes is a list of the parents of the selected node.
        // node is the current node which the selectionId is created for. 
        parentNodes.push(node);
        for (let i = 0; i < parentNodes.length; i++) {
            nodeSelectionBuilder = nodeSelectionBuilder.withMatrixNode(parentNodes[i], levels);
        }
      const nodeSelectionId: ISelectionId = nodeSelectionBuilder.createSelectionId(); 
    
  4. Maak een exemplaar van selectiebeheer en gebruik de selectionManager.toggleExpandCollapse() methode, met de parameter van het selectionIdknooppunt, die u voor het geselecteerde knooppunt hebt gemaakt. Bijvoorbeeld:

        // handle click events to apply expand\collapse action for the selected node
        button.addEventListener("click", () => {
        this.selectionManager.toggleExpandCollapse(nodeSelectionId);
    });
    

Notitie

  • Als het geselecteerde knooppunt geen rijknooppunt is, worden aanroepen voor uitvouwen en samenvouwen genegeerd en worden de opdrachten voor uitvouwen en samenvouwen verwijderd uit het contextmenu.
  • De dataRoles parameter is alleen vereist voor de showContextMenu methode als de visual ondersteuning of expandCollapse functies biedtdrilldown. Als de visual deze functies ondersteunt, maar de dataRoles niet is opgegeven, wordt er een fout weergegeven in de console bij het gebruik van de visual voor ontwikkelaars of bij het opsporen van fouten in een openbare visual waarvoor de foutopsporingsmodus is ingeschakeld.

Overwegingen en beperkingen

  • Nadat u een knooppunt hebt uitgevouwen, worden nieuwe gegevenslimieten toegepast op DataView. De nieuwe DataView bevat mogelijk geen enkele van de knooppunten die in de vorige DataView worden weergegeven.
  • Wanneer u uitvouwen of samenvouwen gebruikt, worden totalen toegevoegd, zelfs als de visual deze niet heeft aangevraagd.
  • Het uitvouwen en samenvouwen van kolommen wordt niet ondersteund.

Alle metagegevenskolommen behouden

Voor API 5.1.0 of hoger worden alle metagegevenskolommen ondersteund. Met deze functie kan de visual de metagegevens voor alle kolommen ontvangen, ongeacht wat hun actieve projecties zijn.

Voeg de volgende regels toe aan uw capabilities.json-bestand :

"keepAllMetadataColumns": {
    "type": "boolean",
    "description": "Indicates that visual is going to receive all metadata columns, no matter what the active projections are"
}

Als u deze eigenschap instelt true , ontvangt u alle metagegevens, inclusief uit samengevouwen kolommen. Als u deze false instelt of niet-gedefinieerd laat, ontvangt u alleen metagegevens voor kolommen met actieve projecties (bijvoorbeeld uitgevouwen).

Algoritme voor gegevensreductie

Het algoritme voor gegevensreductie bepaalt welke gegevens en hoeveel gegevens er worden ontvangen in de gegevensweergave.

Het aantal is ingesteld op het maximum aantal waarden dat door de gegevensweergave kan worden geaccepteerd. Als er meer dan aantal waarden zijn, bepaalt het algoritme voor gegevensreductie welke waarden moeten worden ontvangen.

Typen gegevensreductiealgoritmen

Er zijn vier typen instellingen voor het algoritme voor gegevensreductie:

  • top: De eerste tellingswaarden worden uit het semantische model genomen.
  • bottom: De laatste tellingswaarden worden uit het semantische model genomen.
  • sample: De eerste en laatste items zijn opgenomen en het aantal items tellen met gelijke intervallen ertussen. Als u bijvoorbeeld een semantisch model hebt [0, 1, 2, ... 100] en een telling van 9, u ontvangt de waarden [0, 10, 20 ... 100].
  • window: Laadt één venster met gegevenspunten tegelijk met aantal elementen. Momenteel en topwindow zijn ze gelijkwaardig. In de toekomst wordt een vensterinstelling volledig ondersteund.

Standaard is voor alle Power BI-visuals het belangrijkste algoritme voor gegevensreductie toegepast, waarbij het aantal is ingesteld op 1000 gegevenspunten. Deze standaardwaarde is gelijk aan het instellen van de volgende eigenschappen in het bestand capabilities.json :

"dataReductionAlgorithm": {
    "top": {
        "count": 1000
    }
}

U kunt de tellingswaarde wijzigen in een geheel getal tot 30000. Power BI-visuals op basis van R kunnen maximaal 150000 rijen ondersteunen.

Gebruik van gegevensreductiealgoritmen

Het algoritme voor gegevensreductie kan worden gebruikt in categorische toewijzing, tabel- of matrixgegevensweergave.

In categorische gegevenstoewijzing kunt u het algoritme toevoegen aan de sectie 'categorieën' en/of 'groep' van values voor categorische gegevenstoewijzing.

"dataViewMappings": {
    "categorical": {
        "categories": {
            "for": { "in": "category" },
            "dataReductionAlgorithm": {
                "window": {
                    "count": 300
                }
            }  
        },
        "values": {
            "group": {
                "by": "series",
                "select": [{
                        "for": {
                            "in": "measure"
                        }
                    }
                ],
                "dataReductionAlgorithm": {
                    "top": {
                        "count": 100
                    }
                }  
            }
        }
    }
}

Pas in de toewijzing van tabelgegevensweergave het algoritme voor gegevensreductie toe op de rows sectie van de toewijzingstabel Gegevensweergave.

"dataViewMappings": [
    {
        "table": {
            "rows": {
                "for": {
                    "in": "values"
                },
                "dataReductionAlgorithm": {
                    "top": {
                        "count": 2000
                    }
                }
            }
        }
    }
]

U kunt het algoritme voor gegevensreductie toepassen op de rows en columns secties van de toewijzingsmatrix voor gegevensweergave.