Uso de parámetros en consulta SQL nativa

 In Destacado, Power Query

Parámetros en Instrucciones de SQL Nativas.

En muchas ocasiones, requerimos para la automatización de informes, de utilizar parámetros como filtro de manera que, cambiando el parámetro, cambiamos la información.

Esos filtros son muy sencillos de hacer en power query agregando un paso más en nuestro código M.

Sin embargo, cuando trabajamos en Direct Query, que no admite pasos de filtrado debemos utilizar el filtro directamente en la consulta SQL nativa, en la que el uso de parámetros es algo más complicado.

 

Aquí os muestro un ejemplo de consulta realizada en modo direct query en la que necesitaría sustituir el “1” del where=Empresa por el parámetro Empresa.

Si directamente en la instrucción SQL utilizo el parámetro where Empresa=(Emp) me devuelve el siguiente error:

 

Eso es porque no reconoce el parámetro como tal.

Si vemos el código en el editor podemos intuir por qué:

El valor del query es un texto en su conjunto, por lo que el parámetro debemos de pasarlo como una parte más de ese texto. ¿Cómo hacer eso? Muy simple: sustituimos (Emp) por

= “&Text.From(Emp) de manera que estamos con el & concatenando a la cadena de texto que cerramos tras el = y el parámetro.

Pero ojo, si esa modificación la hacemos directamente en el cuadro de diálogo de la instrucción SQL nos dará igualmente un error:

 

Sigue sin reconocernos el parámetro. Nos vamos al editor y nos encontramos que lo ha escrito, al hacerlo en el cuadro de diálogo de la siguiente manera:

 

 

Quitamos las comillas en las que nos ha envuelto el Text.From  y ya si que funciona:

 

Ya tenemos una consulta nativa de SQL parametrizada de manera que cambiando el parámetro (Emp) cambiamos la empresa de la que nos devuelve los datos en una tabla Direct Query que no admite el filtrado como un paso.

 

Recommended Posts

Leave a Comment

Al continuar utilizando nuestro sitio web, usted acepta el uso de cookies. Más información

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra POLÍTICA DE COOKIES, pinche el enlace para mayor información. Además puede consultar nuestro AVISO LEGAL y nuestra página de POLÍTICA DE PRIVACIDAD.

Cerrar