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=truenei metadati dello schema. Contiene colonne:ErrorCode,ErrorMessage,ErrorDescriptione i campi della posizione di origine. I metadati dello schema includonoFaultCodeanche (codice di errore esadecimale) eFaultString(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 |
|---|---|---|---|---|
|
dataset
|
path | True |
string (uuid) |
ID set di dati |
|
group
|
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 |
|
| customData |
string |
Dati personalizzati da usare nella sicurezza a livello di riga dinamica. Ad esempio, |
|
| 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 |
| customData |
string |
Dati personalizzati da usare nella sicurezza a livello di riga dinamica. Ad esempio, |
| 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. |