Principy mapování zobrazení dat ve vizuálech Power BI

Tento článek popisuje mapování zobrazení dat a popisuje způsob použití datových rolí k vytvoření různých typů vizuálů. Vysvětluje, jak určit podmíněné požadavky pro role dat a také různé dataMappings typy.

Každé platné mapování vytvoří zobrazení dat. Za určitých podmínek můžete zadat více mapování dat. Podporované možnosti mapování jsou:

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

Power BI vytvoří mapování na zobrazení dat, pokud je také definováno platné mapování .dataViewMappings

Jinými slovy, categorical může být v objektu dataViewMappings definováno, ale jiná mapování, například table nebo single, už ne. V takovém případě Power BI vytvoří zobrazení dat s jedním categorical mapováním, zatímco table jiná mapování zůstanou nedefinovaná. Příklad:

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

Podmínky

Tato conditions část stanoví pravidla pro konkrétní mapování dat. Pokud data odpovídají jedné z popsaných sad podmínek, vizuál přijme data jako platná.

Momentálně můžete pro každé pole zadat minimální a maximální hodnotu. Tato hodnota představuje počet polí, která lze s danou rolí dat svázat.

Poznámka

Pokud v podmínce roli dat vynecháte, může obsahovat libovolný počet polí.

V následujícím příkladu omezíte category omezení na jedno datové pole a measure na dvě datová pole.

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

Můžete také nastavit více podmínek pro roli dat. V takovém případě jsou data platná, pokud je splněna některá z podmínek.

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

V předchozím příkladu je vyžadována jedna z následujících dvou podmínek:

  • Přesně jedno pole kategorie a přesně dvě míry
  • Přesně dvě kategorie a přesně jedna míra

Jednoduché mapování dat

Jednoduché mapování dat představuje nejjednodušší formu mapování dat. Přijme jedno pole míry a vrátí součet. Pokud je pole číselné, vrátí součet. V opačném případě vrátí počet jedinečných hodnot.

Pokud chcete použít jedno mapování dat, definujte název role dat, kterou chcete mapovat. Toto mapování funguje pouze s jedním polem míry. Pokud je přiřazené druhé pole, nevygeneruje se žádné zobrazení dat, takže je vhodné zahrnout podmínku omezující data na jedno pole.

Poznámka

Toto mapování nelze používat spolu s žádným jiným mapováním dat. Účelem je snížit data na jednu číselnou hodnotu.

Příklad:

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

Výsledné zobrazení dat může stále obsahovat jiné typy (tabulky, kategorické atd.), ale každé mapování obsahuje pouze jednu hodnotu. Osvědčeným postupem je přístup k hodnotě jenom v jednoduchém mapování.

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

Ukázka kódu pro zpracování jednoduchého mapování zobrazení dat

"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();
    }
}

Výše uvedený kód vede k zobrazení jedné hodnoty z Power BI:

Příklad vizuálu mapování jednoho zobrazení dat

Kategorické mapování dat

Mapování dat kategorií slouží k získání nezávislých seskupení nebo kategorií dat. Kategorie lze také dále seskupit pomocí skupiny pomocí mapování dat.

Základní mapování dat kategorií

Zvažte následující role a mapování dat:

"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" } }
            ]
        }
    }
}

V předchozím příkladu je uvedeno "Mapování mé category datové role tak, aby pro každé pole, které přetáhnem do category, jeho data jsou mapována na categorical.categories. Také namapovat moji datovou measure roli na categorical.values."

  • Pro... in: Do dotazu na data zahrňte všechny položky v této roli dat.
  • Vázat... to: Vytvoří stejný výsledek jako pro... ale očekává, že role dat bude mít podmínku, která ji omezuje na jedno pole.

Seskupování kategorických dat

Následující příklad používá stejné dvě datové role jako předchozí příklad a přidá do dalších datových rolí pojmenovaných grouping a 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" } }
                ]
            }
        }
    }
}

Rozdíl mezi tímto mapováním a základním je v tom, jak mapujeme categorical.values. Mapováním measure rolí dat measure2 na roli groupingdat můžeme odpovídajícím způsobem škálovat osu x a osu y.

Seskupení hierarchických dat

V dalším příkladu použijeme kategorická data k vytvoření hierarchie, která se dá použít k podpoře akcí přechodu k podrobnostem .

Tady jsou datové role a mapování:

"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"
                            }
                        }
                    ]
                }
            }
        }
    }
]

Zvažte následující kategorická data:

Země 2013 2014 2015 2016
USA x x 650 350
Kanada x 630 490 x
Mexiko 645 x x x
UK x x 831 x

Power BI vytvoří zobrazení dat kategorií s následující sadou kategorií.

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

Každá category mapa je také nastavená na sadu values . Každý z nich values je seskupený podle series, který je vyjádřen jako roky.

Například každé values pole představuje jeden rok. values Každé pole má také čtyři hodnoty: Kanada, USA, Velká Británie a Mexiko:

{
    "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": [...],
        }
    ]
}

Níže je ukázka kódu pro zpracování mapování zobrazení dat kategorií. Tato ukázka vytvoří hierarchickou strukturu. Country => Year => Value

"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
        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);
    }
}

Tady je výsledný vizuál:

Vizuál s mapováním zobrazení dat kategorií

Mapování tabulek

Zobrazení dat tabulky je v podstatě seznam datových bodů, kde lze agregovat číselné datové body.

Například použití stejných dat jako v předchozí části, ale s následujícími možnostmi:

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

Zobrazení dat tabulky můžete vizualizovat takto:

Ukázka dat:

Země Year (Rok) Sales
USA 2016 100
USA 2015 50
Kanada 2015 200
Kanada 2015 50
Mexiko 2013 300
UK 2014 150
USA 2015 75

Datová vazba:

Datové vazby mapování zobrazení dat tabulky

Power BI zobrazí data jako zobrazení dat tabulky. Nepředpokládáte, že jsou data seřazená.

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

Pokud chcete data agregovat, vyberte požadované pole a pak vyberte součet.

Agregace dat

Ukázka kódu pro zpracování mapování zobrazení dat tabulky

"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);
        });
    }
}

Soubor stylů vizuálu style/visual.less obsahuje rozložení pro tabulku:

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

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

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

Výsledný vizuál vypadá takto:

Vizuál s mapováním zobrazení dat tabulky

Maticové mapování dat

Mapování maticových dat je podobné mapování dat tabulky, ale řádky se zobrazují hierarchicky. Některou z hodnot rolí dat můžete použít jako hodnotu záhlaví sloupce.

{
    "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"
                            }
                        }
                    ]
                }
            }
        }
    ]
}

Hierarchická struktura maticových dat

Power BI vytvoří hierarchickou datovou strukturu. Kořen stromové hierarchie obsahuje data ze sloupce Nadřazené prvky v roli dat Category, s podřízenými prvky ze sloupce Podřízené prvky v tabulce rolí dat.

Datová sada:

Nadřazené prvky Podřízené prvky Podřízené prvky druhé úrovně Sloupce Hodnoty
Nadřazený prvek 1 Podřízený prvek 1 Podřízený prvek druhé úrovně 1 Sloupec 1 5
Nadřazený prvek 1 Podřízený prvek 1 Podřízený prvek druhé úrovně 1 Sloupec 2 6
Nadřazený prvek 1 Podřízený prvek 1 Podřízený prvek druhé úrovně 2 Sloupec 1 7
Nadřazený prvek 1 Podřízený prvek 1 Podřízený prvek druhé úrovně 2 Sloupec 2 8
Nadřazený prvek 1 Podřízený prvek 2 Podřízený prvek druhé úrovně 3 Sloupec 1 5
Nadřazený prvek 1 Podřízený prvek 2 Podřízený prvek druhé úrovně 3 Sloupec 2 3
Nadřazený prvek 1 Podřízený prvek 2 Podřízený prvek druhé úrovně 4 Sloupec 1 4
Nadřazený prvek 1 Podřízený prvek 2 Podřízený prvek druhé úrovně 4 Sloupec 2 9
Nadřazený prvek 1 Podřízený prvek 2 Podřízený prvek druhé úrovně 5 Sloupec 1 3
Nadřazený prvek 1 Podřízený prvek 2 Podřízený prvek druhé úrovně 5 Sloupec 2 5
Nadřazený prvek 2 Podřízený prvek 3 Podřízený prvek druhé úrovně 6 Sloupec 1 1
Nadřazený prvek 2 Podřízený prvek 3 Podřízený prvek druhé úrovně 6 Sloupec 2 2
Nadřazený prvek 2 Podřízený prvek 3 Podřízený prvek druhé úrovně 7 Sloupec 1 7
Nadřazený prvek 2 Podřízený prvek 3 Podřízený prvek druhé úrovně 7 Sloupec 2 1
Nadřazený prvek 2 Podřízený prvek 3 Podřízený prvek druhé úrovně 8 Sloupec 1 10
Nadřazený prvek 2 Podřízený prvek 3 Podřízený prvek druhé úrovně 8 Sloupec 2 13

Základní vizuál matice Power BI vykreslí data jako tabulku.

Maticový vizuál.

Vizuál získá datovou strukturu podle popisu v následujícím kódu (tady jsou zobrazeny jenom první dva řádky tabulky):

{
    "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": [...]
    }
}

Rozbalení a sbalení záhlaví řádků

Počínaje rozhraním API 4.1.0 budou maticová data podporovat rozbalení a sbalování záhlaví řádků. Funkce rozbalení/sbalení optimalizuje načítání dat do dataView tím, že uživateli umožní rozbalit nebo sbalit řádek, aniž by načítá všechna data pro další úroveň. Načte data jenom pro vybraný řádek. Stav rozšíření záhlaví řádku zůstane konzistentní napříč záložkami a dokonce i mezi ukládáními sestav. Není specifický pro každý vizuál.

Příkazy rozbalení a sbalení lze také přidat do místní nabídky zadáním dataRoles parametru metodě showContextMenu .

Snímek obrazovky zobrazující místní nabídku s možnostmi rozbalení a sbalení

Funkce rozhraní API

Pokud chcete povolit rozbalení a sbalování záhlaví řádků, přidali jsme následující položky do rozhraní API verze 4.1.0.

  • Příznak isCollapsed v :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;
    }
    
  • Metoda toggleExpandCollapse v ISelectionManger rozhraní:

    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 
        //...
    }
    
  • Příznak canBeExpanded v objektu DataViewHierarchyLevel:

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

Vizuální požadavky

Povolení funkce rozbalení sbalování vizuálu pomocí zobrazení maticových dat:

  1. Do souboru capabilities.json přidejte následující:

       "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. Ujistěte se, že jsou role pro přechod k podrobnostem:

        "drilldown": {
        "roles": ["Rows"]
    },
    
  3. Pro každý uzel vytvořte instanci tvůrce výběru a zavolejte metodu withMatrixNode na úrovni hierarchie vybraných uzlů a vytvořte selectionId. Příklad:

        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. Vytvořte instanci správce výběru a použijte metodu selectionManager.toggleExpandCollapse() s parametrem selectionId , který jste vytvořili pro vybraný uzel. Příklad:

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

Poznámka

  • Pokud vybraný uzel není uzel řádku, PowerBI ignoruje volání rozbalení nebo sbalení a příkazy rozbalení a sbalení se odeberou z místní nabídky.
  • Parametr dataRoles se vyžaduje pro metodu showContextMenu pouze v případě, že vizuál podporuje drilldown nebo expandCollapse obsahuje funkce. Pokud vizuál tyto funkce podporuje, ale datovérole nebyly zadány, při použití vizuálu pro vývojáře dojde k chybě nebo při ladění veřejného vizuálu s povoleným režimem ladění.

Důležité informace a omezení

  • Po rozbalení uzlu se na DataView použijí nová omezení dat. To znamená, že nové zobrazení DataView nemusí obsahovat některé uzly zobrazené v předchozím zobrazení DataView.
  • Při použití rozbalení nebo sbalení se součty přidají i v případě, že je vizuál nepožadoval.
  • V současné době se nepodporuje rozbalení a sbalování sloupců.

Zachovat všechny sloupce metadat

Počínaje rozhraním API 5.1.0 bude podporováno zachování všech sloupců metadat. Tato funkce umožňuje vizuálu přijímat metadata pro všechny sloupce bez ohledu na to, co jsou jejich aktivní projekce.

Do souboru capabilities.json přidejte následující řádky:

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

Nastavení této vlastnosti true bude mít za následek příjem všech metadat, včetně z sbalovaných sloupců. false Nastavením nebo ponechání nedefinovaného bude příjem metadat pouze u sloupců s aktivními projekcemi (například rozbalené).

Algoritmus redukce dat

Algoritmus redukce dat řídí, která data a kolik dat se přijímají v zobrazení dat.

Počet je nastavený na maximální počet hodnot, které může zobrazení dat přijmout. Pokud existuje více hodnot než počet , algoritmus redukce dat určuje, které hodnoty by se měly přijímat.

Typy algoritmu redukce dat

Existují čtyři typy nastavení algoritmu redukce dat:

  • top: První hodnoty počtu budou převzaty z datové sady.
  • bottom: Poslední hodnoty počtu budou převzaty z datové sady.
  • sample: První a poslední položky jsou zahrnuté a počet položek se stejnými intervaly mezi nimi. Pokud máte například datovou sadu [0, 1, 2, ... 100] a počet 9, dostanete hodnoty [0, 10, 20 ... 100].
  • window: Načte najednou jedno okno datových bodů obsahující určitý počet elementů (určený hodnotou count). Momentálně jsou typy top a window ekvivalentní. Pracujeme na zajištění plné podpory pro vytváření oken.

Ve výchozím nastavení se u všech vizuálů Power BI používá algoritmus redukce dat typu top s hodnotou count nastavenou na 1000 datových bodů. To je ekvivalentní nastavení následujících vlastností v souboru capabilities.json :

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

Hodnotu count můžete změnit na libovolnou celočíselnou hodnotu až do výše 30 000. Vizuály Power BI založené na jazyce R můžou podporovat až 150 000 řádků.

Použití algoritmu redukce dat

Algoritmus redukce dat lze použít u kategorického, tabulkového nebo maticového mapování zobrazení dat.

V mapování kategorických dat můžete přidat algoritmus do části values "kategorie" a/nebo "seskupit" pro mapování dat kategorií.

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

V mapování zobrazení dat tabulky použijte algoritmus redukce dat do rows oddílu tabulky mapování zobrazení dat.

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

Algoritmus redukce dat můžete použít v oddílech rows a columns matice mapování zobrazení dat.

Další kroky