complemento de dax_request

El dax_request complemento ejecuta una consulta de expresiones de análisis de datos (DAX) en un modelo semántico de Power BI y devuelve los resultados como una tabla. Procese la tabla devuelta con operadores estándar del lenguaje de consulta kusto (KQL). Invoque el complemento con el operador evaluate.

El complemento usa el Power BI Execute DAX Queries API, que devuelve los resultados en formato Apache Arrow. El complemento conserva los tipos de columna admitidos cuando convierte la respuesta a una tabla KQL.

Prerequisites

  • El modelo semántico debe estar en un área de trabajo asignada a una capacidad Fabric o Power BI Premium.
  • La API REST De ejecución de consultas del conjunto de datos, permitir puntos de conexión XMLA y Analizar en Excel con la configuración de inquilino de modelos semánticos locales debe estar habilitada.
  • Debe tener permisos de compilación y lectura en el modelo semántico.
  • La directiva de llamada de clúster debe permitir dax llamadas a api.powerbi.com. Para cambiar esta directiva, necesita AllDatabasesAdmin permisos o Ops .

Syntax

evaluate dax_request ( ConnectionString,DaxQuery) [:OutputSchema]

Obtenga más información sobre las convenciones de sintaxis en la documentación de referencia de las convenciones de sintaxis.

Parameters

Name Tipo Required Description
ConnectionString string Yes Dirección URL del modelo semántico seguida de ;Impersonate. Para conocer los formatos de dirección URL admitidos, consulte Cadena de conexión.
DaxQuery string Yes Consulta DAX que se va a ejecutar en el modelo semántico.
OutputSchema - - Nombres y tipos de las columnas de salida esperadas. Use la sintaxis (ColumnName:ColumnType [, ...]).

! [NOTA] Se recomienda especificar OutputSchema . Permite a Kusto determinar las columnas y tipos de salida del complemento sin enviar la consulta DAX a Power BI durante la detección de esquemas. La solicitud de Power BI se aplaza en su lugar a la ejecución de consultas, junto con el resto de la consulta KQL. El complemento devuelve un error si el esquema devuelto no es compatible con el esquema declarado.

Cadena de conexión

El cadena de conexión consta de la dirección URL del modelo semántico y la ;Impersonate directiva de autenticación. Use uno de los formatos siguientes:

  • Modelo semántico en un área de trabajo: https://api.powerbi.com/v1.0/myorg/groups/WorkspaceId/datasets/SemanticModelId;Impersonate

  • Modelo semántico en Mi área de trabajo: https://api.powerbi.com/v1.0/myorg/datasets/SemanticModelId;Impersonate

El myorg segmento de ruta de acceso es literal. *WorkspaceId* y *SemanticModelId* deben ser identificadores únicos globales (GUID). No incluya una cadena de consulta, un fragmento o una ruta de acceso final después de SemanticModelId.

Autenticación y autorización

El complemento usa Microsoft Entra autenticación en nombre de . El motor obtiene un token para el usuario solicitante y envía la consulta DAX en el contexto de seguridad de ese usuario. El usuario debe tener permisos de compilación y lectura en el modelo semántico. Cualquier seguridad de nivel de fila o de nivel de objeto configurada para el usuario se aplica a la consulta.

Use ;Impersonate como directiva de autenticación. No se admite la identidad administrada, la entidad de servicio y la autenticación de clave de aplicación.

Importante

Use un literal de cadena ofuscado para cualquier cadena que contenga información confidencial. Los valores ofuscados no aparecen en el seguimiento de Kusto.

Configurar y llamar a la directiva

El complemento realiza una llamada externa a Power BI. Dado que la directiva de llamada predeterminada bloquea dax las llamadas, un administrador de clústeres debe permitir explícitamente el punto de conexión de Power BI.

El siguiente comando combina una regla restrictiva dax en la directiva de llamada de clúster existente:

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

Compruebe la directiva:

.show cluster policy callout

Devoluciones

El complemento devuelve el resultado de la consulta DAX como una tabla KQL. Conserva los tipos de datos de flecha admitidos. Por ejemplo, los valores de Flecha int64, double, utf8, y date-time se asignan a Kusto long, real, stringy datetime, respectivamente.

Power BI devuelve nombres de columna entre corchetes, como [Category]. En KQL, haga referencia a estos nombres con la ['...'] sintaxis, como ['[Category]'].

Warning

El complemento usa el límite de filas predeterminado del Power BI Execute DAX Queries API (resultSetRowCountLimit). Si la consulta DAX genera más filas que este límite, la tabla devuelta puede estar incompleta sin errores. Filtre o agregue datos en la consulta DAX para mantener el resultado dentro del límite. El filtrado o la agregación posterior en KQL no recupera filas omitidas.

Examples

Devolver todas las filas de una tabla

En el ejemplo siguiente se consulta la Sales tabla. El resultado devuelto está sujeto al límite de filas predeterminado de la API.

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

Procesar los resultados de DAX con Kusto

En el ejemplo siguiente se seleccionan dos columnas en DAX, se resume el resultado en KQL y se filtran por categoría:

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

Filtre y agregue datos en DAX cuando sea posible para reducir la cantidad de datos devueltos a Kusto.

Especificar un esquema de salida

En el ejemplo siguiente se declara el esquema de salida esperado para que Kusto pueda determinar el esquema sin ponerse en contacto con Power BI durante el análisis de consultas. El esquema declarado debe coincidir con el esquema de resultados dinámicos.

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 y resolución
Connection string no válidos Confirme que la dirección URL usa un formato compatible, el área de trabajo y los identificadores de modelo semántico son GUID válidos y la cadena termina con ;Impersonate.
No se permite la llamada Configure la directiva de llamada de clúster para permitir dax llamadas a api.powerbi.com.
Error de autenticación o autorización Confirme que la configuración de inquilino necesaria está habilitada y que el usuario solicitante tiene el permiso Build and Read en el modelo semántico.
Error de solicitud HTTP Asegúrese de servicio Power BI disponibilidad, accesibilidad del punto de conexión y la dirección URL del modelo semántico.