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ść effectiveUsername może być używana tylko przez użytkowników, którzy są administratorami obszaru roboczego, który zawiera model semantyczny.
    • Właściwość roles moż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 roles tylko 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 = true element w metadanych schematu. Zawiera kolumny: ErrorCode, ErrorMessage, ErrorDescriptioni pola lokalizacji źródłowej. Metadane schematu zawierają FaultCode również (kod błędu szesnastkowy) i FaultString (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
datasetId
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 en-US. Aby uzyskać więcej informacji na temat obsługiwanych kodów kultury, zobacz Obsługiwane języki i kraje/regiony dla Power BI.

customData

string

Niestandardowe dane do użycia w dynamicznym zabezpieczeniach na poziomie wiersza. Na przykład North America można odwoływać się do funkcji modelu CUSTOMDATA() .

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 en-US. Aby uzyskać więcej informacji na temat obsługiwanych kodów kultury, zobacz Obsługiwane języki i kraje/regiony dla Power BI.

customData

string

Niestandardowe dane do użycia w dynamicznym zabezpieczeniach na poziomie wiersza. Na przykład North America można odwoływać się do funkcji modelu CUSTOMDATA() .

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.