Datasets - Execute Dax Queries
Wykonuje zapytania języka DAX (Data Analysis Expressions) względem podanego modelu semantycznego. Model semantyczny może znajdować się w obszarze Mój obszar roboczy lub inny obszar roboczy, pod warunkiem, że obiekt wywołujący ma wymagane uprawnienia. Odpowiedź jest zwracana w formacie Apache Arrow.
Błędy uprawnień lub zapytań spowodują:
- Błąd odpowiedzi, taki jak
XMLA endpoint feature is disabled. Turn on the tenant setting 'Allow XMLA endpoints and Analyze in Excel with on-premises semantic models' to enable this feature.. - Pomyślny kod stanu HTTP (200) z partią rekordów zawierającą szczegóły błędu.
Permissions
Należy włączyć ustawienie dzierżawy Zestaw danych Wykonywanie zapytań interfejsu API RESTw obszarze ustawienia integracji.
Użytkownik musi mieć uprawnienia do odczytu i kompilacji zestawu danych. Aby uzyskać więcej informacji, zobacz Zarządzanie uprawnieniami dostępu do zestawu danych.
Wymagany zakres
Dataset.ReadWrite.All lub Dataset.Read.All
Limitations
- Ten interfejs API jest obsługiwany tylko przez semantyczne modele, które są zgodne z usługa Power BI nowoczesnej infrastruktury. Nieobsługiwane kategorie obejmują:
- Modele semantyczne w obszarze roboczym monitorowania administratora i modelach metryk użycia.
- Semantyczne modele, które nadal używają poziomu zgodności 1103.
- Modele semantyczne korzystające z przestarzałych funkcji, takich jak modele semantyczne wypychania, modele utworzone w usługa Power BI z plików CSV lub pakietów zawartości.
- Zestawy danych, które są hostowane w usługach Azure Analysis Services lub które mają połączenie na żywo z lokalnym modelem usług Azure Analysis Services, nie są obsługiwane.
- Ograniczenia zapytań:
- Jedno zapytanie na wywołanie interfejsu API, ale zapytanie może mieć wiele instrukcji evaluate.
- Następujące limity mają zastosowanie niezależnie od modelu semantycznego, którego dotyczy zapytanie:
- Limit globalny to 120 żądań zapytań na minutę na użytkownika.
- Power BI Pro i Premium na użytkownika (PPU) są ograniczone do 40 żądań zapytań na minutę na użytkownika.
- Obecnie obsługiwane są tylko zapytania języka DAX i funkcje INFO. Zapytania MDX i DMV nie są obsługiwane.
- Ograniczenia jednostki usługi i personifikacji:
- Aby użyć jednostek usługi, upewnij się, że ustawienie dzierżawy administratora Zezwalaj jednostkom usługi na używanie interfejsów API usługi Power BI w obszarze Ustawienia dewelopera jest włączone. Aby uzyskać więcej informacji na temat modeli semantycznych z zabezpieczeniami na poziomie wiersza, zobacz Ograniczenia zabezpieczeń na poziomie wiersza.
- Właściwość
effectiveUsernamemoże być używana tylko przez użytkowników, którzy są administratorami obszaru roboczego, który zawiera model semantyczny. - Właściwość
rolesmoże być używana przez użytkowników tylko wtedy, gdy są członkami określonej roli lub administratorów obszaru roboczego zawierającego model semantyczny. - Jednostki usługi nie mogą być członkami roli. Jednostka usługi może być używana
rolestylko wtedy, gdy jest administratorem obszaru roboczego, który zawiera model semantyczny.
Format odpowiedzi
Treść odpowiedzi zawiera co najmniej jeden połączony strumień IPC strzałki Apache Arrow. Każdy strumień jest samodzielny z własnym schematem i partiami rekordów. Aby przetworzyć odpowiedź, użyj biblioteki klienta Apache Arrow .
Odpowiedź może zawierać następujące typy zestawów wierszy identyfikowane przez metadane na poziomie schematu (pary klucz-wartość w schemacie strzałki):
- Zestaw wierszy danych: zawiera wyniki zapytania. Brak specjalnych kluczy metadanych. Nazwy i typy kolumn są określane przez zapytanie języka DAX.
-
Zestaw wierszy błędów: zidentyfikowany przez
IsError=trueelement w metadanych schematu. Zawiera kolumny:ErrorCode,ErrorMessage,ErrorDescriptioni pola lokalizacji źródłowej. Metadane schematu zawierająFaultCoderównież (kod błędu szesnastkowy) iFaultString(komunikat o błędzie).
Rejestruje partie w odpowiedzi używają kompresji LZ4_FRAME. Biblioteka pyarrow obsługuje to automatycznie. W przypadku .NET zainstaluj pakiet Apache.Arrow.Compression NuGet.
Ważna
Błędy zapytania zwracają błąd HTTP 200 z zestawem wierszy błędów w strumieniu strzałki. Zawsze sprawdzaj metadane schematu, IsError aby uzyskać nawet pomyślne kody stanu HTTP.
Poniższy przykład Python pokazuje, jak odczytywać dane i sprawdzać błędy przy użyciu pyarrow:
import io
import pyarrow as pa
# response = requests.post(url, headers=headers, json=request_body)
stream = io.BytesIO(response.content)
results = []
while stream.tell() < len(response.content):
try:
reader = pa.ipc.open_stream(stream)
table = reader.read_all()
metadata = {
k.decode(): v.decode()
for k, v in (reader.schema.metadata or {}).items()
}
if metadata.get("IsError") == "true":
raise RuntimeError(
f"Query error [{metadata.get('FaultCode')}]: "
f"{metadata.get('FaultString')}"
)
else:
results.append(table)
except pa.ArrowInvalid:
break
print(results[0].to_pandas())
W przypadku .NET użyj klasy DaxQueryArrowResponseReader w tym zestawie SDK, która obsługuje analizowanie strumieni, wykrywanie błędów i dekompresję LZ4.
POST https://api.powerbi.com/v1.0/myorg/datasets/{datasetId}/executeDaxQueries
Parametry identyfikatora URI
| Nazwa | W | Wymagane | Typ | Opis |
|---|---|---|---|---|
|
dataset
|
path | True |
string (uuid) |
Identyfikator zestawu danych |
Treść żądania
| Nazwa | Wymagane | Typ | Opis |
|---|---|---|---|
| query | True |
string |
Tekst zapytania. |
| applicationContext |
string |
Struktura JSON zawierająca dodatkowe informacje o operacji. |
|
| culture |
string |
Kod kultury, który kontroluje formatowanie zapytań specyficznych dla ustawień regionalnych, na przykład |
|
| customData |
string |
Niestandardowe dane do użycia w dynamicznym zabezpieczeniach na poziomie wiersza. Na przykład |
|
| effectiveUsername |
string |
Obowiązująca nazwa użytkownika dla zapytania. |
|
| memoryLimit |
integer (int64) |
Limit pamięci (w KB) dla zapytania. |
|
| queryTimeout |
integer |
Limit czasu zapytania w sekundach. |
|
| resultSetRowCountLimit |
integer |
Maksymalna liczba wierszy do zwrócenia. Wartość domyślna to 1000 000 wierszy. |
|
| roles |
string[] |
Role przypisane do użytkownika. |
|
| schemaOnly |
boolean |
Czy zapytanie musi zwracać tylko schemat. |
Odpowiedzi
| Nazwa | Typ | Opis |
|---|---|---|
| 200 OK |
string |
Zapytanie zostało wykonane pomyślnie. Zwraca dane binarne sformatowane przez strzałkę Apache. Media Types: "application/vnd.apache.arrow.stream" |
Przykłady
| Execute query with culture |
| Execute query with custom data |
| Execute query with effective username |
| Execute simple DAX query |
Execute query with culture
Przykładowe żądanie
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE ROW(\"Formatted Date\", FORMAT(DATE(2024, 12, 31), \"Long Date\"))",
"culture": "en-US"
}
Przykładowa odpowiedź
Execute query with custom data
Przykładowe żądanie
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE FILTER('Sales', 'Sales'[Region] = CUSTOMDATA())",
"customData": "North America"
}
Przykładowa odpowiedź
Execute query with effective username
Przykładowe żądanie
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE SUMMARIZECOLUMNS('Sales'[Region], \"Total\", SUM('Sales'[Amount]))",
"effectiveUsername": "user@contoso.com",
"roles": [
"SalesRole"
],
"queryTimeout": 300
}
Przykładowa odpowiedź
Execute simple DAX query
Przykładowe żądanie
POST https://api.powerbi.com/v1.0/myorg/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
"query": "EVALUATE VALUES('Product'[Category])",
"queryTimeout": 600,
"schemaOnly": false,
"resultSetRowCountLimit": 100000
}
Przykładowa odpowiedź
Definicje
DatasetExecuteDaxQueriesRequest
Żądanie wykonywania zapytań względem zestawu danych
| Nazwa | Typ | Opis |
|---|---|---|
| applicationContext |
string |
Struktura JSON zawierająca dodatkowe informacje o operacji. |
| culture |
string |
Kod kultury, który kontroluje formatowanie zapytań specyficznych dla ustawień regionalnych, na przykład |
| customData |
string |
Niestandardowe dane do użycia w dynamicznym zabezpieczeniach na poziomie wiersza. Na przykład |
| effectiveUsername |
string |
Obowiązująca nazwa użytkownika dla zapytania. |
| memoryLimit |
integer (int64) |
Limit pamięci (w KB) dla zapytania. |
| query |
string |
Tekst zapytania. |
| queryTimeout |
integer |
Limit czasu zapytania w sekundach. |
| resultSetRowCountLimit |
integer |
Maksymalna liczba wierszy do zwrócenia. Wartość domyślna to 1000 000 wierszy. |
| roles |
string[] |
Role przypisane do użytkownika. |
| schemaOnly |
boolean |
Czy zapytanie musi zwracać tylko schemat. |