martes, 24 de noviembre de 2015

Power Query: Una función personalizada con dos argumentos.

Continuando la entrada anterior, sobre el mismo ejemplo, realizaremos una modificación a nuestra consulta-función de Power Query, para indicar un segundo argumento de la función personalizada, de tal forma que podamos informar de cuál es el separador...

En realidad habría que comenzar desde cero, ya que se trata de una nueva función.. pero siempre podemos copiar y pegar desde el Editor avanzado.
Por tanto, en la ventana del Editor de consultas, iremos al menú Inicio > grupo Consultas > botón Editor avanzado y escribiremos lo siguiente:
(Origen, Separador)=> let
    #"Líneas del texto" = Lines.FromText(Origen),
    #"Tabla de lista" = Table.FromList(#"Líneas del texto", Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Dividir columna por delimitador" = Table.SplitColumn(#"Tabla de lista","Column1",Splitter.SplitTextByEachDelimiter({(Separador)}, null, false),{"Column1.1", "Column1.2"}),
    #"Tipo cambiado" = Table.TransformColumnTypes(#"Dividir columna por delimitador",{{"Column1.1", type text}, {"Column1.2", type text}})
in
    #"Tipo cambiado"


En este caso nos fijaremos en la primera línea del código, donde hemos insertado entre paréntesis las dos variables:
Origen: para indicar la columna a tratar
Separador: para indicar qué separador queremos tener en cuenta.

Además en la fila del código
#"Dividir columna por delimitador" = Table.SplitColumn(#"Tabla de Lista","Column1",Splitter.SplitTextByEachDelimiter({(Separador)}, null, false),{"Column1.1", "Column1.2"}),

al emplear la función Splitter.SplitTextByEachDelimiter hemos añadido nuestro parámetro 'Separador'.


El resultado es el esperado para cualquier tipo de Separador, como vemos en la imagen siguiente, donde en la Tabla original el separador es el asterisco (informado así con nuestra función al realizar la carga de la Tabla):

Power Query: Una función personalizada con dos argumentos.

No hay comentarios:

Publicar un comentario

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