Megosztás a következőn keresztül:


További adatok lekérése a Power BI-ból

A fetchMoreData API lehetővé teszi különböző méretű adattömbök betöltését, hogy a Power BI-vizualizációk megkerüljék a 30 ezer sor adatnézetének korlátját. A kért adattömbök összesítésének eredeti megközelítésén kívül az API mostantól az adattömbök növekményes betöltését is támogatja.

Beállíthatja, hogy a sorok száma előre beolvasható legyen, vagy lehetővé teheti dataReductionCustomization , hogy a jelentés szerzője dinamikusan állítsa be az adattömb méretét.

Feljegyzés

Az fetchMoreData API a 3.4-es és újabb verzióban érhető el.

A dinamikus dataReductionCustomization API az 5.2-es vagy újabb verzióban érhető el.

Ha meg szeretné tudni, hogy melyik verziót használja, ellenőrizze a apiVersion pbiviz.json fájlban.

Nagy szemantikai modellek szegmentált lekérésének engedélyezése

Adjon meg egy ablakméretet dataReductionAlgorithm a vizualizáció capabilities.json fájljában a szükségeshez dataViewMapping. Ez count határozza meg az ablak méretét, amely korlátozza az egyes frissítésekben hozzáfűzhető dataview új adatsorok számát.

Adja hozzá például a következő kódot a capabilities.json fájlhoz, hogy egyszerre 100 adatsort fűzjön hozzá:

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

Az új szegmensek hozzá vannak fűzve a meglévőhöz dataview , és hívásként jelennek meg a vizualizációban update .

A fetchMoreData használata a Power BI-vizualizációban

A Power BI-ban kétféleképpen lehet fetchMoreData :

  • szegmensek összesítési módja
  • növekményes frissítési mód

Szegmensek összesítési módja (alapértelmezett)

A szegmensek összesítési módjával a vizualizációhoz biztosított adatnézet tartalmazza az összes korábbi fetchMoreData requestsadathalmaz adatait. Ezért az adatnézet mérete az egyes frissítéseknél az ablak méretének megfelelően növekszik. Ha például összesen 100 000 sort várnak, és az ablak mérete 10 000, az első frissítési adatnézetnek 10 000 sort kell tartalmaznia, a második frissítési adatnézetnek 20 000 sort kell tartalmaznia stb.

Válassza ki a szegmensek összesítési módját a következő hívással fetchMoreData aggregateSegments = true: .

A következő meglétének ellenőrzésével állapíthatja meg, hogy léteznek-e dataView.metadata.segmentadatok:

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

Azt is ellenőrizheti, hogy a frissítés az első vagy az azt követő frissítés-e options.operationKind. A következő kód az első szegmensre hivatkozik, VisualDataChangeOperationKind.Create és VisualDataChangeOperationKind.Append az azt követő szegmensekre hivatkozik.

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

A metódust fetchMoreData a felhasználói felület eseménykezelőjéből is meghívhatja:

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

A metódus meghívására adott válaszként a this.host.fetchMoreData Power BI új adatszegmenssel hívja meg update a vizualizáció metódusát.

Feljegyzés

Az ügyfélmemória korlátozásai elkerülése érdekében a Power BI a lekért adatokat 100 MB-ra korlátozza. Ha eléri ezt a korlátot, fetchMoreData() a függvény a visszaadott falseértéket adja vissza.

Növekményes frissítési mód

A növekményes frissítési móddal a vizualizációhoz biztosított adatnézet csak a következő növekményes adatokat tartalmazza. Az adatnézet mérete megegyezik a megadott ablakméretel (vagy kisebb, ha az utolsó adatbit kisebb, mint az ablakméret). Ha például összesen 101 000 sort várnak, és az ablak mérete 10 000, akkor a vizualizáció 10 frissítést kap 10 10 000-es adatnézetmérettel, és egy 1000-es adatnézettel rendelkező frissítést.

A növekményes frissítési mód a következő hívással fetchMoreData aggregateSegments = falsevan kiválasztva: .

A következő meglétének ellenőrzésével állapíthatja meg, hogy léteznek-e dataView.metadata.segmentadatok:

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

Az ellenőrzéssel options.operationKindazt is ellenőrizheti, hogy a frissítés az első vagy az azt követő frissítés-e. A következő kódban VisualDataChangeOperationKind.Create az első szegmensre hivatkozik, és VisualDataChangeOperationKind.Segment az azt követő szegmensekre hivatkozik.

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

A metódust fetchMoreData a felhasználói felület eseménykezelőjéből is meghívhatja:

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

A metódus meghívására adott válaszként a this.host.fetchMoreData Power BI új adatszegmenssel hívja meg update a vizualizáció metódusát.

Feljegyzés

Bár az adatnézetek különböző frissítéseiben szereplő adatok többnyire kizárólagosak, átfedés van az egymást követő adatnézetek között.

Táblázatos és kategorikus adatleképezés esetén az első N adatnézetsorok várhatóan az előző adatnézetből másolt adatokat tartalmazzák.

N meghatározható: (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1

A vizualizáció megőrzi az adatnézetet, hogy a Power BI-val való további kommunikáció nélkül is hozzáférhessen az adatokhoz.

Testreszabott adatcsökkentés

Mivel a fejlesztő nem mindig tudja előre, hogy milyen típusú adatokat fog megjeleníteni a vizualizáció, előfordulhat, hogy lehetővé szeretné tenni a jelentés készítőjének az adattömb méretének dinamikus beállítását. Az API 5.2-es verziójában engedélyezheti a jelentés készítőjének, hogy minden alkalommal beállítsa a beolvasandó adattömbök méretét.

Ha engedélyezni szeretné, hogy a jelentés szerzője beállítsa a darabszámot, először definiáljon egy tulajdonságpanel-objektumot, amelyet a capabilities.json fájlban hív dataReductionCustomization meg:

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

Ezután adja meg az dataViewMappingsalapértelmezett értékeket a következőhöz dataReductionCustomization: .

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

Az adatcsökkentési információk a vizualizáció alatt jelennek meg a Formátum panelen.

Képernyőkép a formátum-pásztázásról az adatcsökkentések számának beállításával.

Szempontok és korlátozások

  • Az ablak mérete legfeljebb 2-30 000 lehet.

  • Az adatnézet teljes sorszáma 1 048 576 sorra korlátozódik.

  • Az adatnézet memóriamérete szegmensösszesítési módban legfeljebb 100 MB lehet.