Crear y utilizar funciones en Power Query

Power Query permite la creación de funciones propias y su utilización tal y como podemos hacer con las funciones incorporadas al propio entorno. Como en todo lenguaje de programación es muy conveniente la utilización de funciones pues permiten reutilizar el código e incrementar la consistencia del proyecto. Esta entrada tiene por objetivo realizar una breve y simple introducción a la creación y uso de funciones.

Las funciones en Power Query tienen una sintaxis propia de expresiones lambda donde se describe primero los parámetros a la inzquierda y las expresiones a la derecha:

Parámetros de entrada => Expresión de la función

Para seguir estos ejemplos debemos ir a «Obtener datos» y escoger «Consulta en blanco» y seleccionar «Editor avanzado».

Ejemplo de raíz cuadrada:

let
        RaizCuadrada = (x) => x * x
in 
        RaizCuadrada(5)

En el caso de requerir parámetros opcionales podemos hacerlo con «optional»:

let
        Div = (x, optional y) => if y is null or y = 0 then null else x / y
in        
        Div(5)

Si las funciones requieren de diferentes pasos, cada uno de ellos se situará en una línea distinta (por claridad) y cada línea se separará de la siguiente con una coma.

let
          funcion = (x, y, z) => 
                let multiplicacion = x * y,
                      division = y / z,
                      resultado =  multiplicacion + division
                in
                      resultado
in
          funcion(1, 2, 3)

Hasta ahora hemos creado diferentes consultas y en ellas hemos definido funciones, pero estas solo están disponibles dentro de esas consultas. Estas funciones también las podemos crear para que cualquier otra consulta dentro del proyecto la puedan utilizar.

De esta manera crearemos la función del primer ejemplo y la denominaremos «RaizCuadrada»:

(x) =>
     let
           calculo = x * x
     in 
           calculo

Como hemos visto hasta ahora utilizamos variables sin tipo, aunque sería más correcto definirlos, por ello la función anterior debería ser

(x as number) =>
     let
           calculo = x * x
     in 
           calculo
Llamando a una función

Desde otra consulta podemos llamar a la función RaizCuadrada. Tomamos un ejemplo típico. Abrimos un archivo de Excel, escogemos la hoja «Hoja1», ponemos la primera fila como encabezado de la tabla, ponemos el campo Valor como entero y añadimos una columna nueva denominada «Al cuadrado» fruto de aplicar la función «RaizCuadrada» a la columna llamada «Valor»:

let
     Origen = Excel.Workbook(File.Contents("c:\Datos\MiExcel.xlsx"), null, true),
     Hoja = Origen{[Item="Hoja1",Kind="Sheet"]}[Data],
     Encabezados = Table.PromoteHeaders(Hoja1, [PromoteAllScalars=true]),
     TipoCorrecto = Table.TransformColumnTypes(Encabezados,{{"Valor", Int64.Type}}),
     Cuadrado = Table.AddColumn(TipoCorrecto, "Al cuadrado", each RaizCuadrada([Valor])
in
     Cuadrado

Los pasos mostrados en el anterior ejemplo pueden realizarse en el editor gráfico de Power Query sin necesidad de abrir el «Editor avanzado». El resultado es el mismo, aunque hay dos pasos que no realizamos (encabezados y poner el tipo correcto) puesto que lo hace automáticamente Power Query y si luego entramos en el editor avanzado veremos que el nombre de los pasos son distintos..

La secuencia:

 

 

Un comentario sobre “Crear y utilizar funciones en Power Query

  1. Pingback: Reutilizar funciones en Power Query – Power BI y Business Intelligence

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *