Načtení dalších dat z Power BI

rozhraní fetchMoreData API podporuje načítání datových bloků jako způsobu povolení Power BI vizuálů obejít pevný limit zobrazení dat řádků 30 tisíc. Kromě původního přístupu k agregaci všech požadovaných bloků rozhraní API nyní podporuje také načítání pouze přírůstkových datových bloků.

Tento přístup umožňuje větší flexibilitu v tom, jak se do vizuálu načtou další datové bloky. Když chcete zvýšit výkon, můžete nakonfigurovat velikost bloku tak, aby vyhovovala vašemu případu použití.

Poznámka

fetchMoreDataRozhraní API je k dispozici z verze 3,4. Pokud chcete zjistit, kterou verzi používáte, spusťte pbiviz -V příkaz.

Povolení segmentovaného načtení velkých datových sad

dataviewV případě režimu segmentu definujte velikost okna pro dataReductionAlgorithm požadovaný dataViewMapping soubor v souboru . JSON funkce vizuálu. Možnost count určuje velikost okna, které omezuje počet nových řádků dat, jež lze připojit k objektu dataview v každé aktualizaci.

Do souboru capabilities.json přidejte následující kód:

"dataViewMappings": [
    {
        "table": {
            "rows": {
                "for": {
                    "in": "values"
                },
                "dataReductionAlgorithm": {
                    "window": {
                        "count": 100
                    }
                }
            }
    }
]

Nové segmenty se připojí k existujícímu objektu dataview a poskytnou vizuálu jako volání update.

použití fetchMoreData ve vizuálu Power BI

v Power BI můžete fetchMoreData jedním ze dvou způsobů:

  • režim agregace segmentů
  • režim přírůstkových aktualizací

Režim agregace segmentů (výchozí)

V tomto režimu obsahuje datové zobrazení zadané ve vizuálu shromážděná data ze všech předchozích fetchMoreData requests . To znamená, že s každou aktualizací se očekává růst Dataview. Pokud je například očekávaný počet řádků 100 000 a velikost okna je nastavená na 10 000, bude první aktualizace Dataview obsahovat 10 000 řádků, druhá aktualizace 20 000 řádků atd.

Tento režim vyberete voláním metody fetchMoreData s parametrem aggregateSegments = true.

Pokud chcete zjistit, jestli data existují, zkontrolujte přítomnost dataView.metadata.segment:

    public update(options: VisualUpdateOptions) {
        const dataView = options.dataViews[0];
        console.log(dataView.metadata.segment);
        // output: __proto__: Object
    }

Kontrolou options.operationKind můžete také zjistit, jestli se jedná o první nebo následnou aktualizaci. V následujícím kódu VisualDataChangeOperationKind.Create odkazuje na první segment a VisualDataChangeOperationKind.Append odkazuje na další segmenty.

Ukázkovou implementaci představuje následující fragment kódu:

// CV update implementation
public update(options: VisualUpdateOptions) {
    // indicates this is the first segment of new data.
    if (options.operationKind == VisualDataChangeOperationKind.Create) {

    }

    // on second or subsequent segments:
    if (options.operationKind == VisualDataChangeOperationKind.Append) {

    }

    // complete update implementation
}

Z uživatelského rozhraní obslužné rutiny události také můžete volat metodu fetchMoreData. Je to vidět zde:

btn_click(){
{
    // check if more data is expected for the current data view
    if (dataView.metadata.segment) {
        //request for more data if available; as a response, Power BI will call update method
        let request_accepted: bool = this.host.fetchMoreData(true);
        // handle rejection
        if (!request_accepted) {
            // for example, when the 100 MB limit has been reached
        }
    }
}

Jako odpověď na volání metody this.host.fetchMoreData zavolá Power BI metodu update vizuálu s novým segmentem dat.

Poznámka

Aby se předešlo omezením paměti klienta, Power BI v současné době omezuje celkové množství načtených dat na 100 MB. Po dosažení fetchMoreData() tohoto limitu vrátí false .

Režim přírůstkových aktualizací

V tomto režimu obsahuje Dataview poskytnuté vizuálu jenom přírůstková data. To znamená, že velikost Dataview nesmí překročit definovanou velikost okna. Pokud se například očekává celkový počet řádků 101 000 a velikost okna je nastavena na 10 000, proběhne 10 aktualizací vizuálu o velikosti Dataview 10 000 a jedna aktualizace o velikosti Dataview 1 000.

Tento režim vyberete voláním metody fetchMoreData s parametrem aggregateSegments = false.

Pokud chcete zjistit, jestli data existují, zkontrolujte přítomnost dataView.metadata.segment:

    public update(options: VisualUpdateOptions) {
        const dataView = options.dataViews[0];
        console.log(dataView.metadata.segment);
        // output: __proto__: Object
    }

Kontrolou options.operationKind můžete také zjistit, jestli se jedná o první nebo následnou aktualizaci. V následujícím kódu VisualDataChangeOperationKind.Create odkazuje na první segment a VisualDataChangeOperationKind.Segment odkazuje na následné segmenty.

Ukázkovou implementaci představuje následující fragment kódu:

// CV update implementation
public update(options: VisualUpdateOptions) {
    // indicates this is the first segment of new data.
    if (options.operationKind == VisualDataChangeOperationKind.Create) {

    }

    // on second or subsequent segments:
    if (options.operationKind == VisualDataChangeOperationKind.Segment) {
        
    }

    // skip overlapping rows 
    const rowOffset = (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1;

    // Process incoming data
    for (var i = rowOffset; i < dataView.table.rows.length; i++) {
        var val = <number>(dataView.table.rows[i][0]); // Pick first column               
            
     }
     
    // complete update implementation
}

Z uživatelského rozhraní obslužné rutiny události také můžete volat metodu fetchMoreData. Je to vidět zde:

btn_click(){
{
    // check if more data is expected for the current data view
    if (dataView.metadata.segment) {
        //request for more data if available; as a response, Power BI will call update method
        let request_accepted: bool = this.host.fetchMoreData(false);
        // handle rejection
        if (!request_accepted) {
            // for example, when the 100 MB limit has been reached
        }
    }
}

Jako odpověď na volání metody this.host.fetchMoreData zavolá Power BI metodu update vizuálu s novým segmentem dat.

Poznámka

I když jsou data v různých aktualizacích datových zobrazení většinou exkluzivní, dojde k překrytí mezi po sobě jdoucími datovými zobrazeními. U mapování dat tabulky a kategorií se předpokládá, že prvních N řádků Dataview bude obsahovat data zkopírovaná z předchozího Dataview. Počet řádků N zjistíte kódem (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1.

Důležité informace a omezení

  • Velikost okna je omezená na rozsah 2 – 30000.
  • Celkový počet řádků pro zobrazení dat je omezen na 1 048 576 řádků.
  • V režimu agregace segmentů je velikost paměti pro Dataview omezena na 100 MB.

Další kroky