plug-in dax_request

Il dax_request plug-in esegue una query DAX (Data Analysis Expressions) su un modello semantico Power BI e restituisce i risultati come tabella. Elaborare la tabella restituita con operatori KQL (Kusto Query Language) standard. Richiamare il plug-in con l'operatore evaluate.

Il plug-in usa l'API Esegui query DAX Power BI, che restituisce i risultati in formato Apache Arrow. Il plug-in mantiene i tipi di colonna supportati quando converte la risposta in una tabella KQL.

Prerequisites

  • Il modello semantico deve trovarsi in un'area di lavoro assegnata a una capacità Fabric o Power BI Premium.
  • È necessario abilitare l'API REST Dataset Execute Queries, Allow XMLA endpoints (Consenti endpoint XMLA) e Analyze in Excel con le impostazioni del tenant dei modelli semantici locali.
  • È necessario disporre delle autorizzazioni di compilazione e lettura per il modello semantico.
  • I criteri di callout del cluster devono consentire dax i callout a api.powerbi.com. Per modificare questo criterio, sono necessarie AllDatabasesAdmin o Ops autorizzazioni.

Sintassi

evaluate dax_request ( ConnectionString,DaxQuery) [:OutputSchema]

Altre informazioni sulle convenzioni di sintassi sono disponibili nella documentazione di riferimento sulle convenzioni della sintassi.

Parameters

Name Type Required Description
Stringa di connessione string Yes URL del modello semantico seguito da ;Impersonate. Per i formati url supportati, vedere Stringa di connessione.
DaxQuery string Yes Query DAX da eseguire sul modello semantico.
OutputSchema - - Nomi e tipi delle colonne di output previste. Usare la sintassi (ColumnName:ColumnType [, ...]).

! [NOTA] È consigliabile specificare OutputSchema . Consente a Kusto di determinare le colonne di output e i tipi del plug-in senza inviare la query DAX a Power BI durante l'individuazione dello schema. La richiesta di Power BI viene invece posticipata all'esecuzione della query, insieme al resto della query KQL. Il plug-in restituisce un errore se lo schema restituito non è compatibile con lo schema dichiarato.

Stringa di connessione

Il stringa di connessione è costituito dall'URL del modello semantico e dalla ;Impersonate direttiva di autenticazione. Utilizzare uno dei seguenti formati:

  • Modello semantico in un'area di lavoro: https://api.powerbi.com/v1.0/myorg/groups/WorkspaceId/datasets/SemanticModelId;Impersonate

  • Modello semantico nell'area di lavoro personale: https://api.powerbi.com/v1.0/myorg/datasets/SemanticModelId;Impersonate

Il segmento di myorg percorso è letterale. *WorkspaceId* e *SemanticModelId* devono essere identificatori univoci globali (GUID). Non includere una stringa di query, un frammento o un percorso finale dopo SemanticModelId.

Autenticazione e autorizzazione

Il plug-in usa Microsoft Entra'autenticazione on-behalf-of. Il motore ottiene un token per l'utente richiedente e invia la query DAX nel contesto di sicurezza dell'utente. L'utente deve disporre delle autorizzazioni di compilazione e lettura per il modello semantico. Qualsiasi sicurezza a livello di riga o sicurezza a livello di oggetto configurata per l'utente si applica alla query.

Usare ;Impersonate come direttiva di autenticazione. L'identità gestita, l'entità servizio e l'autenticazione della chiave dell'applicazione non sono supportate.

Importante

Usare un valore letterale stringa offuscato per qualsiasi stringa contenente informazioni riservate. I valori offuscati non vengono visualizzati nella traccia Kusto.

Configurare e chiamare criteri

Il plug-in effettua una chiamata esterna a Power BI. Poiché i criteri di callout predefiniti bloccano dax i callout, un amministratore del cluster deve consentire in modo esplicito l'endpoint Power BI.

Il comando seguente unisce una regola restrittiva dax nei criteri di callout del cluster esistenti:

.alter-merge cluster policy callout @'[{
  "CalloutType": "dax",
  "CalloutUriRegex": "api\\.powerbi\\.com.*",
  "CanCall": true
}]'

Verificare i criteri:

.show cluster policy callout

Returns

Il plug-in restituisce il risultato della query DAX come tabella KQL. Mantiene i tipi di dati Arrow supportati. Ad esempio, i valori Arrow , , eseguono date-time rispettivamente il mapping a Kusto long, real, stringe datetime. utf8doubleint64

Power BI restituisce nomi di colonna tra parentesi quadre, ad esempio [Category]. In KQL fare riferimento a questi nomi con la ['...'] sintassi , ad esempio ['[Category]'].

Warning

Il plug-in usa il limite di riga predefinito dell'API Esegui query DAX (resultSetRowCountLimit) Power BI. Se la query DAX produce più righe di questo limite, la tabella restituita può essere incompleta senza errori. Filtrare o aggregare i dati nella query DAX per mantenere il risultato entro il limite. Il filtro o l'aggregazione in seguito in KQL non recupera le righe omesse.

Examples

Restituisce tutte le righe da una tabella

Nell'esempio seguente viene creata una query sulla Sales tabella . Il risultato restituito è soggetto al limite di riga predefinito dell'API.

evaluate dax_request(
  'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
  'EVALUATE Sales')

Elaborare i risultati DAX con Kusto

L'esempio seguente seleziona due colonne in DAX, riepiloga il risultato in KQL e filtra per categoria:

evaluate dax_request(
  'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
  'EVALUATE SELECTCOLUMNS(Sales, "Category", Sales[Category], "Amount", Sales[Amount])')
| summarize TotalAmount = sum(['[Amount]']) by ['[Category]']
| where ['[Category]'] == 'Electronics'

Tip

Filtrare e aggregare i dati in DAX quando possibile ridurre la quantità di dati restituiti a Kusto.

Specificare uno schema di output

Nell'esempio seguente viene dichiarato lo schema di output previsto in modo che Kusto possa determinare lo schema senza contattare Power BI durante l'analisi delle query. Lo schema dichiarato deve corrispondere allo schema dei risultati live.

evaluate dax_request(
  'https://api.powerbi.com/v1.0/myorg/groups/<workspace-id>/datasets/<semantic-model-id>;Impersonate',
  'EVALUATE ROW("cnt", COUNTROWS(Sales), "sumAmt", SUM(Sales[Amount]))')
  : (['[cnt]']:long, ['[sumAmt]']:real)

Troubleshooting

Error Causa e risoluzione
Connection string non valido Verificare che l'URL usi un formato supportato, che l'area di lavoro e gli ID modello semantico siano GUID validi e che la stringa termini con ;Impersonate.
Il callout non è consentito Configurare i criteri di callout del cluster per consentire dax le chiamate a api.powerbi.com.
Errore di autenticazione o autorizzazione Verificare che le impostazioni del tenant necessarie siano abilitate e che l'utente richiedente disponga dell'autorizzazione Di compilazione e lettura per il modello semantico.
Errore di richiesta HTTP Assicurarsi servizio Power BI disponibilità, accessibilità degli endpoint e URL del modello semantico.