martes, 5 de enero de 2021

Power Query: Creando tablas en el editor de consultas

A estas alturas todos conocemos diferentes alternativas para importar datos a nuestro editor de Power Query y crear las consultas oportunas:
- desde un libro
- desde unan carpeta
- desde un pdf
- desde un csv o txt
- desde una web
- ...
- desde una tabla o rango de nuestro libro de trabajo

Pero a veces no nos interesa o simplemente no podemos recuperar la información de ningún sitio y optaremos por crear una tabla dentro del editor de Power Query.
En otras ocasiones se hace necesario componer tablas o listas dentro de nuestro código M para facilitar el proceso de nuestra consulta... como veremos más adelante.

Hay muchas maneras de crear una Tabla desde la nada y poder disponer de ella posteriormete...
Una primera sería emplear el botón de Espeficicar datos dentro del menú Inicio > grupo Nueva consulta del editor de consultas.
Power Query: Creando tablas en el editor de consultas
Esto nos abrirá una ventana donde o bien escribir nuestros datos o bien pegar de algún otro lugar
Power Query: Creando tablas en el editor de consultas

Al finalizar nos genera una línea de código algo rara y difícil de leer :D
Power Query: Creando tablas en el editor de consultas

A partir de este punto podremos continuar y hacer exactamente lo mismo que con cualquier otra tabla cargada de la forma 'habitual'...

Una segunda manera sería recurrir al lenguaje M y emplear alguna de las funciones dentro de Power Query que permiten generar tablas:
- Table.FromColumns()
- Table.FromValue()
- Table.FromRows()
- Record.ToTable()
y sobre todo
- Table.FromList()
- Table.FromRecords()
En concreto la más usada:
Table.FromRecords(records as list, optional columns as any, optional missingField as nullable number) as table
nos permite completar una tabla con las columnas y filas que necesitemos, incluos definir el tipo de dato para cada columna...
let
    Origen = Table.FromRecords({[País="ES",Importe=1],
                    [País="ES",Importe=20],
                    [País="PT",Importe=300],
                    [País="PT",Importe=4],
                    [País="FR",Importe=50]},
                    type table[País = Text.Type, Importe = Currency.Type])
in
    Origen

Power Query: Creando tablas en el editor de consultas
Con esta función podemos incluir tantas filas y columnas como necesitemos con una estructura muy clara, entre corchetes cada fila nueva, y en cada fila identificando 'Nombre columna' y 'valor'.

Una tercera alternativa (y última de la que hablaremos hoy, es emplear la función #table(...), con la cual podemos generar tablas de una manera algo más rápida que en los casos anteriores...
Por ejemplo, podríamos escribir:
let
    Origen =  #table(type table [País=text,Dato=number],{{"ES",2},{"PT",40},{"ES",100},{"ES",50},{"PT",20}})
in
    Origen

Power Query: Creando tablas en el editor de consultas
Con esta forma de trabajar podremos montar nuestra tabla con filas y columnas, e incluso poder definir el tipo de dato de esas columnas!!.
Una variante, sin necesidad de definir el tipo de dato (más sencilla):
let
    Origen =  #table({"País","Dato"},{{"ES",2},{"PT",40},{"ES",100},{"ES",50},{"PT",20}})
in
    Origen

Fíjate en las columnas y los tipos de datos generales asociados.
Power Query: Creando tablas en el editor de consultas

Una última variante de esta función M sería generar la tabla sin nombres de columnas, esto es, con nombres genéricos Column1, Column2, etc...
let
    Origen =  #table(2,{{"ES",2},{"PT",40},{"ES",100},{"ES",50},{"PT",20}})
in
    Origen

Con el primer argumento: 2 , indicamos el número de columnas a insertar.
Power Query: Creando tablas en el editor de consultas


Estas son mis tres formas de crear tablas de la nada... aunque insisto hay algunas más.

Pero no quiero cerrar este artículo sin mencionar un operador que me permite combinar tablas existentes, es el operador & (nuestro ampersand de siempre...el operador de unión).
Obviamente equivaldría a la función Table.Combine.
Veamos un ejemplo...
let
    Origen =   #table({"País","Budget 2020"}, {{"ES",2},{"DE",3}}) & #table({"País","Actual 2020"}, {{"ES",4},{"DE",5}})
in
    Origen

Power Query: Creando tablas en el editor de consultas

Igualmente podríamos haber escrito:
let
    Origen =    Table.Combine({#table({"País","Budget 2020"}, {{"ES",2},{"DE",3}}) , #table({"País","Actual 2020"}, {{"ES",4},{"DE",5}})})
in
    Origen

OJO con las llaves al inicio y final {} !!.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.