Cómo usar funciones personalizadas en Power Query? (con ejemplo)
Aug 01, 2022Tutorial por Javier Gómez
¿Quieres saber de qué tratan las funciones personalizadas en Power Query?
En este tutorial verás cómo funcionan y aprenderás varios tips, todo usando 1 ejemplo real.
Puedes seguir el paso a paso en formato de video o como tutorial escrito.
Video Tutorial
Si lo prefieres como artículo escrito, solo sigue leyendo.
Introducción
Antes de entrar de lleno, este caso lo vimos originalmente en nuestra dinámica de Power BI Studio. En ese momento, resolvimos el reto con otra metodología. Pero ahora, en este tutorial lo resolveremos con funciones personalizadas.
Este tema de funciones personalizadas es algo complejo si no sabes mucho sobre Power Query. Si quieres dominar Power Query, en esta dinámica lo estoy enseñando a fondo.
Ejemplo anterior
En el ejemplo anterior tomamos unas tablas de la web con cambios de divisas desde Dólares Americanos a Pesos Colombianos, día por día. En la URL puedes cambiar el año, por ejemplo, el 2016 cambiarlo al 2017. Así podemos ver el tipo de cambio para cada día.
El tipo de cambio lo vemos, día por día, en la tabla de la página.
Estos datos, a pesar que no estén tan bien estructurados, en Power Query los vamos a revisar fácilmente. Lo que hicimos en el video anterior, tal cual funcionó. Nos traíamos cada tabla, de cada año, por cada página web o cada enlace.
Simplemente le íbamos cambiando el año y después llegamos hasta el último año y anexamos todas en una nueva tabla.
El tema aquí es que todas las consultas anteriores se quedan, que sí puedes ocultar, pero ahí están. Pero el método que realizaremos a continuación no requiere de que estemos creando una consulta para cada año.
Usando funciones personalizadas en Power Query
Primero voy a copiar el enlace del ejemplo ( https://dolar.wilkinsonpc.com.co/dolar-historico/dolar-historico-2016.html ).
En Power BI me voy al Power Query. Luego a obtener datos desde un nuevo origen, que sería la web.
En la ventana que aparece, pegas el enlace y aceptas.
Para este ejemplo me voy a ir directo a la solución, pero si quieres ver a fondo todo lo que puedes hacer con este conector, ve el mismo video de Power BI Studio.
Nos vamos directo a aquí abajo, donde dice "Agregar tabla mediante ejemplos".
Aquí estamos viendo la página web tal cual como la veíamos y quiero traerme por medio de ejemplos que me tome cada uno de los días y el monto. Así como cuando agregas una columna desde ejemplos, también nos podemos traer columnas desde sitios web. Entonces le pongo aquí "1 de enero".
Si te fijaste, puedes traerte solamente la fecha o, en este caso, yo me traje la fecha y el valor.
Sigues escribiendo más ejemplos para que lo copie acá en Power Query, como "2 de enero 3 mil 149". Luego el tercer valor. De hecho, aquí parece que ya me lo tomó, solo hay que revisar rápidamente. Por ejemplo, 5 de enero que es 3 mil 213, es correcto. Ahora para el 10 de enero que es 3 mil 268.
Parece ser que ya está tomando el valor correcto para todos los meses y todos los días. Aceptas el ejemplo.
Luego voy a traerme esta tabla personalizada y Acepto.
Aquí puede pedirte que pongas credenciales y demás, simplemente acepta. Ahora voy a dividir la columna para que tengamos en una sola columna la fecha y en otra el monto. Asegúrate de tener la columna seleccionada. Te vas a Transformar, Dividir columna, Por delimitador.
En este caso el delimitador va a ser Personalizado y voy a poner que sea este signo de moneda ($) y un espacio que hay entre el signo y el monto. Acepto.
Así nos separa los valores en dos columnas. Todo esto sería como tal el tipo de cambio o la divisa para el año 2016.
Voy a cambiarle el nombre a esta consulta porque aquí vamos a crear esta función personalizada.
Ahora me voy al Editor Avanzado.
Tip: Puedes presionar CTRL + SHIFT + "+" en tu teclado para hacer más grande el Editor Avanzado.
Ahora aquí es donde sucede la magia (al final de los pasos te pondré la imagen de cómo va a quedar el código).
- Te vas a la primera posición del texto en el Editor Avanzado. Pones una variable llamada "Año" entre paréntesis.
- Para decirle que es una función personalizada, le tenemos que poner el símbolo de igual (=) y el símbolo de mayor (>).
- Vamos a definir la variable como texto agregando un "as text". Si fuera un número, por ejemplo, le pondríamos "as number". Pero en este caso sí lo requerimos como texto porque lo vamos a usar como texto más adelante.
- Agregamos comillas donde vamos a utilizar nuestra variable. Usamos el símbolo "&" dos veces y ponemos el nombre de la variable entre esos símbolos. Aquí Power Query debe de detectar tu variable.
- Le das clic en Listo.
Aquí ya te habrá creado la función personalizada.
Ahora, voy a crear una nueva consulta con clic derecho y sería una consulta en blanco.
Aquí quiero hacer un listado de cada año que quiero que me tome de ese sitio. Para hacerlo, voy a poner aquí en la barra de fórmulas un igual (=), luego llave (o corchete) de apertura y de cierre.
Dentro de los corchetes, vamos a poner un listado de número, escribiendo el número inicial, luego punto y punto "..", y el número final del listado. Por ejemplo: {1..100}.
Estos listados de hecho también pueden ser con letras, por ejemplo, de la A a la Z.
Para nuestro ejemplo vamos a hacer un listado del 2016 hasta el año presente. Aquí simplemente para practicar con esto voy a poner hasta 2022.
Ahora, aquí a la derecha vamos a poner que se nos genere la tabla de tipo de cambio para cada uno de estos años.
Primero convertimos nuestro listado como tabla, y aceptamos.
Cambiamos el tipo de la columna a tipo texto.
Aquí nos vamos a "Agregar columna", "Invocar función personalizada", "Transformaciones", seleccionamos nuestra, que en el ejemplo es "Columna 1", y aceptamos.
Ahora ya tendremos la tabla de tipo de cambio para cada año, desde el 2016 hasta el 2022, en este caso. Esto es una vista previa, no se va a ver completo, pero nos está trayendo los valores.
Ahora tenemos que expandir los valores de cada tabla. No usaremos el nombre del prefijo y aceptamos,
Listo, ya tenemos el año, la fecha diaria y el monto.
Ya básicamente solo tenemos que hacer un par de transformaciones más. Por ejemplo, yo lo que haré para este caso en específico es combinar el día con el año. Simplemente selecciono las dos columnas (el orden en la que las seleccionas importa).
Hago clic derecho y selecciono "Combinar columnas".
Le voy a poner como separador un espacio, y acepto.
Podemos ajustar la columna 1 a "Fecha", con tipo de dato de Fecha, y la columna 2 a "Tipo Cambio", con tipo de dato de número decimal.
Ahora solo voy a cambiar el nombre a esta consulta como "Tipo de cambio".
Listo, ahora ya tenemos los cambios que necesitamos, con los datos de todos los años en una misma tabla. ¿Qué te parece si los visualizamos rápidamente?
Cerramos y aplicamos los cambios del Power Query.
Se cargan los datos. Me voy a las tablas y aquí puedo ver que tenemos todas las fechas y los valores de tipo de cambio.
Voy a poner un gráfico de línea. Pongo la fecha en el eje X, pero me aseguro que esté como fecha, no como jerarquía, para que se vea cada fecha, cada día.
En el eje Y, voy a poner Tipo de cambio y aquí ya podemos ver, por día, cómo es que se comporta la divisa, que en este caso es la conversión de Dólares Americanos a Pesos Colombianos.
De hecho, aquí estamos viendo cómo va aumentando demasiado, es el pico histórico más alto hasta este día que yo estoy analizando...
Con todo esto solo quiero dejarte la enseñanza cómo trabajar con funciones personalizadas. Este método en específico que vimos puede serte muy útil para obtener datos de sitios públicos, financieros, de acciones y demás, podemos tomarlos sin estar creando una nueva consulta. Especialmente si lo que varía es el año.
Si quieres aprender más sobre Power Query ve la nueva dinámica que estoy usando para que domines Power Query y Power BI en general.
Espero que este tema de funciones personalizadas te dé nuevas ideas de lo que puedes lograr con el Power Query y, específicamente, las funciones personalizadas. Ahora puedes ver cómo insertar un reporte de Power BI en tus presentaciones de PowerPoint y cuál es la importancia del Business Intelligence.
Asegúrate de suscribirte a nuestro canal de YouTube para dominar Power BI. También puedes encontrarnos en Instagram, Linkedin y Facebook.
Te agradezco por ser parte de nuestro movimiento y estar en sintonía en todas nuestras redes sociales. Te veo más adelante en otro tutorial.
Curso Gratis:
Diseño de dashboards con Power BI
Accede inmediatamente al curso de "Introducción a dashboards de Power BI"
Al registrarte aceptas los términos y condiciones de datdata