Datasets - Execute Dax Queries In Group

Esegue query DAX (Data Analysis Expressions) sul set di dati fornito. Il set di dati deve trovarsi nell'area di lavoro specificata. La risposta viene restituita nel formato Apache Arrow.

Le autorizzazioni o gli errori di query genereranno:

  • Errore di risposta, ad esempio 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..
  • Codice di stato HTTP corretto (200) con un batch di record contenente i dettagli dell'errore.

Permissions

L'impostazione del tenant 'API REST Esegui query set di dati, disponibile in impostazioni di integrazione , deve essere abilitata.

L'utente deve disporre delle autorizzazioni di lettura e compilazione del set di dati. Per altre informazioni, vedere Gestire le autorizzazioni di accesso ai set di dati.

Ambito obbligatorio

Dataset.ReadWrite.All o Dataset.Read.All

Limitations

  • Questa API è disponibile solo per i set di dati ospitati in una capacità.
  • I set di dati ospitati in Azure Analysis Services o che hanno una connessione dinamica a un modello di Azure Analysis Services locale non sono supportati.
  • Una query per chiamata API, ma la query può avere più istruzioni evaluate.
  • Esiste un limite di 120 richieste di query al minuto per utente, indipendentemente dal set di dati su cui viene eseguita una query.
  • Per usare le entità servizio, assicurarsi che l'impostazione del tenant amministratore Consenti alle entità servizio di usare le API di Power BI in Impostazioni sviluppatore sia abilitata. Per altre informazioni sui modelli semantici con sicurezza a livello di riga, vedere Limitazioni della sicurezza a livello di riga.
  • Attualmente sono supportate solo le query DAX e le funzioni INFO. Le query MDX e DMV non sono supportate.

Formato risposta

Il corpo della risposta contiene uno o più flussi IPC apache Arrow concatenati. Ogni flusso è indipendente con il proprio schema e i batch di record. Per elaborare la risposta, usare una libreria client Apache Arrow .

La risposta può includere i tipi di set di righe seguenti, identificati dai metadati a livello di schema (coppie chiave-valore nello schema Arrow):

  • Set di righe di dati: contiene i risultati della query. Nessuna chiave di metadati speciale. I nomi e i tipi di colonna sono determinati dalla query DAX.
  • Set di righe di errore: identificato da IsError = true nei metadati dello schema. Contiene colonne: ErrorCode, ErrorMessage, ErrorDescriptione i campi della posizione di origine. I metadati dello schema includono FaultCode anche (codice di errore esadecimale) e FaultString (messaggio di errore).

I batch di record nella risposta usano LZ4_FRAME compressione. La libreria pyarrow gestisce automaticamente questa operazione. Per .NET, installare il pacchetto NuGet Apache.Arrow.Compression.

Importante

Gli errori di query restituiscono HTTP 200 con un set di righe di errore nel flusso Arrow. Controllare sempre i metadati dello schema anche IsError nei codici di stato HTTP riusciti.

L'esempio di Python seguente illustra come leggere i dati e verificare la presenza di errori usando 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())

Per .NET, usare la classe DaxQueryArrowResponseReader in questo SDK, che gestisce l'analisi del flusso, il rilevamento degli errori e la decompressione LZ4.

POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/executeDaxQueries

Parametri dell'URI

Nome In Necessario Tipo Descrizione
datasetId
path True

string (uuid)

ID set di dati

groupId
path True

string (uuid)

ID dell'area di lavoro

Corpo della richiesta

Nome Necessario Tipo Descrizione
query True

string

Testo della query.

applicationContext

string

Struttura JSON contenente informazioni aggiuntive su un'operazione.

culture

string

Codice delle impostazioni cultura che controlla la formattazione di query specifica delle impostazioni locali, ad esempio en-US. Per altre informazioni sui codici delle impostazioni cultura supportati, vedere Lingue supportate e paesi/aree geografiche per Power BI.

customData

string

Dati personalizzati da usare nella sicurezza a livello di riga dinamica. Ad esempio, North America è possibile fare riferimento alla funzione del CUSTOMDATA() modello.

effectiveUsername

string

Nome utente effettivo per la query.

memoryLimit

integer (int64)

Limite di memoria (in KB) per la query.

queryTimeout

integer

Timeout delle query in secondi.

resultSetRowCountLimit

integer

Numero massimo di righe da restituire. Il valore predefinito è 1.000.000 righe.

roles

string[]

Ruoli assegnati all'utente.

schemaOnly

boolean

Indica se la query deve restituire solo lo schema.

Risposte

Nome Tipo Descrizione
200 OK

string

Query eseguita correttamente. Restituisce dati binari in formato Apache Arrow.

Media Types: "application/vnd.apache.arrow.stream"

Esempio

Execute query with culture
Execute query with custom data
Execute query with effective username
Execute simple DAX query

Execute query with culture

Esempio di richiesta

POST https://api.powerbi.com/v1.0/myorg/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE ROW(\"Formatted Date\", FORMAT(DATE(2024, 12, 31), \"Long Date\"))",
  "culture": "en-US"
}

Risposta di esempio

Execute query with custom data

Esempio di richiesta

POST https://api.powerbi.com/v1.0/myorg/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE FILTER('Sales', 'Sales'[Region] = CUSTOMDATA())",
  "customData": "North America"
}

Risposta di esempio

Execute query with effective username

Esempio di richiesta

POST https://api.powerbi.com/v1.0/myorg/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE SUMMARIZECOLUMNS('Sales'[Region], \"Total\", SUM('Sales'[Amount]))",
  "effectiveUsername": "user@contoso.com",
  "roles": [
    "SalesRole"
  ],
  "queryTimeout": 300
}

Risposta di esempio

Execute simple DAX query

Esempio di richiesta

POST https://api.powerbi.com/v1.0/myorg/groups/f089354e-8366-4e18-aea3-4cb4a3a50b48/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229/executeDaxQueries
{
  "query": "EVALUATE VALUES('Product'[Category])",
  "queryTimeout": 600,
  "schemaOnly": false,
  "resultSetRowCountLimit": 100000
}

Risposta di esempio

Definizioni

DatasetExecuteDaxQueriesRequest

Richiesta di esecuzione di query su un set di dati

Nome Tipo Descrizione
applicationContext

string

Struttura JSON contenente informazioni aggiuntive su un'operazione.

culture

string

Codice delle impostazioni cultura che controlla la formattazione di query specifica delle impostazioni locali, ad esempio en-US. Per altre informazioni sui codici delle impostazioni cultura supportati, vedere Lingue supportate e paesi/aree geografiche per Power BI.

customData

string

Dati personalizzati da usare nella sicurezza a livello di riga dinamica. Ad esempio, North America è possibile fare riferimento alla funzione del CUSTOMDATA() modello.

effectiveUsername

string

Nome utente effettivo per la query.

memoryLimit

integer (int64)

Limite di memoria (in KB) per la query.

query

string

Testo della query.

queryTimeout

integer

Timeout delle query in secondi.

resultSetRowCountLimit

integer

Numero massimo di righe da restituire. Il valore predefinito è 1.000.000 righe.

roles

string[]

Ruoli assegnati all'utente.

schemaOnly

boolean

Indica se la query deve restituire solo lo schema.