Skip to main content Skip to footer

Manejo de zonas horarias en Power BI / Power Query

¿Qué hora es en este momento para ti? Podríamos compartir la misma zona horaria, pero ese no suele ser el caso con las operaciones mundiales.

Si dijera, nos vemos mañana a las 8am. ¿Serán tus 8am? ¿O serán mis 8am?

Siento que debí haber publicado este blog hace mucho tiempo, pero es mejor tarde que nunca.

En Power BI, puedes tener columnas de fecha o fecha+hora una vez que se cargan en su Modelo de datos, pero antes de cargarlos (dentro de Power Query Editor) puedes tenerlos como zona horaria de fecha, que es un tipo de dato específico que solo contiene información de fecha y hora, pero también la zona horaria.

Hagamos un escenario rápido. Ken está en Canadá, Miguel está en Panamá; definamos un conjunto de citas específicas para ambas zonas horarias.

Tipo de datos de fecha y hora en Power BI / Power Query

Tengo estas fechas que Ken envió de manera específica para un conjunto de órdenes que entraron en nuestro sistema. Estoy tratando de alinear todas mis fechas en mi modelo para estar en mi zona horaria actual en Panamá, pero Ken me envió estas en su propia zona horaria:

¿Cómo transformo estos valores de datetimezone en mi zona horaria local?

La forma más fácil de transformar a la zona horaria local en Power BI / Power Query

La forma más fácil de lograr esto es ir a la pestaña Transform o a la pestaña Add Column e ir a Date & Time Group.

Una vez en este grupo, selecciona la opción para hora y verás en el menú desplegable una opción llamada local time.

Y el resultado de esa operación producirá algo como esto.

(ten en cuenta que utilicé la opción de la pestaña Add Column)

Notarás un aspecto importante sobre este enfoque desde la barra de fórmulas y es que usa la función DateTimeZone.ToLocal que solo requiere un valor con el tipo de datos datetimezone.

La advertencia aquí es que usa la hora local de la configuración regional de mi máquina, lo que significa que si tuviera que usar una máquina que utilizara diferentes configuraciones regionales, no daría el resultado correcto.

Esto plantea la pregunta; ¿Cómo le digo explícitamente a Power Query que siempre convierta el valor a una zona horaria específica?

Forma recomendada para convertir zonas horarias en Power BI / Power Query

Esto requiere que uses una función específica, pero es una función bastante simple llamada DateTimeZone.SwitchZone que, en comparación con DateTimeZone.ToLocal, solo agrega un segundo argumento donde puedes ingresar (como un número) la zona horaria correcta a la que deseas «cambiar» su valor original de zona horaria.

El resultado de esto se verá así:

Sugerencia general

Al crear un modelo de datos con Power BI, se recomienda que tus fechas estén en la misma zona horaria, de modo que no tengas que lidiar con múltiples líneas de tiempo que podrían resultar complicadas y al final no producirán los resultados intuitivos.

La mejor manera de lograr esto es hacer una evaluación completa de tus fuentes de datos y asegurarte de que todas tengan la misma zona horaria. Si este no es el caso y no puedes cambiarlos para que se encuentren en la misma zona horaria, entonces puedes «cambiar» la zona horaria una vez que llegues a la ventana de Power Query.

Una cosa SÚPER importante a tener en cuenta es que si planeas publicar esta consulta en el Servicio Power BI, el inquilino real podría estar en una zona horaria diferente a la que tu estás, por lo que se recomienda que utilices DateTimeZone.SwitchZone.

Una vez que tus datos lleguen al modelo de datos de Power BI, los datos de la zona horaria se eliminan por completo y lo que veras en la vista de datos es solo una fecha o una fecha y hora:

Por lo tanto, es extremadamente importante que te asegure de que todo funcione correctamente en Power Query, ya que esa es la única forma de saber si la zona horaria es correcta o no.

¿Qué sucede si mis datos no están configurados como datetimezone?

Este suele ser el caso con fuentes de datos simples. Estas fuentes de datos simples no proporcionan más información además de los datos como fecha o fecha+hora. ¿Qué puedes hacer en estos casos?

Lo primero que debes hacer es asegurarte de que estás tratando con al menos un tipo de datos de fecha y hora. Una vez que tengas tus valores como fecha y hora, puedes crear una nueva columna con la siguiente fórmula:

La fórmula que hace la magia es DateTime.AddZone que agrega una zona horaria a tu valor de fecha y hora. Pasa tu fecha y hora como tu primer argumento y establece la zona horaria como tu segundo argumento.

Una vez que establezcas tu valor como un tipo de datos datezonezone, puedes continuar y «cambiar» la zona horaria a cualquier otra zona horaria utilizando los métodos descritos anteriormente en este artículo

Conclusión

Tener la fecha y hora correctas es EXTREMADAMENTE importante.

¡Déjame saber lo que piensas acerca de estos métodos! ¿Tienes algún escenario que esté estrechamente relacionado con las zonas horarias pero que no esté cubierto en esta publicación? Déjamelo saber abajo en los comentarios.

Categorías:

6 Comentarios

Wilmer

Excelente información, muchas gracias por compartirla.

eduardo

gracias por la ayuda no encontré esta información por ningún lado me ayudaron mucho.

barbara

hola a mi me ha surgido el problema con la hora de la fecha de actualización, aun utilizando DateTimeZone.SwitchZone. Al publicar el reporte en el servicio de power bi y actualizar en el mismo o utilizar la actualización programada, la fecha de actualización es 3 horas mas a lo que me muestra el mismo reporte local, en servicio de power bi sale las 3:00pm y en el reporte local aparece las 12:00 pm. He utilizado el DateTimeZone.SwitchZone, con la zona horaria de mi pais pero aun así la hora sale incorrecta en la nube ..

Miguel Escobar

Hola Barbara!
Hice una prueba con un nuevo archivo utilizando mi zona horaria y el código:
= DateTimeZone.SwitchZone( DateTimeZone.LocalNow(), -5)

y me funciona correctamente. También lo intenté con otras zonas horarias y me funciona correctamente. ¿Tal vez sea necesario que refresques la hoja del reporte para ver los datos actualizados?

HECTOR YEZID BERMUDEZ RAMOS

Muchas gracias por todo el contenido publicado. Te quería pedir un favor, tengo un archivo en formato csv, el cual tiene un campo de fecha hora, requiero restarle 8 horas, para que quede con la fecha de mi País, el inconveniente que tengo es que lo máximo que me permite restar es por dias pero no por horas, estoy utilizando lo siguiente:

Fecha_actual = DATEADD(EURGBP[FECHA], -1,DAY)

Me puedes hacer el favor, de informarme como puedo restar horas, por ejemplo
si tengo la siguiente fecha 17/05/2021 1:35 y le resto 8 horas la nueva columna quedaría 16/05/2021 17:35

Agradezco tu valiosa información, de igual forma solicito información de cursos a mi correo personal.

Muchas gracias

YEZID

Miguel Escobar

Hola Yezid!
Creo que lo que estás buscando, de acuerdo al código que has compartido, es una fórmula DAX para poder lograrlo. El código que ves en este artículo es un código para Power Query que es otro componente dentro del Excel y Power Bi y son lenguajes distintos.

Si tu objetivo es crear simplemente una columna a la que le restas 8 horas, probablemente el Power Query sea la forma más sencilla de hacerlo, pero si lo necesitas hacer con DAX tendrías una serie de opciones y la más óptima es la de crear una tabla calendario y luego una tabla de tiempo para poder que todo funcione correctamente, pero todo depende de lo que desees hacer y cómo lo quieras hacer.

Te recomiendo publicar tu consulta completa con lujo de detalles en el foro oficial de Power BI desde el enlace de abajo:
https://community.powerbi.com/t5/Translated-Spanish-Desktop/bd-p/pbi_spanish_desktop

Saludos!

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.