Procesos ETL por defecto

Hemos visto algún ejemplo sencillo de consulta en el que definíamos varias variables y operábamos con ellas antes de devolver un resultado:

let
    a = 6,
    b = 3,
    c = a * b
in
    c

Sin embargo, los procesos ETL que genera Power BI cuando leemos una o más tablas de una fuente de datos no tienen exactamente este comportamiento. Por el contrario, su estructura es más bien del siguiente tipo:

let
    a = 6,
    b = a + 3,
    c = b * 2
in
    c

Es decir, en el primer paso inicializamos una variable y en los demás pasos partimos de la variable creada en el paso anterior, la modificamos de alguna manera y almacenamos el resultado en una nueva variable.

Más concretamente, en los procesos ETL que genera automáticamente Power BI, en la primera fórmula de paso se lee una tabla y se almacena en una variable y, en los demás pasos, se aplica una cierta transformación a la tabla anterior devolviendo otra tabla y almacenando el resultado en una nueva variable. Es decir, inicialmente leemos una tabla y la vamos transformando hasta generar la tabla definitiva resultante.

Por ejemplo, si abrimos el editor avanzado de la consulta Geography vemos el siguiente código (que no se muestra en su totalidad, lo que no es relevante en este caso):

Geography

En este código vemos (o podemos intuir) que:

  • En la primera fórmula de paso se lee un libro Excel y se almacena en la variable Origen
  • En la siguiente fórmula de paso se parte de la tabla Origen (en rojo), se le aplica cierta expresión M y el resultado -que también es una tabla- se almacena en la variable Geography_Sheet
  • En la tercera fórmula de paso se aplica cierta función a la tabla que hemos guardado en Geography_Sheet (la función Table.PromoteHeaders) y el resultado se almacena en la variable #"Encabezados promovidos"
  • En la cuarta y última fórmula de paso se aplica la función Table.TransformColumnTypes a la tabla generada en el paso anterior (la tabla #"Encabezados promovidos") y el resultado -que también es una tabla- se almacena en la variable #"Tipo cambiado"
  • Por último, en el bloque in devolvemos el contenido de la variable #"Tipo cambiado" que, como se ha comentado, es una tabla

Y es esta última tabla la que vemos en pantalla cuando seleccionamos la consulta Geography en el panel de consultas (al menos si tenemos el paso Tipo cambiado también seleccionado en el panel de Pasos aplicados, a la derecha):

Tabla Geography