Datasets - Execute Dax Queries

Ejecuta consultas de expresiones de análisis de datos (DAX) en el conjunto de datos proporcionado. El conjunto de datos debe residir en Mi área de trabajo. La respuesta se devuelve en el formato De flecha de Apache.

Los permisos o errores de consulta darán lugar a:

  • Un error de respuesta, como 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..
  • Un código de estado HTTP correcto (200) con un lote de registro que contiene los detalles del error.

Permissions

La configuración de inquilino conjunto de datos Ejecutar consultas rest, que se encuentra en Configuración de integración, debe estar habilitada.

El usuario debe tener permisos de lectura y compilación del conjunto de datos. Para obtener más información, consulte Administración de permisos de acceso al conjunto de datos.

Ámbito requerido

Dataset.ReadWrite.All o Dataset.Read.All

Limitaciones

  • Esta API solo está disponible para los conjuntos de datos hospedados en una capacidad.
  • No se admiten los conjuntos de datos hospedados en Azure Analysis Services o que tienen una conexión dinámica a un modelo de Azure Analysis Services local.
  • Una consulta por llamada API, pero la consulta puede tener varias instrucciones evaluate.
  • Hay un límite de 120 solicitudes de consulta por minuto por usuario, independientemente del conjunto de datos que se consulte.
  • Para usar entidades de servicio, asegúrese de que la configuración del inquilino de administrador Permitir que las entidades de servicio usen las API de Power BI en configuración del desarrollador está habilitada. Para más información sobre los modelos semánticos con RLS, consulte Limitaciones de RLS.
  • En este momento solo se admiten consultas DAX y funciones INFO. No se admiten consultas MDX y DMV.

Formato de respuesta

El cuerpo de la respuesta contiene uno o varios flujos IPC de Apache Arrow concatenados. Cada secuencia está autocontenida con su propio esquema y lotes de registros. Para procesar la respuesta, use una biblioteca cliente de Apache Arrow .

La respuesta puede incluir los siguientes tipos de conjunto de filas, identificados por metadatos de nivel de esquema (pares clave-valor en el esquema de flecha):

  • Conjunto de filas de datos: contiene los resultados de la consulta. No hay claves de metadatos especiales. La consulta DAX determina los nombres y tipos de columna.
  • Conjunto de filas de error: identificado por IsError = true en metadatos de esquema. Contiene columnas: ErrorCodecampos de ubicación de origen , ErrorMessageErrorDescription, y . Los metadatos del esquema también incluyen FaultCode (código de error hexadecimal) y FaultString (mensaje de error).

Registrar lotes en la respuesta usan LZ4_FRAME compresión. La biblioteca pyarrow controla esto automáticamente. Para .NET, instale el paquete NuGet Apache.Arrow.Compression.

Importante

Los errores de consulta devuelven HTTP 200 con un conjunto de filas de error en la secuencia de flechas. Compruebe siempre los metadatos del esquema para IsError obtener incluso en códigos de estado HTTP correctos.

En el ejemplo Python siguiente se muestra cómo leer datos y comprobar si hay errores mediante 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())

Para .NET, use la clase DaxQueryArrowResponseReader en este SDK, que controla el análisis de flujos, la detección de errores y la descompresión LZ4.

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

Parámetros de identificador URI

Nombre En Requerido Tipo Description
datasetId
path True

string (uuid)

Identificador del conjunto de datos

Cuerpo de la solicitud

Nombre Requerido Tipo Description
query True

string

Texto de consulta.

applicationContext

string

Estructura JSON que contiene información adicional sobre una operación.

culture

string

Código de referencia cultural que controla el formato de consulta específico de la configuración regional, como en-US. Para obtener más información sobre los códigos de referencia cultural admitidos, vea Idiomas y países o regiones admitidos para Power BI.

customData

string

Datos personalizados para su uso en RLS dinámicos. Por ejemplo, North America la función del CUSTOMDATA() modelo puede hacer referencia a esta.

effectiveUsername

string

Nombre de usuario efectivo para la consulta.

memoryLimit

integer (int64)

Límite de memoria (en KB) para la consulta.

queryTimeout

integer

Tiempo de espera de consulta en segundos.

resultSetRowCountLimit

integer

Número máximo de filas que se van a devolver. El valor predeterminado es 1000 000 filas.

roles

string[]

Roles asignados al usuario.

schemaOnly

boolean

Si la consulta debe devolver solo el esquema.

Respuestas

Nombre Tipo Description
200 OK

string

La consulta se ejecutó correctamente. Devuelve datos binarios con formato de flecha de Apache.

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

Ejemplos

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

Execute query with culture

Solicitud de ejemplo

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"
}

Respuesta de muestra

Execute query with custom data

Solicitud de ejemplo

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"
}

Respuesta de muestra

Execute query with effective username

Solicitud de ejemplo

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": "[email protected]",
  "roles": [
    "SalesRole"
  ],
  "queryTimeout": 300
}

Respuesta de muestra

Execute simple DAX query

Solicitud de ejemplo

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
}

Respuesta de muestra

Definiciones

DatasetExecuteDaxQueriesRequest

Solicitud para ejecutar consultas en un conjunto de datos

Nombre Tipo Description
applicationContext

string

Estructura JSON que contiene información adicional sobre una operación.

culture

string

Código de referencia cultural que controla el formato de consulta específico de la configuración regional, como en-US. Para obtener más información sobre los códigos de referencia cultural admitidos, vea Idiomas y países o regiones admitidos para Power BI.

customData

string

Datos personalizados para su uso en RLS dinámicos. Por ejemplo, North America la función del CUSTOMDATA() modelo puede hacer referencia a esta.

effectiveUsername

string

Nombre de usuario efectivo para la consulta.

memoryLimit

integer (int64)

Límite de memoria (en KB) para la consulta.

query

string

Texto de consulta.

queryTimeout

integer

Tiempo de espera de consulta en segundos.

resultSetRowCountLimit

integer

Número máximo de filas que se van a devolver. El valor predeterminado es 1000 000 filas.

roles

string[]

Roles asignados al usuario.

schemaOnly

boolean

Si la consulta debe devolver solo el esquema.