Datasets - Execute Dax Queries In Group
Ejecuta consultas de expresiones de análisis de datos (DAX) en el conjunto de datos proporcionado. El conjunto de datos debe residir en el área de trabajo especificada. 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=trueen metadatos de esquema. Contiene columnas:ErrorCodecampos de ubicación de origen ,ErrorMessageErrorDescription, y . Los metadatos del esquema también incluyenFaultCode(código de error hexadecimal) yFaultString(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/groups/{groupId}/datasets/{datasetId}/executeDaxQueries
Parámetros de identificador URI
| Nombre | En | Requerido | Tipo | Description |
|---|---|---|---|---|
|
dataset
|
path | True |
string (uuid) |
Identificador del conjunto de datos |
|
group
|
path | True |
string (uuid) |
Identificador del área de trabajo |
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 |
|
| customData |
string |
Datos personalizados para su uso en RLS dinámicos. Por ejemplo, |
|
| 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/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"
}
Respuesta de muestra
Execute query with custom data
Solicitud de ejemplo
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"
}
Respuesta de muestra
Execute query with effective username
Solicitud de ejemplo
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": "[email protected]",
"roles": [
"SalesRole"
],
"queryTimeout": 300
}
Respuesta de muestra
Execute simple DAX query
Solicitud de ejemplo
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
}
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 |
| customData |
string |
Datos personalizados para su uso en RLS dinámicos. Por ejemplo, |
| 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. |