Pobieranie większej ilości danych z usługi Power BI
Interfejs API fetchMoreData umożliwia ładowanie fragmentów danych o różnych rozmiarach jako sposób umożliwienia wizualizacjom usługi Power BI obejścia twardego limitu widoku danych 30 000 wierszy. Oprócz oryginalnego podejścia agregowania wszystkich żądanych fragmentów interfejs API obsługuje teraz również przyrostowe ładowanie fragmentów danych.
Możesz skonfigurować liczbę wierszy do pobrania z wyprzedzeniem lub użyć dataReductionCustomization
polecenia , aby zezwolić autorowi raportu na dynamiczne ustawianie rozmiaru fragmentu.
Uwaga
Interfejs fetchMoreData
API jest dostępny w wersji 3.4 lub nowszej.
Dynamiczny dataReductionCustomization
interfejs API jest dostępny w wersji 5.2 lub nowszej.
Aby dowiedzieć się, której wersji używasz, sprawdź apiVersion
plik pbiviz.json .
Włączanie segmentowanego pobierania dużych modeli semantycznych
Zdefiniuj rozmiar okna dla dataReductionAlgorithm
w pliku capabilities.json wizualizacji dla wymaganego pliku dataViewMapping
. Określa count
rozmiar okna, który ogranicza liczbę nowych wierszy danych, które można dołączyć do dataview
w każdej aktualizacji.
Na przykład dodaj następujący kod w pliku capabilities.json , aby dołączyć 100 wierszy danych jednocześnie:
"dataViewMappings": [
{
"table": {
"rows": {
"for": {
"in": "values"
},
"dataReductionAlgorithm": {
"window": {
"count": 100
}
}
}
}
]
Nowe segmenty są dołączane do istniejącej dataview
i udostępniane wizualizacji jako wywołanie update
.
Używanie funkcji fetchMoreData w wizualizacji usługi Power BI
W usłudze Power BI możesz fetchMoreData
na jeden z dwóch sposobów:
- tryb agregacji segmentów
- tryb aktualizacji przyrostowych
Tryb agregacji segmentów (ustawienie domyślne)
W trybie agregacji segmentów widok danych udostępniany wizualizacji zawiera skumulowane dane ze wszystkich poprzednich fetchMoreData requests
elementów . W związku z tym rozmiar widoku danych rośnie wraz z każdą aktualizacją zgodnie z rozmiarem okna. Jeśli na przykład oczekiwano łącznie 100 000 wierszy, a rozmiar okna to 10 000, pierwszy widok danych aktualizacji powinien zawierać 10 000 wierszy, drugi widok danych aktualizacji powinien zawierać 20 000 wierszy itd.
Wybierz tryb agregacji segmentów, wywołując polecenie za pomocą polecenia fetchMoreData
aggregateSegments = true
.
Możesz określić, czy dane istnieją, sprawdzając istnienie elementu dataView.metadata.segment
:
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
Możesz również sprawdzić, czy aktualizacja jest pierwszą aktualizacją, czy kolejną, sprawdzając element options.operationKind
. W poniższym kodzie VisualDataChangeOperationKind.Create
odwołuje się do pierwszego segmentu i VisualDataChangeOperationKind.Append
odwołuje się do kolejnych segmentów.
// 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
}
Możesz również wywołać metodę fetchMoreData
z programu obsługi zdarzeń interfejsu użytkownika:
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
}
}
}
W odpowiedzi na wywołanie this.host.fetchMoreData
metody usługa Power BI wywołuje update
metodę wizualizacji z nowym segmentem danych.
Uwaga
Aby uniknąć ograniczeń pamięci klienta, usługa Power BI ogranicza ilość pobranych danych do 100 MB. Po osiągnięciu fetchMoreData()
tego limitu zwraca wartość false
.
Tryb aktualizacji przyrostowych
W trybie aktualizacji przyrostowych widok danych udostępniany wizualizacji zawiera tylko następny zestaw danych przyrostowych. Rozmiar widoku danych jest równy zdefiniowanemu rozmiarowi okna (lub mniejszemu, jeśli ostatni bit danych jest mniejszy niż rozmiar okna). Jeśli na przykład oczekiwano łącznie 101 000 wierszy, a rozmiar okna zostanie ustawiony na 10 000, wizualizacja otrzyma 10 aktualizacji z rozmiarem widoku danych wynoszącym 10 000, a jedna aktualizacja z widokiem danych o rozmiarze 10 000.
Tryb aktualizacji przyrostowych jest wybierany przez wywołanie metody fetchMoreData
aggregateSegments = false
.
Możesz określić, czy dane istnieją, sprawdzając istnienie elementu dataView.metadata.segment
:
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
Możesz również sprawdzić, czy aktualizacja jest pierwszą aktualizacją, czy kolejną, sprawdzając wartość options.operationKind
. W poniższym kodzie VisualDataChangeOperationKind.Create
odwołuje się do pierwszego segmentu i VisualDataChangeOperationKind.Segment
odwołuje się do kolejnych segmentów.
// 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
}
Możesz również wywołać metodę fetchMoreData
z programu obsługi zdarzeń interfejsu użytkownika:
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
}
}
}
W odpowiedzi na wywołanie this.host.fetchMoreData
metody usługa Power BI wywołuje update
metodę wizualizacji z nowym segmentem danych.
Uwaga
Chociaż dane w różnych aktualizacjach widoków danych są w większości wyłączne, istnieje pewne nakładanie się między kolejnymi widokami danych.
W przypadku mapowania tabel i danych kategorii można oczekiwać, że pierwsze N
wiersze widoku danych będą zawierać dane skopiowane z poprzedniego widoku danych.
N
można określić przez: (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1
Wizualizacja przechowuje widok danych przekazywany do niego, aby mógł uzyskiwać dostęp do danych bez dodatkowej komunikacji z usługą Power BI.
Dostosowywanie redukcji danych
Ponieważ deweloper nie zawsze może wiedzieć z wyprzedzeniem, jakiego typu dane będą wyświetlane w wizualizacji, może chcieć zezwolić autorowi raportu na dynamiczne ustawianie rozmiaru fragmentu danych. Z interfejsu API w wersji 5.2 możesz zezwolić autorowi raportu na ustawianie rozmiaru fragmentów danych pobieranych za każdym razem.
Aby zezwolić autorowi raportu na ustawianie liczby, najpierw zdefiniuj obiekt okienka właściwości o nazwie dataReductionCustomization
w pliku 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
}
}
}
},
Następnie po ustawieniu zdefiniuj dataViewMappings
wartości domyślne dla elementu dataReductionCustomization
.
"dataReductionCustomization": {
"matrix": {
"rowCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "rowCount"
},
"defaultValue": "100"
},
"columnCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "columnCount"
},
"defaultValue": "10"
}
}
}
Informacje o redukcji danych są wyświetlane w obszarze wizualizacji w okienku formatowania.
Rozważania i ograniczenia
Rozmiar okna jest ograniczony do zakresu od 2 do 30 000.
Łączna liczba wierszy widoku danych jest ograniczona do 1 048 576 wierszy.
Rozmiar pamięci widoku danych jest ograniczony do 100 MB W trybie agregacji segmentów.