Vylepšené obnovenie pomocou rozhrania Power BI REST API
Pomocou ľubovoľného programovacieho jazyka, ktorý podporuje volania REST, môžete vykonávať sémantické operácie obnovenia modelu pomocou rozhrania REST API obnovenia množiny údajov služby Power BI.
Optimalizované obnovenie pre veľké a zložité rozdelenia modelov sa tradične vyvoláva s programovacími metódami, ktoré používajú TOM (tabuľkový objektový model), rutiny typu cmdlet prostredia PowerShell alebo TMSL (jazyk na skriptovanie tabuľkového modelu). Tieto metódy si však vyžadujú dlhodobé pripojenia HTTP, ktoré môžu byť nespoľahlivé.
Rozhranie REST API obnovenia údajov služby Power BI môže vykonávať operácie obnovenia modelu asynchrónne, takže dlhodobé pripojenia HTTP z klientskych aplikácií nie sú potrebné. V porovnaní so štandardnými operáciami obnovenia poskytuje vylepšené obnovenia s rozhraním REST API ďalšie možnosti prispôsobenia a nasledujúce funkcie, ktoré sú užitočné pre veľké modely:
- Dávkové hlásenia
- Obnovenie na úrovni tabuľky a oblasti
- Používanie politík prírastkového obnovenia
-
GET
podrobnosti o obnovení - Zrušenie obnovenia
- Konfigurácia časového limitu
Nota
- V minulosti sa vylepšené obnovenie nazývalo asynchrónne obnovenie s rozhraním REST API. Štandardné obnovenie, ktoré používa rozhranie REST API Obnoviť množinu údajov, sa však tiež spúšťa asynchrónne podľa svojej prirodzenej povahy.
- Vylepšené operácie obnovenia rozhrania REST API služby Power BI neobnovujú automaticky vyrovnávacie pamäte dlaždíc. Vyrovnávacia pamäť dlaždíc sa obnoví iba vtedy, keď používateľ pristupuje k zostave.
Základná URL adresa
Základná URL adresa je v nasledujúcom formáte:
https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes
Zdroje a operácie môžete pripojiť k základnej URL adrese na základe parametrov. V nasledujúcom diagrame sú Groups, Množiny údajov a Obnovenia kolekcie. skupiny
Požiadavky
Na používanie rozhrania REST API potrebujete nasledujúce požiadavky:
- Sémantický model v službe Power BI Premium, Premium na používateľa alebo Power BI Embedded.
- ID skupiny a ID množiny údajov na použitie v URL adrese požiadavky.
- rozsah povolení pre Dataset.ReadWrite.All.
Počet obnovení je obmedzený podľa všeobecných obmedzení obnovení založených na rozhraniach API pre modely Pro a Premium.
Overovanie
Všetky volania sa musia overiť pomocou platného tokenu ID OAuth 2 spoločnosti Microsoft v hlavičke Authorization. Token musí spĺňať nasledujúce požiadavky:
- Buď token používateľa, alebo objekt služby aplikácie.
- Nastavte cieľovú skupinu na
https://api.powerbi.com
správne. - Používa ju používateľ alebo aplikácia, ktorá má v modeli dostatočné povolenia.
Nota
Úpravy rozhrania REST API nemenia aktuálne definované povolenia pre obnovenia modelu.
POST/refreshes (POST/obnovenia)
Ak chcete vykonať obnovenie, pomocou položky UVEREJNIŤ sloveso v kolekcii /refreshes pridajte do kolekcie nový objekt obnovenia. Hlavička Umiestnenia v odpovedi obsahuje requestId
. Keďže operácia je asynchrónne, klientska aplikácia sa môže odpojiť a v prípade potreby použiť requestId
na kontrolu stavu neskôr.
Nasledujúci kód zobrazuje vzorovú požiadavku:
POST https://api.powerbi.com/v1.0/myorg/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/refreshes
Text požiadavky môže pripomínať nasledujúci príklad:
{
"type": "Full",
"commitMode": "transactional",
"maxParallelism": 2,
"retryCount": 2,
"timeout": "02:00:00",
"objects": [
{
"table": "DimCustomer",
"partition": "DimCustomer"
},
{
"table": "DimDate"
}
]
}
Nota
Služba prijíma pre model iba jednu operáciu obnovenia naraz. Ak sa vyskytne aktuálne spustené obnovenie a odošle sa ďalšia žiadosť, vráti sa 400 Bad Request
kód stavu protokolu HTTP.
Parametre
Ak chcete vykonať vylepšenú operáciu obnovenia, musíte v tele požiadavky zadať jeden alebo viac parametrov. Zadané parametre môžu určiť predvolenú alebo voliteľnú hodnotu. Keď žiadosť určuje parametre, všetky ostatné parametre sa použijú na operáciu s ich predvolenými hodnotami. Ak žiadosť určuje žiadne parametre, všetky parametre používajú svoje predvolené hodnoty a dôjde k štandardnej operácii obnovenia.
Meno | Typ | Predvolený | Popis |
---|---|---|---|
type |
Enum | automatic |
Typ spracovania, ktoré sa má vykonať. Typy sú v súlade s typmi príkazov obnovenia TMSL: full , clearValues , calculate , dataOnly , automatic a defragment . Typ add nie je podporovaný. |
commitMode |
Enum | transactional |
Určí, či sa majú objekty potvrdiť v dávkach alebo len v prípade dokončenia. Režimy sú transactional a partialBatch . Pri použití partialBatch sa operácia obnovenia nevyskytuje v rámci jednej transakcie. Každý príkaz je spáchaný individuálne. V prípade zlyhania môže byť model prázdny alebo môže obsahovať iba podmnožinu údajov. Ak chcete pred zlyhaním chrániť údaje, ktoré boli v modeli pred začatím operácie, vykonávať operáciu s commitMode = transactional . |
maxParallelism |
Int | 10 |
Určuje maximálny počet vlákien, ktoré môžu spracovávať príkazy spracovávania paralelne. Táto hodnota je v súlade s vlastnosťou MaxParallelism , ktorú je možné nastaviť v príkaze Sequence TMSL alebo pomocou iných metód. |
retryCount |
Int | 0 |
Počet opakovaných pokusov operácie pred zlyhaním. |
objects |
Pole | Celý model | Pole objektov, ktoré sa majú spracovať. Každý objekt zahŕňa table pri spracovaní celej tabuľky alebo table a partition pri spracovaní oblasti. Ak nie sú zadané žiadne objekty, celý model sa obnoví. |
applyRefreshPolicy |
Boolean | true |
Ak je definovaná politika prírastkového obnovenia, určí, či sa má politika použiť. Režimy sú true alebo false . Ak sa politika nepoužije, celý proces ponechá definície oblastí nezmenené a úplne obnoví všetky oblasti v tabuľke. Ak je commitMode transactional , applyRefreshPolicy možno true alebo false . Ak je commitMode partialBatch , nepodporuje sa applyRefreshPolicy true a applyRefreshPolicy musí byť nastavený na hodnotu false . |
effectiveDate |
Dátum | Aktuálny dátum | Ak sa použije politika prírastkového obnovenia, parameter effectiveDate prepíše aktuálny dátum. Ak nie je zadaný, aktuálny deň sa určí pomocou konfigurácie časového pásma v časti Obnoviť. |
timeout |
Povrázok | 05:00:00 (5 hodín) | Ak je zadaná timeout , každý pokus o obnovenie údajov v sémantickom modeli dodržiava tento časový limit. Jedna žiadosť o obnovenie môže obsahovať viacero pokusov, ak je zadaná retryCount , čo môže spôsobiť, že celkové trvanie obnovenia prekročí zadaný časový limit. Napríklad nastavenie timeout 1 hodiny s retryCount 2 môže mať za následok celkové trvanie obnovenia až 3 hodiny. Používatelia môžu upraviť timeout skrátiť trvanie obnovenia pre rýchlejšie zisťovanie zlyhaní alebo predĺžiť jeho trvanie za predvolených 5 hodín, ak budú zložitejšie obnovenia údajov. Celkové trvanie obnovenia vrátane opakovaní však nemôže presiahnuť 24 hodín. |
Odpoveď
202 Accepted
Odpoveď obsahuje aj pole Location
hlavičky odpovede na nasmerovanie volajúceho na operáciu obnovenia, ktorá bola vytvorená a prijatá. The Location
is the location of the new resource the request created, which includes the requestId
that some enhanced refresh operations require. Napríklad v nasledujúcej odpovedi je requestId
posledným identifikátorom v 87f31ef7-1e3a-4006-9b0b-191693e79e9e
odpovede .
x-ms-request-id: 87f31ef7-1e3a-4006-9b0b-191693e79e9e
Location: https://api.powerbi.com/v1.0/myorg/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/refreshes/87f31ef7-1e3a-4006-9b0b-191693e79e9e
GET /refreshes (ZÍSKAŤ/obnovenia)
Sloveso GET v kolekcii /refreshes použite na zoznam historických, aktuálnych a čakajúcich operácií obnovenia.
Telo odpovede môže vyzerať ako v nasledujúcom príklade:
[
{
"requestId": "1344a272-7893-4afa-a4b3-3fb87222fdac",
"refreshType": "ViaEnhancedApi",
"startTime": "2020-12-07T02:06:57.1838734Z",
"endTime": "2020-12-07T02:07:00.4929675Z",
"status": "Completed",
"extendedStatus": "Completed"
},
{
"requestId": "474fc5a0-3d69-4c5d-adb4-8a846fa5580b",
"startTime": "2020-12-07T01:05:54.157324Z",
"refreshType": "ViaEnhancedApi",
"status": "Unknown"
}
{
"requestId": "85a82498-2209-428c-b273-f87b3a1eb905",
"refreshType": "ViaEnhancedApi",
"startTime": "2020-12-07T01:05:54.157324Z",
"status": "Unknown",
"extendedStatus": "NotStarted"
}
]
Nota
Ak by v krátkom čase existovalo príliš veľa žiadostí, služba Power BI môže žiadosti o podporu zrušiť. Power BI vykoná obnovenie, zaradí do frontu ďalšiu požiadavku a vráti všetky ostatné. Podľa návrhu nie je možné dotazovať stav na vynechaných požiadavkách.
Vlastnosti odpovede
Meno | Typ | Popis |
---|---|---|
requestId |
Guid | Identifikátor žiadosti o obnovenie. Na vytvorenie dotazu na stav jednotlivých operácií obnovenia potrebujete requestId alebo na zrušenie prebiehajúceho obnovenia. |
refreshType |
Povrázok |
OnDemand označuje, že obnovenie sa spustilo interaktívne prostredníctvom portálu služby Power BI.Scheduled označuje, že obnovenie sa spustilo podľa plánu obnovenia modelu. ViaApi označuje, že volanie rozhrania API spustilo obnovenie. ViaEnhancedApi označuje, že volanie rozhrania API spustilo vylepšené obnovenie. |
startTime |
Povrázok | Dátum a čas začatia obnovenia. |
endTime |
Povrázok | Dátum a čas skončenia obnovenia. |
status |
Povrázok |
Completed označuje úspešné dokončenie operácie obnovenia. Failed označuje zlyhanie operácie obnovenia. Unknown označuje, že stav dokončenia nie je možné určiť. Keď je stav endTime prázdny. Disabled označuje, že obnovenie bolo vypnuté selektívnym obnovením. Cancelled označuje, že obnovenie bolo úspešne zrušené. |
extendedStatus |
Povrázok | Rozšíri vlastnosť status na poskytnutie ďalších informácií. |
Nota
V službe Azure Analysis Services je dokončený status
je výsledok succeeded
. Ak migrujete riešenie služby Azure Analysis Services do služby Power BI, možno budete musieť svoje riešenia upraviť.
Obmedzenie počtu vrátených operácií obnovenia
Rozhranie REST API služby Power BI podporuje obmedzenie požadovaného počtu položiek v histórii obnovení pomocou voliteľného parametra $top
. Ak parameter nie je zadaný, predvolené sú všetky dostupné položky.
GET https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes?$top={$top}
< GET /refreshes/>requestId
Ak chcete skontrolovať stav operácie obnovenia, použite sloveso GET v objekte obnovenia zadaním requestId
. Ak prebieha operácia, status
vráti InProgress
, ako v nasledujúcom príklade tela odpovede:
{
"startTime": "2020-12-07T02:06:57.1838734Z",
"endTime": "2020-12-07T02:07:00.4929675Z",
"type": "Full",
"status": "InProgress",
"currentRefreshType": "Full",
"objects": [
{
"table": "DimCustomer",
"partition": "DimCustomer",
"status": "InProgress"
},
{
"table": "DimDate",
"partition": "DimDate",
"status": "InProgress"
}
]
}
< DELETE/refreshes/>requestId
Ak chcete zrušiť prebiehajúce vylepšené obnovenie, použite sloveso DELETE v objekte obnovenia určením requestId
.
Napríklad
DELETE https://api.powerbi.com/v1.0/myorg/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/refreshes/1344a272-7893-4afa-a4b3-3fb87222fdac
Dôležité informácie a obmedzenia
Operácia obnovenia má nasledujúce dôležité informácie a obmedzenia:
Štandardné operácie obnovenia
- Nie je možné zrušiť plánované obnovenia modelu alebo obnovenia modelu na požiadanie, ktoré sa spustili výberom tlačidla obnovenia na portáli pomocou
DELETE /refreshes/<requestId>
. - Plánované obnovenia modelu a obnovenia na požiadanie, ktoré sa spustili výberom tlačidla obnovenia na portáli, nepodporujú získavanie podrobností o operácii obnovenia pomocou
GET /refreshes/<requestId>
. - Podrobnosti a Zrušiť sú nové operácie len na vylepšené obnovenie. Štandardné obnovenie nepodporuje tieto operácie.
Power BI Embedded
Ak sa kapacita pozastaví manuálne na portáli služby Power BI alebo pomocou prostredia PowerShell alebo nastane výpadok systému, stav prebiehajúcich rozšírených operácií obnovenia zostáva InProgress
maximálne šesť hodín. Ak sa kapacita obnoví do šiestich hodín, operácia obnovenia sa automaticky obnoví. Ak sa kapacita obnoví po dlhšej ako šesť hodín, operácia obnovenia môže vrátiť chybu časového limitu. Potom musíte operáciu obnovenia reštartovať.
Vyradenie sémantických modelov
Power BI používa na optimalizáciu pamäte kapacitu dynamickú správu pamäte. Ak je model počas operácie obnovenia vyradený z pamäte, môže sa vrátiť nasledujúca chyba:
{
"messages": [
{
"code": "0xC11C0020",
"message": "Session cancelled because it is connected to a database that has been evicted to free up memory for other operations",
"type": "Error"
}
]
}
Riešením je opätovné spustenie operácie obnovenia. Ďalšie informácie o dynamickej správe pamäte a vyradení modelu nájdete v téme vyradenia modelov.
Časové limity obnovenia operácie
Ak je zadaná retryCount
operácia obnovenia, môže obsahovať viacero pokusov. Každý pokus má predvolený časový limit 5 hodín, ktorý je možné upraviť pomocou parametra timeout
. Celkové trvanie obnovenia vrátane opakovaní nesmie presiahnuť 24 hodín.
Ak retryCount
určuje číslo, nová operácia obnovenia sa spustí s časovým limitom. Služba túto operáciu opakuje, kým buď neuspeje, nedosiahne limit retryCount
alebo nedosiahne maximálny počet 24 hodín od prvého pokusu.
timeout
môžete skrátiť, aby bolo možné rýchlejšie zisťovanie zlyhaní z dôvodu rýchlejšieho zisťovania zlyhaní alebo predĺžiť jeho trvanie za predvolených 5 hodín, aby bolo možné vykonať zložitejšie obnovenia údajov.
Pri plánovaní obnovenia sémantického modelu pomocou rozhrania REST API na obnovenie množiny údajov zvážte časové limity a parameter Počet opätovných pokusov. Obnovenie môže prekročiť časový limit v prípade zlyhania počiatočného pokusu a nastavenie Počet opätovných pokusov je nastavené na hodnotu 1 alebo viac. Ak požiadate o obnovenie pomocou príkazu "RetryCount": 1 a prvý pokus zlyhá po 4 hodinách, spustí sa druhý pokus. Ak sa to podarí za 3 hodiny, celkový čas obnovenia je 7 hodín.
Ak operácie obnovenia pravidelne zlyhajú, prekročia časový limit alebo prekročia požadovaný čas úspešnej operácie obnovenia, zvážte zníženie množstva údajov, ktoré sa obnovujú zo zdroja údajov. Obnovenie môžete rozdeliť na viaceré požiadavky, napríklad žiadosť pre každú tabuľku. V parametri commitMode môžete tiež zadať časťBatch.
Ukážka kódu
Ukážku kódu jazyka C# získate v téme restApiSample v službe GitHub.
Ak chcete použiť ukážku kódu:
- Klonovať alebo stiahnuť odkladací priestor.
- Otvorte riešenie RestApiSample.
- Vyhľadajte
client.BaseAddress = …
riadka a zadajte svoju základnú URL adresu.
Ukážka kódu používa overovanie objektom služby.