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
fetchMoreData
Rozhraní 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
dataview
V 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.