Gonzalo Rementeria

01 – Como pasar parámetros a un Dataflow

 

Si estás viendo esta entrada, supongo que ya has descubierto las bondades que tienen los Dataflow (DF). Una herramienta realmente útil para transformar y mover miles de registros de un sitio a otro (si necesitamos mover millones seguramente habría otras ETLs mejores como Azure Data Factory).

Como digo estas flujos de datos resultan muy útiles para realizar cargas recurrentes o para las migraciones de un entorno de desarrollo a uno productivo. Pero tienen algunas pegas, como que a día de hoy no se puede detener su ejecución. Por lo que lo más recomendable sería tener varios DF pequeños en lugar de uno grande y orquestarlos todos con un Power Automate por ejemplo. Pero eso lo dejaré para otra entrada.

No obstante comentaba el hecho de tener varios DF porque es algo relevante para este ejemplo. Imaginemos que tenemos un excel con muchas pestañas, digamos 30. Y a partir de este excel generamos 30 DF. Hasta aqui todo correcto. Pero supongamos que a la semana siguiente han migrado el excel de sitio y tenemos que cambiar la ruta de origen en cada uno de esos 30 DF.

Eso supone que tenemos que realizar el mismo cambio 30 veces. Y entre tiempos de carga, copiar, pegar, etc. Puede llevar bastante tiempo, además de ser tedioso y nada recomendado. Pues como sabreis la mayoría reutilizar código es una buena práctica y duplicarlo una mala.

Lo ideal sería pasarle la ruta como un parámetro y solo tener que cambiar es ruta una única vez. Pero vaya, «no» se puede. O mejor dicho no puede de una manera intuitiva pero si ahondamos un poco más en este asunto, veremos que existe una forma. Usando variables de entorno.

Para ello lo primero que tendrémos que hacer será crear una variable de entorno y asignarle en valor que queramos. En mi caso la he llamado urlExcel, es de tipo texto y contiene la url del excel que usaré como origen de datos.

Lo siguiente que he hecho es editar mi DF y clickar en la opción de obtener datos para después elegir como origen una consulta Odata.

Para rellenar la consulta deberemos poner la url de la consulta api que nos devuelve dicha variable de entorno (un momento, de que puñetas me está hablando este tio). Que no cunda el pánico.

Las variables de entorno se guardan en una tabla de Dataverse, y por defecto, sin hacer nada, cuando creamos una tabla o un registro en una tabla de Dataverse, de manera automática e invisible al usuario se monta un sistema api para poder consultar/modificar dicho registro (toma ya, otra de las virtudes de Dataverse). Esto significa que al crear una variable de entorno, podremos obtenerla via API.

Pero un momento, si te estás preguntando como puedes saber la url que debes usar para obtener dicha variable. Existe mucha documentación en internet sobre como hacerlo. Pero otra forma facil de obtenerla es la siguiente. Creas un Power Automate super sencillo con estás 3 cajitas, lo ejecutas y extraes del resultado dicha url:

Para obtener facilmente lo que necesitamos, podemos seleccionar toda la salida (ctrl+a), copiarla(ctrl+c) y pegarla(ctrl+v) en un notePad para después buscar el nombre de nuestra variable(ctrl+f) (por si no se notaba, me gusta bastante usar atajos de teclado). De esta forma obtendremos rapidamente la consulta api.

En mi caso esta:

una vez la tengamos podemos usarla en nuestro DF, aunque antes para ver si funciona podeis copiarla en vuestro navegador y debería devolveros datos. Para simplificar este ejemplo yo le he añadido justo delante ?$select=value Pues solo me interesa obtener esa propiedad. Rellenamos la consulta con nuestro usuario y con esa ruta como muestro a continuación

y obtendremos una consulta como esta:

Y a partir de aqui simplemente jugaremos con las obtienes que ofrece power query para colocarla donde queramos. Por ejemplo yo he convertido la consulta en tabla.

Y luego usando la funcion Table.first he colocado donde me interesaba el valor de dicha variable. en este caso sustituyendo a la url que había puesto a fuego en otra consulta. Y como veremos funciona perfectamente.

Aqui os dejo la consulta Odata convertida a tabla

Por aqui la consulta a un excel online usando como parámetro la consulta anterior

Y como vemos funciona perfectamente y podemos pasarle parámetros externos a nuestros DF.

Espero que os haya sido de utilidad. Un saludo.