Skip to content
21 changes: 12 additions & 9 deletions data-explorer/kusto/query/dax-request-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: dax_request plugin
description: Learn how to use the dax_request plugin to send a DAX query to a DAX server network endpoint.
ms.reviewer: gabil
ms.topic: reference
ms.date: 10/11/2026
ms.date: 10/18/2026
monikerRange: "microsoft-fabric || azure-data-explorer"
---

Expand All @@ -17,8 +17,8 @@ The plugin uses the Power BI [Execute DAX Queries API](/power-bi/developer/execu

* The semantic model must be in a workspace assigned to a Fabric or Power BI Premium capacity.
* The **Dataset Execute Queries REST API**, **Allow XMLA endpoints and Analyze in Excel with on-premises semantic models** tenant settings must be enabled.
* You must have [Build permission](/power-bi/connect-data/service-datasets-permissions) on the semantic model.
* The cluster callout policy must allow `dax` callouts to `api.powerbi.com`. To change this policy, you need `AllDatabasesAdmin` or `Ops` permissions.
* You must have [Build and Read permissions](/power-bi/connect-data/service-datasets-permissions) on the semantic model.
* The [cluster callout policy](#configure-and-callout-policy) must allow `dax` callouts to `api.powerbi.com`. To change this policy, you need `AllDatabasesAdmin` or `Ops` permissions.

## Syntax

Expand All @@ -32,10 +32,10 @@ Learn more about syntax conventions in the [Syntax conventions for reference doc
|---|---|---|---|
| ConnectionString | `string` | Yes | The semantic model URL followed by `;Impersonate`. For the supported URL formats, see [Connection string](#connection-string). |
| DaxQuery | `string` | Yes | The DAX query to execute against the semantic model. |
| OutputSchema | `string` | - | The names and types of the expected output columns. Use the syntax `(`*ColumnName*`:`*ColumnType* [`,` ...]`)`. |
| OutputSchema | - | - | The names and types of the expected output columns. Use the syntax `(`*ColumnName*`:`*ColumnType* [`,` ...]`)`. |

> ![NOTE]
> Specifying *OutputSchema* is recommended because it enables scenarios such as distributed queries and allows query optimizations. The plugin returns an error if the runtime schema doesn't match *OutputSchema*.
> Specifying *OutputSchema* is recommended. It lets Kusto determine the plugin’s output columns and types without sending the DAX query to Power BI during schema discovery. The Power BI request is instead deferred to query execution, alongside the rest of the KQL query. The plugin returns an error if the returned schema is incompatible with the declared schema.

## Connection string

Expand All @@ -51,7 +51,7 @@ The `myorg` path segment is literal. `*WorkspaceId*` and `*SemanticModelId*` mus

## Authentication and authorization

The plugin uses Microsoft Entra on-behalf-of authentication. The engine obtains a token for the requesting user and sends the DAX query in that user's security context. The user must have Build permission on the semantic model. Any row-level security or object-level security configured for the user applies to the query.
The plugin uses Microsoft Entra on-behalf-of authentication. The engine obtains a token for the requesting user and sends the DAX query in that user's security context. The user must have [Build and Read permissions](/power-bi/connect-data/service-datasets-permissions) on the semantic model. Any row-level security or object-level security configured for the user applies to the query.

Use `;Impersonate` as the authentication directive. Managed identity, service principal, and application key authentication aren't supported.

Expand Down Expand Up @@ -84,11 +84,14 @@ The plugin returns the DAX query result as a KQL table. It preserves supported A

Power BI returns bracketed column names, such as `[Category]`. In KQL, reference these names with the `['...']` syntax, such as `['[Category]']`.

> [!WARNING]
> The plugin uses the default row limit of the [Power BI Execute DAX Queries API](/rest/api/power-bi/datasets/execute-dax-queries#request-body) (`resultSetRowCountLimit`). If the DAX query produces more rows than this limit the returned table can be incomplete without an error. Filter or aggregate data in the DAX query to keep the result within the limit. Filtering or aggregating afterward in KQL does not recover omitted rows.

## Examples

### Return all rows from a table

The following example returns all rows from the `Sales` table:
The following example queries the `Sales` table. The returned result is subject to the API’s default row limit.

```kusto
evaluate dax_request(
Expand All @@ -113,7 +116,7 @@ evaluate dax_request(

### Specify an output schema

The following example declares an output schema to use the distributed execution path. The declared schema must match the live result schema.
The following example declares the expected output schema so that Kusto can determine the schema without contacting Power BI during query analysis. The declared schema must match the live result schema.

```kusto
evaluate dax_request(
Expand All @@ -128,5 +131,5 @@ evaluate dax_request(
|---|---|
| Invalid connection string | Confirm that the URL uses a supported format, the workspace and semantic model IDs are valid GUIDs, and the string ends with `;Impersonate`. |
| Callout isn't permitted | Configure the cluster callout policy to allow `dax` calls to `api.powerbi.com`. |
| Authentication or authorization error | Confirm that the required tenant settings are enabled and that the requesting user has Build permission on the semantic model. |
| Authentication or authorization error | Confirm that the required tenant settings are enabled and that the requesting user has Build and Read permission on the semantic model. |
| HTTP request error | Ensure Power BI service availability, endpoint accessibility, and the semantic model URL. |
3 changes: 2 additions & 1 deletion data-explorer/kusto/query/evaluate-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: evaluate plugin operator
description: Learn how to use the evaluate plugin operator to invoke plugins.
ms.reviewer: alexans
ms.topic: reference
ms.date: 08/11/2024
ms.date: 10/14/2026
---
# evaluate plugin operator

Expand Down Expand Up @@ -53,6 +53,7 @@ The following plugins are supported:
* [bag-unpack plugin](bag-unpack-plugin.md)
* [basket plugin](basket-plugin.md)
* [cosmosdb-sql-request plugin](cosmosdb-plugin.md)
* [dax_request plugin](dax-request-plugin.md)
* [dcount-intersect plugin](dcount-intersect-plugin.md)
* [diffpatterns plugin](diffpatterns-plugin.md)
* [diffpatterns-text plugin](diffpatterns-text-plugin.md)
Expand Down
Loading