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 requests
adathalmaz 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.segment
adatok:
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 = false
van kiválasztva: .
A következő meglétének ellenőrzésével állapíthatja meg, hogy léteznek-e dataView.metadata.segment
adatok:
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
Az ellenőrzéssel options.operationKind
azt 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 dataViewMappings
alapé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.
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.