Compartir a través de


Plegado de consultas en consultas nativas

En Power Query, puede definir una consulta nativa y ejecutarla en el origen de datos. En el artículo Importación de datos de una base de datos mediante una consulta de base de datos nativa se explica cómo realizar este proceso con varios orígenes de datos. Sin embargo, mediante el proceso descrito en ese artículo, la consulta no aprovecha ningún plegado de consultas de los pasos de consulta posteriores.

En este artículo se muestra un método alternativo para crear consultas nativas en el origen de datos mediante la función Value.NativeQuery y mantener el mecanismo de plegado de consultas activo para los pasos posteriores de la consulta.

Nota:

Recomendamos leer la documentación sobre el plegado de consultas y los indicadores de plegado de consultas para comprender mejor los conceptos usados en este artículo.

Conectores de datos admitidos

El método descrito en las secciones siguientes se aplica a los siguientes conectores de datos:

Conexión al destino desde el origen de datos

Nota:

Para mostrar este proceso, en este artículo se usa el conector de SQL Server y la base de datos de ejemplo AdventureWorks2019. La experiencia puede variar de conector a conector, pero en este artículo se muestran los aspectos básicos sobre cómo habilitar las funcionalidades de plegado de consultas a través de consultas nativas para los conectores admitidos.

Al conectarse al origen de datos, es importante que se conecte al nodo o al nivel en el que desea ejecutar la consulta nativa. En el ejemplo de este artículo, ese nodo es el nivel de base de datos dentro del servidor.

Captura de pantalla del cuadro de diálogo de configuración de conexión para la conexión a la base de datos AdventureWorks2019 en una instancia local de SQL Server.

Después de definir la configuración de conexión y proporcionar las credenciales de la conexión, se abre el cuadro de diálogo de navegación del origen de datos. El cuadro de diálogo de navegación contiene todos los objetos disponibles a los que puede conectarse.

En esta lista, debe seleccionar el objeto donde se ejecuta la consulta nativa (también conocida como destino). En este ejemplo, ese objeto es el nivel de base de datos.

En la ventana del navegador de Power Query, seleccione y mantenga presionado (o haga clic con el botón derecho) en el nodo de base de datos en la ventana del navegador y seleccione la opción Transformar datos . Al seleccionar esta opción se crea una nueva consulta de la vista general de la base de datos, que es el destino que necesita para ejecutar la consulta nativa.

Captura de pantalla de elegir datos en los que el usuario hizo clic con el botón derecho en el nodo de base de datos en el navegador, con Transformar datos resaltados.

Una vez que la consulta llega al editor de Power Query, solo el paso Origen debe mostrarse en el panel Pasos aplicados. Este paso contiene una tabla con todos los objetos disponibles en la base de datos, de forma similar a cómo se mostraron en la ventana Navegador.

Captura de pantalla de la consulta con solo el paso de origen.

Uso de la función Value.NativeQuery

El objetivo de este proceso es ejecutar el código SQL siguiente y aplicar más transformaciones con Power Query que se pueden volver a plegar al origen.

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

El primer paso era definir el destino correcto, que en este caso es la base de datos donde se ejecuta el código SQL. Una vez que un paso tiene el destino correcto, puede seleccionar ese paso (en este caso, Origen en pasos aplicados) y, a continuación, seleccionar el botón fx de la barra de fórmulas para agregar un paso personalizado. En este ejemplo, reemplace la Source fórmula por la fórmula siguiente:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

El componente más importante de esta fórmula es el uso del registro opcional para el cuarto parámetro de la función que tiene el campo de registro EnableFolding establecido en true.

Captura de pantalla de la nueva fórmula de paso personalizada con el uso de la función Value.NativeQuery y la consulta SQL explícita.

Nota:

Puede obtener más información sobre la función Value.NativeQuery en el artículo de documentación oficial.

Después de escribir la fórmula, se muestra una advertencia que requiere que habilite las consultas nativas para que se ejecuten para su paso específico. Seleccione Continue (Continuar) para evaluar este paso.

Esta instrucción SQL produce una tabla con solo tres filas y dos columnas.

Captura de pantalla con los resultados de la consulta nativa evaluada en la base de datos de destino.

Plegado de consultas de prueba

Para probar el plegado de consultas de su consulta, intente aplicar un filtro a cualquiera de sus columnas y observe si el indicador de plegado de consultas en la sección de pasos aplicados muestra el paso como plegado. En este caso, puede filtrar la columna DepartmentID para tener valores que no son iguales a dos.

Captura de pantalla que muestra cómo filtrar la columna DepartmentID para que solo tenga los valores que no son iguales a dos.

Después de agregar este filtro, puede comprobar que los indicadores de plegado de consultas siguen mostrando el plegado de consultas que se produce en este nuevo paso.

Paso de filtro que se muestra como plegado al origen de datos en la sección pasos aplicados.

Para validar aún más qué consulta se envía al origen de datos, puede seleccionar y mantener presionada (o hacer clic con el botón derecho) en el paso Filas filtradas y seleccionar la opción Ver plan de consulta para comprobar el plan de consulta de ese paso.

En la vista del plan de consulta, puede ver un nodo con el nombre Value.NativeQuery que tiene un hipervínculo Ver detalles. Puede seleccionar este hipervínculo para ver la consulta exacta que se envía a la base de datos de SQL Server.

La consulta nativa se envuelve en torno a otra instrucción SELECT para crear una subconsulta del original. Power Query hace lo mejor para crear la consulta más óptima dadas las transformaciones usadas y la consulta nativa proporcionada.

Captura de pantalla del plan de consulta del paso Filas filtradas.

Sugerencia

En escenarios en los que se producen errores porque no era posible el plegado de consultas, se recomienda intentar validar los pasos como una subconsulta de la consulta nativa original para comprobar si puede haber conflictos de sintaxis o contexto.