Calendario de festivos nacionales en 5 minutos

Workspace desk with keyboard office working stuff and wooden elements with the letters collected in the word
Crear el calendario de festivos nacionales para todos los años de historia de nuestros datos, y para cada país en el que nuestra organización tiene presencia es un auténtico dolor de cabeza… no por su complejidad, sino por su manualidad y lo monotono que resulta ser

Crear el calendario de festivos nacionales para todos los años de historia de nuestros datos, y para cada país en el que nuestra organización tiene presencia es un auténtico dolor de cabeza… no por su complejidad, sino por su manualidad y lo monótono que resulta ser 🕠

Por lo que aquí te quiero enseñar la manera más fácil, rápida y flexible de hacerla.

Para esto vamos a utilizar una API gratuita que se llama calendarific. Está API nos genera el calendario de festivos nacionales de muchos países con solo pasar unos parámetros en su URL.

Los parámetros son:

  1. Llamado a a la API:
    https://calendarific.com/api/v2/holidays
  2. API key. Esta nos la genera al crear nuestra cuenta (free), y se adiciona a la URL así:
    ?&api_key=MiApiKey
  3. Código ISO de nuestro país. Lo adherimos así:
    &country=CO

Revisa antes este enlace 👇 para ver si tu país también esta soportado

https://calendarific.com/supported-countries

  1. Y por último, el año que queremos consultar, así:
    &year=2020

Limitaciones versión free

– Solo podremos extraer información de un año y un país por consulta
– El resultado viene en idioma ingles
– Límite de 1.000 peticiones

Al final tendremos una URL como la que sigue

Composición de la petición a la API

Ahora vamos manos a la obra en Power BI.

Lo primero que debemos hacer es crear tres parámetros, uno para pasar el API key, otro para el país y el último para el año; todos ellos con tipo de dato texto.

Estos parámetros servirán para particionar nuestra URL en las partes que expliqué antes. Igualmente serán útiles cuando vayamos a dinamizar nuestras consultas a la API y extraer festivos más de un año calendario para más de un país sin mayor esfuerzo.

Ahora vamos a crear nuestra tabla que servirá de ejemplo para la función que utilizaremos en producción. Este paso es muy sencillo, solo daremos clic en obtener orígenes de datos desde la web, e iremos a la composición avanzada de la URL configurándola como se muestra a continuación.

Creación de petición de con uso de parámetros para creación de calendario con festivos

Luego de esto damos clic al botón de “OK” para que Power Query se conecte a la API y extraiga sus datos. Una vez esto suceda, debemos navegar entre la respuesta hasta obtener el resultado final que debe ser similar al que muestro a continuación:

Vista de la respuesta de la API en Power BI

Si no sabes navegarlo, no te preocupes, simplemente copia el siguiente código M y reemplázalo por el de tu tabla actual, este te dará el resultado final sin problemas siempre que los nombres de los parámetros coincidan con los que yo he colocado (si quieres verlos da clic aquí). También puedes ver el vídeo relacionado a este post, allí te muestro como hacerlo paso a paso.


Hola, quiero que sepas que este post está relacionado al siguiente vídeo en Youtube 👉


Objetos creados en el reporte

En este momento debemos tener creados tres parámetros y una tabla. Demos clic derecho sobre la tabla y luego clic en “Create function…”, llamémosla “getHolidays” y aprovechemos también a renombrar nuestra tabla a “Holidays”.

Ahora ya tenemos todo preparado para la creación de una tabla de calendario de festivos con la totalidad de años que necesito y de cada país que requiera. Para este ejemplo traeré los correspondientes a Colombia entre los años 2010 y 2013, por ello he creado la siguiente tabla:

Tipos de datos de cada columna

En country tengo los países que consultaré, y en la siguiente columna, los años de esos países puntualmente. Nótese que he creado la columna de año en tipo texto dado que el parámetro esta creado con este mismo tipo de datos.

Adicionar columnas en Power BI

Finalmente, solo queda ir a la pestaña de “Add Column” y seleccionar la opción de invocar una función personalizada.

Luego especificaremos los valores que recibirán los parámetros de la función, dado que ya tenemos esos valores en las columnas de la tabla, debemos especificarlos, el único que he dejado manual es el API Key ya que no es variable.

Preparación de la petición compuesta

Resultado a esta acción obtendremos una nueva columna llamada “Holidays” que contendrá en si los resultados de la consulta a la API. Solo queda expandirla y obtendremos todos los días del calendario que son festivos que quisimos consultar.

Navegación y resultado de la petición compuesta