Power Query plegamiento de consultasPower Query query folding

En este artículo se dirige a los modeladores de datos que desarrollan modelos en Power Pivot o Power BI Desktop.This article targets data modelers developing models in Power Pivot or Power BI Desktop. Describe qué es Power Query plegamiento de consultas y por qué es importante en los diseños del modelo de datos.It describes what Power Query query folding is, and why it is important in your data model designs. También se describen los orígenes de datos y las transformaciones que pueden lograr el plegamiento de las consultas y cómo determinar si se pueden doblar las consultas de Power Query, ya sea total o parcialmente.It also describes the data sources and transformations that can achieve query folding, and how to determine that your Power Query queries can be folded—whether fully or partially.

El plegamiento de consultas es la capacidad para que una consulta de Power Query genere una instrucción de consulta única para recuperar y transformar los datos de origen.Query folding is the ability for a Power Query query to generate a single query statement to retrieve and transform source data. El motor de mashup Power Query se esfuerza en lograr el plegamiento de consultas siempre que sea posible por motivos de eficacia.The Power Query mashup engine strives to achieve query folding whenever possible for reasons of efficiency.

El plegado de consultas es un tema importante para el modelado de datos por varios motivos:Query folding is an important topic for data modeling for several reasons:

  • Importar tablas de modelo: La actualización de datos se realizará de forma eficaz para las tablas de modelo de importación (Power Pivot o Power BI Desktop), en términos de uso de recursos y duración de la actualización.Import model tables: Data refresh will take place efficiently for Import model tables (Power Pivot or Power BI Desktop), in terms of resource utilization and refresh duration.
  • Tablas de modo de almacenamiento dual y DirectQuery: Cada DirectQuery y la tabla de modo de almacenamiento dual (solo Power BI) deben basarse en una consulta Power Query que se pueda doblar.DirectQuery and Dual storage mode tables: Each DirectQuery and Dual storage mode table (Power BI only) must be based on a Power Query query that can be folded.
  • Actualización incremental: La actualización incremental de datos (solo Power BI) será eficaz, en términos de uso de los recursos y de la duración de la actualización.Incremental refresh: Incremental data refresh (Power BI only) will be efficient, in terms of resource utilization and refresh duration. De hecho, la Power BI ventana de configuración de actualización incremental le notificará una advertencia en caso de que se determine que no se puede lograr el plegamiento de consultas de la tabla.In fact, the Power BI Incremental Refresh configuration window will notify you of a warning should it determine that query folding for the table cannot be achieved. Si no se logra, se pierde el objetivo de la actualización incremental.If it cannot be achieved, the objective of incremental refresh is defeated. A continuación, el motor de mashup tendría que recuperar todas las filas de origen y, después, aplicar filtros para determinar los cambios incrementales.The mashup engine would then be required to retrieve all source rows, and then apply filters to determine incremental changes.

El plegado de consultas se puede realizar para una consulta de Power Query completa o para un subconjunto de sus pasos.Query folding may occur for an entire Power Query query, or for a subset of its steps. Cuando no se puede lograr el plegamiento de consultas, ya sea parcial o totalmente, el motor de mashup Power Query debe compensar mediante el procesamiento de las transformaciones de datos.When query folding cannot be achieved—either partially or fully—the Power Query mashup engine must compensate by processing data transformations itself. Este proceso puede implicar la recuperación de los resultados de la consulta de origen, que para grandes conjuntos de recursos es muy intensivo y lento.This process can involve retrieving source query results, which for large datasets is very resource intensive and slow.

Se recomienda que se asegure de lograr la eficacia de los diseños del modelo asegurándose de que el plegamiento de consultas se produce siempre que sea posible.We recommend that you strive to achieve efficiency in your model designs by ensuring query folding occurs whenever possible.

Orígenes que admiten el plegamientoSources that support folding

La mayoría de los orígenes de datos que tienen el concepto de lenguaje de consulta admiten el plegado de consultas.Most data sources that have the concept of a query language support query folding. Estos orígenes de datos pueden incluir bases de datos relacionales, fuentes de OData (incluidas las listas de SharePoint), Exchange y Active Directory.These data sources can include relational databases, OData feeds (including SharePoint lists), Exchange, and Active Directory. Sin embargo, los orígenes de datos como los archivos planos, blobs y web normalmente no lo hacen.However, data sources like flat files, blobs, and web typically do not.

Transformaciones que pueden lograr el plegamientoTransformations that can achieve folding

Las transformaciones de orígenes de datos relacionales que se pueden plegar son aquellas que se pueden escribir como una única instrucción SELECT.Relational data source transformations that can be query folded are those that can be written as a single SELECT statement. Una instrucción SELECT se puede construir con las cláusulas WHERE, GROUP BY y JOIN apropiadas.A SELECT statement can be constructed with appropriate WHERE, GROUP BY, and JOIN clauses. También puede contener expresiones de columna (cálculos) que usan funciones integradas comunes admitidas por las bases de datos SQL.It can also contain column expressions (calculations) that use common built-in functions supported by SQL databases.

Por lo general, en la lista siguiente se describen las transformaciones que se pueden doblar.Generally, the following list describes transformations that can be query folded.

  • Quitar columnas.Removing columns.

  • Cambiar el nombre de las columnas (seleccione los alias de columna).Renaming columns (SELECT column aliases).

  • Filtrar filas, con valores estáticos o parámetros de Power Query (predicados de la cláusula WHERE).Filtering rows, with static values or Power Query parameters (WHERE clause predicates).

  • Agrupar y resumir (cláusula GROUP BY).Grouping and summarizing (GROUP BY clause).

  • Expandir las columnas de registro (columnas de clave externa de origen) para obtener una combinación de dos tablas de origen (cláusula JOIN).Expanding record columns (source foreign key columns) to achieve a join of two source tables (JOIN clause).

  • Combinación no aproximada de consultas que pueden doblarse en función del mismo origen (cláusula JOIN).Non-fuzzy merging of fold-able queries based on the same source (JOIN clause).

  • Anexar consultas que pueden doblarse en función del mismo origen (operador UNION ALL).Appending fold-able queries based on the same source (UNION ALL operator).

  • Agregar columnas personalizadas con lógica simple (expresiones de columna de la instrucción SELECT).Adding custom columns with simple logic (SELECT column expressions). La lógica simple implica operaciones poco complicadas, posiblemente incluyendo el uso de funciones M que tienen funciones equivalentes en el origen de datos SQL, como matemáticos o funciones de manipulación de texto.Simple logic implies uncomplicated operations, possibly including the use of M functions that have equivalent functions in the SQL data source, like mathematic or text manipulation functions. Por ejemplo, las expresiones siguientes devuelven el componente del año del valor de la columna OrderDate (Fecha del pedido) (para devolver un valor numérico).For example, the following expressions returns the year component of the OrderDate column value (to return a numeric value).

    Date.Year([OrderDate])
    
  • Dinamizar y anular dinamización (operadores PIVOT y UnPivot).Pivoting and unpivoting (PIVOT and UNPIVOT operators).

Transformaciones que impiden doblarTransformations that prevent folding

Por lo general, en la lista siguiente se describen las transformaciones que impiden doblar las consultas.Generally, the following list describes transformations that prevent query folding. No pretende ser una lista exhaustiva.This is not intended to be an exhaustive list.

  • Combinación de consultas basadas en diferentes orígenes.Merging queries based on different sources.

  • Anexar consultas (Unión) basadas en diferentes orígenes.Appending (union-ing) queries based on different sources.

  • Agregar columnas personalizadas con lógica compleja.Adding custom columns with complex logic. La lógica compleja implica el uso de las funciones M que no tienen funciones equivalentes en el origen de datos.Complex logic implies the use of M functions that have no equivalent functions in the data source. Por ejemplo, las siguientes expresiones dan formato al valor de la columna OrderDate (Fecha del pedido) (para devolver un valor de texto).For example, the following expressions formats the OrderDate column value (to return a text value).

    Date.ToText([OrderDate], "yyyy")
    
  • Agregar columnas de índice.Adding index columns.

  • Cambiar un tipo de datos de columna.Changing a column data type.

Tenga en cuenta que cuando una consulta de Power Query abarca varios orígenes de datos, la incompatibilidad de los niveles de privacidad del origen de datos puede impedir que se realice el plegado de consultas.Note that when a Power Query query encompasses multiple data sources, incompatibility of data source privacy levels can prevent query folding from taking place. Para obtener más información, consulte el artículo sobre los niveles de privacidad Power BI Desktop .For more information, see the Power BI Desktop privacy levels article.

Determinar cuándo se puede plegar una consultaDetermine when a query can be folded

En la ventana del editor de Power Query, es posible determinar cuándo se puede plegar una consulta de Power Query.In the Power Query Editor window, it is possible to determine when a Power Query query can be folded. En el panel configuración de consulta , cuando se hace clic con el botón secundario en el último paso aplicado, si la opción Ver consulta nativa está habilitada (no atenuada), se puede doblar toda la consulta.In the Query Settings pane, when you right-click the last applied step, if the View Native Query option is enabled (not greyed out), then the entire query can be folded.

Ejemplo de cómo determinar que Power Query puede lograr el plegamiento de consultas en Power BI Desktop

Nota

La opción Ver consulta nativa solo está disponible para determinados conectores de generación de base de BD relacional.The View Native Query option is only available for certain relational DB/SQL generating connectors. Por ejemplo, no funciona para los conectores basados en OData, aunque se produzcan plegamientos en el back-end.It doesn't work for OData based connectors, for example, even though there is folding occurring on the backend. La característica de diagnóstico de consultas es la mejor manera de ver qué plegamiento se ha producido para los conectores que no son de SQL (aunque no se puede llamar explícitamente a los pasos que se detallan — , solo verá la dirección URL resultante que se generó).The Query Diagnostics feature is the best way to see what folding has occurred for non-SQL connectors (although the steps that fold aren't explicitly called out—you just see the resulting URL that was generated).

Para ver la consulta doblada, seleccione la opción Ver consulta nativa .To view the folded query, you select the View Native Query option. A continuación, se le presentará la consulta nativa que Power Query usará para los datos de origen.You are then be presented with the native query that Power Query will use to source data.

Ejemplo de una consulta nativa en Power BI Desktop

Si la opción Ver consulta nativa no está habilitada (atenuada), es una prueba de que no se pueden plegar todos los pasos de la consulta.If the View Native Query option is not enabled (greyed out), this is evidence that all query steps cannot be folded. Sin embargo, podría significar que se puede plegar un subconjunto de pasos.However, it could mean that a subset of steps can still be folded. Al trabajar hacia atrás desde el último paso, puede comprobar cada paso para ver si la opción Ver consulta nativa está habilitada.Working backwards from the last step, you can check each step to see if the View Native Query option is enabled. Si este es el caso, habrá aprendido en qué punto, en la secuencia de pasos, ya no se pudo conseguir el plegamiento de consultas.If this is the case, then you have learned where, in the sequence of steps, that query folding could no longer be achieved.

Ejemplo de cómo determinar que Power Query no puede lograr el plegamiento de consultas en Power BI Desktop

Pasos siguientesNext steps

Para obtener más información acerca del plegamiento de consultas y temas relacionados, consulte los siguientes recursos:For more information about Query Folding and related topics, check out the following resources: