Zdieľať cez


Načítanie väčšieho zdroja údajov zo služby Power BI

Rozhranie API fetchMoreData umožňuje načítať údajové bloky rôznych veľkostí, čím umožňuje povoliť vizuálom Power BI obísť pevný limit zobrazenia údajov v objeme 30 000 riadkov. Okrem pôvodného prístupu agregovania všetkých požadovaných blokov teraz rozhranie API podporuje aj prírastkové načítavanie údajových blokov.

Môžete nakonfigurovať počet riadkov, ktoré sa majú načítať v určitom čase vopred, alebo môžete použiť dataReductionCustomization na dynamické nastavenie veľkosti bloku údajov autorom zostavy.

Poznámka

Rozhranie fetchMoreData API je k dispozícii vo verzii 3.4 a novšej.

Dynamické dataReductionCustomization rozhranie API je k dispozícii vo verzii 5.2 a novšej.

Ak chcete zistiť, ktorú verziu používate, pozrite si apiVersion pbiviz.json súbore.

Povolenie segmentovaného načítania veľkých sémantických modelov

Definujte veľkosť okna pre dataReductionAlgorithm položku v súbore capabilities.json vizuálu pre požadovanú hodnotu dataViewMapping. Funkcia count určí veľkosť okna, ktoré obmedzuje počet nových údajových riadkov, ktoré môžete pripojiť k tabuľke dataview v každej aktualizácii.

Do súboru capabilities.json napríklad pridajte nasledujúci kód, aby ste mohli naraz pripojiť 100 riadkov údajov:

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

Nové segmenty sú pripojené k existujúcim dataview segmentom a poskytnuté vizuálu update ako volanie metódy .

Použitie funkcie fetchMoreData vo vizuáli služby Power BI

V službe Power BI môžete fetchMoreData použiť jeden z dvoch spôsobov:

  • režim agregácie segmentov
  • režim prírastkových aktualizácií

Režim agregácie segmentov (predvolené)

V režime agregácie segmentov obsahuje zobrazenie údajov, ktoré sa poskytuje vizuálu, súhrnné údaje zo všetkých predchádzajúcich fetchMoreData requests. Z tohto dôvodu sa veľkosť zobrazenia údajov zväčší pri každej aktualizácii podľa veľkosti okna. Ak sa napríklad očakáva celkový počet riadkov 100 000 a veľkosť okna je nastavená na 10 000, prvé aktualizované zobrazenie údajov by malo obsahovať 10 000 riadkov, druhé aktualizované zobrazenie údajov by malo obsahovať 20 000 riadkov atď.

Vyberte režim agregácie segmentov zavolaním fetchMoreData s .aggregateSegments = true

Existenciu údajov môžete určiť tak, že skontrolujete, dataView.metadata.segmentči existuje :

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

Môžete tiež skontrolovať a zistiť, či je aktualizácia prvou aktualizáciou alebo následnou aktualizáciou options.operationKind. V nasledujúcom kóde VisualDataChangeOperationKind.Create odkazuje na prvý segment a VisualDataChangeOperationKind.Append odkazuje na nasledujúce segmenty.

// 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
}

Môžete tiež vyvolať metódu fetchMoreData z obslužného programu udalostí používateľského rozhrania:

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

V reakcii na volanie this.host.fetchMoreData metódy služba Power BI vyvolá metódu vizuálu update s novým segmentom údajov.

Poznámka

Služba Power BI obmedzuje celkové načítané údaje na 100 MB, aby sa predišlo obmedzeniam pamäte klienta. Keď sa dosiahne tento limit, fetchMoreData() vráti sa hodnota false.

Režim prírastkových aktualizácií

V režime prírastkových aktualizácií obsahuje zobrazenie údajov, ktoré sa poskytuje vizuálu, iba ďalšiu množinu prírastkových údajov. Veľkosť zobrazenia údajov sa rovná definovanej veľkosti okna (alebo menšej, ak je posledný bit údajov menší ako veľkosť okna). Ak sa napríklad očakáva celkový počet riadkov 101 000 a veľkosť okna je nastavená na 10 000, vizuál získa 10 aktualizácií s veľkosťou zobrazenia údajov 10 000 a jednu aktualizáciu s veľkosťou zobrazenia údajov 1 000.

Režim prírastkových aktualizácií sa vyberie zavolaním fetchMoreData funkcie pomocou funkcie aggregateSegments = false.

Existenciu údajov môžete určiť tak, že skontrolujete, dataView.metadata.segmentči existuje :

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

Môžete tiež skontrolovať, či je aktualizácia prvou aktualizáciou alebo následnou aktualizáciou options.operationKind. V nasledujúcom kóde VisualDataChangeOperationKind.Create odkazuje na prvý segment a VisualDataChangeOperationKind.Segment odkazuje na nasledujúce segmenty.

// 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
}

Môžete tiež vyvolať metódu fetchMoreData z obslužného programu udalostí používateľského rozhrania:

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

V reakcii na volanie this.host.fetchMoreData metódy služba Power BI vyvolá metódu vizuálu update s novým segmentom údajov.

Poznámka

Napriek tomu, že údaje v rôznych aktualizáciách zobrazení údajov sú väčšinou exkluzívne, medzi po sebe nasledujúcimi zobrazeniami údajov sa čiastočne prekrývajú.

V prípade priradenia tabuľkových a kategorických údajov sa dá očakávať, že prvé N riadky zobrazenia údajov obsahujú údaje skopírované z predchádzajúceho zobrazenia údajov.

N možno určiť podľa: (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1

Vizuál uchováva zobrazenie údajov, ktoré sa doň odovzdáva, aby mohol pristupovať k údajom bez dodatočnej komunikácie so službou Power BI.

Prispôsobené zníženie počtu údajov

Keďže vývojár nemôže vždy vopred vedieť, aký typ údajov sa zobrazí vizuál, môže chcieť autorovi zostavy povoliť dynamicky nastaviť veľkosť údajového bloku. Od rozhrania API verzie 5.2 môžete autorovi zostavy povoliť, aby vždy nastavil veľkosť údajových blokov, ktoré sa načítavajú.

Ak chcete povoliť autorovi zostavy nastaviť počet, najskôr definujte objekt tably vlastností s názvom dataReductionCustomization vo vašom súbore capabilities.json :

    "objects": {
        "dataReductionCustomization": {
            "displayName": "Data Reduction",
            "properties": {
                "rowCount": {
                    "type": {
                        "numeric": true
                    },
                    "displayName": "Row Reduction",
                    "description": "Show Reduction for all row groups",
                    "suppressFormatPainterCopy": true
                },
                "columnCount": {
                    "type": {
                        "numeric": true
                    },
                    "displayName": "Column Reduction",
                    "description": "Show Reduction for all column groups",
                    "suppressFormatPainterCopy": true
                }
            }
        }
    },

Potom po znaku dataViewMappingsdefinujte predvolené hodnoty pre dataReductionCustomization.

   "dataReductionCustomization": {
        "matrix": {
            "rowCount": {
                "propertyIdentifier": {
                    "objectName": "dataReductionCustomization",
                    "propertyName": "rowCount"
                },
                "defaultValue": "100"
            },
            "columnCount": {
                "propertyIdentifier": {
                    "objectName": "dataReductionCustomization",
                    "propertyName": "columnCount"
                },
                "defaultValue": "10"
            }
        }
    }

Informácie o redukcii údajov sa zobrazia vo vizuáli na table formátu.

Snímka obrazovky znázorňujúca posúvača formátu s možnosťou nastaviť počet zníženia počtu údajov.

Dôležité informácie a obmedzenia

  • Veľkosť okna je obmedzená na rozsah od 2 do 30 000.

  • Celkový počet riadkov v zobrazení údajov je obmedzený na 1 048 576.

  • Veľkosť pamäte zobrazenia údajov je v režime agregácie segmentov obmedzená na 100 MB.