diff --git a/data-explorer/kusto/query/dax-request-plugin.md b/data-explorer/kusto/query/dax-request-plugin.md index bbd40897fa..9d046312a5 100644 --- a/data-explorer/kusto/query/dax-request-plugin.md +++ b/data-explorer/kusto/query/dax-request-plugin.md @@ -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" --- @@ -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 @@ -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 @@ -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. @@ -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( @@ -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( @@ -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. | diff --git a/data-explorer/kusto/query/evaluate-operator.md b/data-explorer/kusto/query/evaluate-operator.md index 5257530201..21859ddf95 100644 --- a/data-explorer/kusto/query/evaluate-operator.md +++ b/data-explorer/kusto/query/evaluate-operator.md @@ -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 @@ -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)