martes, 3 de enero de 2023

Power Query: Alternativas a SelectColumns

La función M que nos permite eleccionar columnas de una tabla, ordenar dichas columnas y gestionar su existencia o no (Table.SelectColumns) es sin duda una función impresionante, por su versatilidad, y sobre todo fácil de emplear.
Puedes leer un ejemplo de la función...

Hoy veremos, sin embargo, una alternativa interesante trabajando sobre los códigos de las columnas empleando los 'corchetes' para ello. Hablamos de la expresión de acceso a campos, o en su caso de la proyección de campos.
Alternativa que nos permitirá seleccionar u ordenar columnas!!


Para explicar la casuística cargaremos una tabla con cuatro columnas: País, Región, Ciudad, Habitantes
Power Query: Alternativas a SelectColumns

Todos conocemos la sintaxis con corchetes simples para referirnos a una columna concreta, y que nos retorna los elementos de la columna en forma de Lista.
Por ejemplo, si escribimos:
let
    Origen = Excel.CurrentWorkbook(){[Name="TblDATOS"]}[Content],
    //elementos de la columna REgión en forma de lista
    ListaColumna=Origen[Región]
in
    ListaColumna

Power Query: Alternativas a SelectColumns


Nada novedoso.. pero hay un par de curiosidades que quizás desconozcas.

Un primer aspecto interesante es que si doblamos los corchetes lo que obtenemos no es una lista sino una tabla con esa columna indicada...
let
    Origen = Excel.CurrentWorkbook(){[Name="TblDATOS"]}[Content],
    //elementos de la columna REgión en forma de tabla
    //OJO con el doble corchete
    TablaColumna=Origen[[Región]]
in
    TablaColumna

Power Query: Alternativas a SelectColumns


Este resultado obtenido da pie a otro aspecto y uso relevante de esta forma de trabajar, ya que nos permite recuperar tantas columnas como necesitemos y en el orden que requiramos!! Por ejemplo para recuperar una nueva tabla con las columnas: Ciudad y Habitantes.
let
    Origen = Excel.CurrentWorkbook(){[Name="TblDATOS"]}[Content],
    //elementos de la columna REgión en forma de tabla
    //OJO con el doble corchete
    TablaColumna=Origen[[Ciudad],[Habitantes]]
in
    TablaColumna

Power Query: Alternativas a SelectColumns

No está mal... pero hay más, si necesitaras optimizar tu selección de columnas, aún desconociendo su existencia, podrías aplicar el operador de opcionalidad (?). Por ejemplo, reclamamos una columna que puede o no existir ('Provincia'):
let
    Origen = Excel.CurrentWorkbook(){[Name="TblDATOS"]}[Content],
    //elementos de la columna REgión en forma de tabla
    //OJO con el doble corchete
    TablaColumna=Origen[[Ciudad],[Habitantes],[Provincia]]?
in
    TablaColumna

Power Query: Alternativas a SelectColumns

Notemos que al no existir dicha columna 'Provincia' nos retorna valor nulo (efecto del operador de opcionalidad).

Quizá ya te hayas fijado que el orden de aparición de las columnas en la tabla resultante es el que dispongamos.

Sin duda una alternativa a tener siempre en cuenta, ya que nos permite pasar de listas a tablas y viceversa de una manera muy simple (entre otras cosas) ;-)

No hay comentarios:

Publicar un comentario

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