Recuperare altri dati da Power BI
L'API fetchMoreData consente di caricare blocchi di dati di dimensioni diverse per consentire agli oggetti visivi di Power BI di ignorare il limite rigido di una visualizzazione dati di 30.000 righe. Oltre all'approccio originale di aggregare tutti i blocchi richiesti, l'API supporta ora anche il caricamento incrementale di blocchi di dati.
È possibile configurare il numero di righe da recuperare in anticipo oppure per dataReductionCustomization
consentire all'autore del report di impostare dinamicamente le dimensioni del blocco.
Nota
L'API fetchMoreData
è disponibile nella versione 3.4 e successive.
L'API dinamica dataReductionCustomization
è disponibile nella versione 5.2 e successive.
Per scoprire quale versione si sta usando, archiviare apiVersion
il file di pbiviz.json .
Abilitare un recupero segmentato di modelli semantici di grandi dimensioni
Definire le dimensioni di una finestra per dataReductionAlgorithm
nel file di capabilities.json dell'oggetto visivo per l'oggetto obbligatoriodataViewMapping
. Determina count
la dimensione della finestra, che limita il numero di nuove righe di dati che è possibile aggiungere a dataview
in ogni aggiornamento.
Ad esempio, aggiungere il codice seguente nel file capabilities.json per aggiungere 100 righe di dati alla volta:
"dataViewMappings": [
{
"table": {
"rows": {
"for": {
"in": "values"
},
"dataReductionAlgorithm": {
"window": {
"count": 100
}
}
}
}
]
I nuovi segmenti vengono aggiunti all'oggetto visivo esistente dataview
e forniti all'oggetto visivo come update
chiamata.
Uso di fetchMoreData nell'oggetto visivo di Power BI
In Power BI è possibile fetchMoreData
usare uno dei due modi seguenti:
- Modalità di aggregazione dei segmenti
- modalità aggiornamenti incrementali
Modalità di aggregazione segmenti (impostazione predefinita)
Con la modalità di aggregazione dei segmenti, la visualizzazione dati fornita all'oggetto visivo contiene i dati accumulati da tutti i precedenti fetchMoreData requests
. Pertanto, le dimensioni della visualizzazione dati aumentano con ogni aggiornamento in base alle dimensioni della finestra. Ad esempio, se è previsto un totale di 100.000 righe e le dimensioni della finestra sono impostate su 10.000, la prima vista dati di aggiornamento deve includere 10.000 righe, la seconda vista dati di aggiornamento deve includere 20.000 righe e così via.
Selezionare la modalità di aggregazione dei segmenti chiamando fetchMoreData
con aggregateSegments = true
.
È possibile determinare se i dati esistono controllando l'esistenza di dataView.metadata.segment
:
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
È anche possibile verificare se l'aggiornamento è il primo aggiornamento o un aggiornamento successivo controllando options.operationKind
. Nel codice seguente si VisualDataChangeOperationKind.Create
riferisce al primo segmento e VisualDataChangeOperationKind.Append
fa riferimento ai segmenti successivi.
// 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
}
È anche possibile richiamare il fetchMoreData
metodo da un gestore eventi dell'interfaccia utente:
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
}
}
}
In risposta alla chiamata al this.host.fetchMoreData
metodo, Power BI chiama il update
metodo dell'oggetto visivo con un nuovo segmento di dati.
Nota
Per evitare vincoli di memoria client, Power BI limita il totale dei dati recuperati a 100 MB. Quando viene raggiunto questo limite, fetchMoreData()
restituisce false
.
Modalità aggiornamenti incrementali
Con la modalità aggiornamenti incrementali, la visualizzazione dati fornita all'oggetto visivo contiene solo il set successivo di dati incrementali. Le dimensioni della visualizzazione dati sono uguali alle dimensioni della finestra definite (o minori, se l'ultimo bit di dati è inferiore alle dimensioni della finestra). Ad esempio, se è previsto un totale di 101.000 righe e le dimensioni della finestra sono impostate su 10.000, l'oggetto visivo otterrà 10 aggiornamenti con dimensioni di visualizzazione dati pari a 10.000 e un aggiornamento con una visualizzazione dati di dimensioni pari a 1.000.
La modalità di aggiornamento incrementale viene selezionata chiamando fetchMoreData
con aggregateSegments = false
.
È possibile determinare se i dati esistono controllando l'esistenza di dataView.metadata.segment
:
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
È anche possibile verificare se l'aggiornamento è il primo aggiornamento o un aggiornamento successivo controllando options.operationKind
. Nel codice seguente si VisualDataChangeOperationKind.Create
riferisce al primo segmento e VisualDataChangeOperationKind.Segment
fa riferimento ai segmenti successivi.
// 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
}
È anche possibile richiamare il fetchMoreData
metodo da un gestore eventi dell'interfaccia utente:
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
}
}
}
In risposta alla chiamata al this.host.fetchMoreData
metodo, Power BI chiama il update
metodo dell'oggetto visivo con un nuovo segmento di dati.
Nota
Anche se i dati nei diversi aggiornamenti delle visualizzazioni dati sono principalmente esclusivi, esistono alcune sovrapposizioni tra visualizzazioni dati consecutive.
Per il mapping di tabelle e dati categorici, è possibile che le prime N
righe della vista dati contengano dati copiati dalla vista dati precedente.
N
può essere determinato da: (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1
L'oggetto visivo mantiene la visualizzazione dati passata in modo che possa accedere ai dati senza comunicazioni aggiuntive con Power BI.
Riduzione dei dati personalizzata
Poiché lo sviluppatore non è sempre in grado di sapere in anticipo quale tipo di dati verrà visualizzato dall'oggetto visivo, potrebbe voler consentire all'autore del report di impostare in modo dinamico le dimensioni del blocco di dati. Dalla versione 5.2 dell'API è possibile consentire all'autore del report di impostare le dimensioni dei blocchi di dati recuperati ogni volta.
Per consentire all'autore del report di impostare il conteggio, definire prima di tutto un oggetto riquadro proprietà denominato dataReductionCustomization
nel file 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
}
}
}
},
Quindi, dopo , dataViewMappings
definire i valori predefiniti per dataReductionCustomization
.
"dataReductionCustomization": {
"matrix": {
"rowCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "rowCount"
},
"defaultValue": "100"
},
"columnCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "columnCount"
},
"defaultValue": "10"
}
}
}
Le informazioni sulla riduzione dei dati sono visualizzate sotto l'oggetto visivo nel riquadro formato.
Considerazioni e limitazioni
La dimensione della finestra è limitata a un intervallo di 2-30.000.
Il numero totale di righe della visualizzazione dati è limitato a 1.048.576 righe.
Le dimensioni della memoria della visualizzazione dati sono limitate a 100 MB In modalità di aggregazione segmenti.
Contenuto correlato
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per