Anónimo
Hola,
Parece que la única forma de lograr una visualización adecuada de la fecha en AEST (hora estándar del este de Australia) que tiene en cuenta el horario de verano es consultar una tabla que almacena las horas compensadas por año.
Esto se basa en la publicación del blog:
https://in satellitect.com/convert-utc-local-time-daylight-savings-support-power-bi/
¿Hay alguna forma de cargar dinámicamente estos datos como Power Query en función del año actual?
No conozco ningún sitio web que pueda proporcionar estos datos en una forma que se pueda consultar en Power Bi.
nickdewitt
Una forma en que logré que esto funcionara dinámicamente fue configurando un punto final HTTP de flujo que tomaba una fecha como una entrada UTC y devolvía una fecha en mi zona horaria, usando la función convertFromUtc para convertir a una zona horaria específica (GMT en mi caso) . El único problema aquí es que es un conector premium y se ejecuta una vez por cada fecha y hora que proporcione. Incluso para un conjunto de datos pequeño, estaba ejecutando el flujo como 800 veces por actualización. Eso parecía demasiado, especialmente dados los recientes cambios en las licencias.
Podría replicar eso fácilmente con un servidor web, ejecutando cualquier código que tenga una biblioteca para cambiar entre zonas horarias (por ejemplo, .NET)
En uno de los blogs vinculados, se hizo la siguiente declaración:
Actualizar: El servicio Power BI se actualizó recientemente de modo que DateTimeZone.ToLocal () ahora usa la zona horaria del cliente, lo que significa que la solución a continuación ya no es necesaria para resolver el problema discutido.
Después de perder casi 2 días, descubrí que esto no era cierto. No, a menos que se esté convirtiendo a la misma zona horaria, pero ignorando el horario de verano, ya que cambia constantemente a UTC (que es lo mismo que GMT fuera del horario de verano). Necesito que mis tiempos sean correctos durante BST.
También hay algunas API de pago que podría usar (por ejemplo, https://www.timeanddate.com/) pero las que encontré no son gratuitas o no son adecuadas para la tarea.
Terminé bajando por la ruta de la tabla, ya que era la única avenida razonable que quedaba para bajar. He almacenado una tabla como la siguiente en un servidor SQL para su reutilización, pero también puede ingresar los datos directamente en Power BI Desktop:
Año | Inicio de horario de verano UTC | Final de horario de verano UTC |
2017 | 26/03/2017 01:00 | 29/10/2017 01:00 |
2018 | 25/03/2018 01:00 | 28/10/2018 01:00 |
2019 | 31/03/2019 01:00 | 27/10/2019 01:00 |
Luego escribí un par de funciones en power bi para hacer la conversión un poco más fácil y cualquier reelaboración futura más fácil para mí:
Función IsDaylightSavingsTime:
(dateTimeValue as datetime) as logical => let sourceYear = Date.Year(dateTimeValue), rowValue = Table.First(Table.SelectRows(DaylightSavingsTime, each [Year] = sourceYear)), isDst = rowValue[Start] < dateTimeValue and dateTimeValue < rowValue[End] in isDst
Función ConvertUTCtoGMT:
(utcDateTime as datetime) as datetime => let Source = "" in if IsDaylightSavings(utcDateTime) then (utcDateTime + #duration(0,1,0,0)) else utcDateTime
Y luego, donde quiera convertir una fecha UTC a GMT, solo uso lo siguiente:
= Table.AddColumn(#"Filtered Rows1", "new_taskstart_gmt", each ConvertUTCtoGMT(DateTimeZone.RemoveZone([new_taskstart])), DateTime.Type)
Lo bueno de esto es que si / cuando Power BI comienza a implementar una función datetime.toLocale, simplemente cambio mi función ConvertUTCtoGMT a la siguiente, y ya terminé, puedo tirar la tabla:
(utcDateTime as datetime) as datetime => let Source = "" in datetime.toLocale(utcDateTime,'GMT')
Realmente vale la pena señalar que cuando publica por primera vez un informe desde Power BI Desktop, los datos que empujó hacia arriba se calcularon en su máquina local, con su configuración regional. Lo que ve justo después de publicar es lo mismo que ha visto en Power BI Desktop, pero la próxima vez que el servicio Power BI actualice sus datos, se calculará en el contexto de su configuración regional, UTC, y todo saldrá. de sincronización de nuevo.
v-chuncz-msft
@Anónimo,
Puede echar un vistazo a la publicación a continuación.
https://community.powerbi.com/t5/Desktop/UTC-to-AEST/mp/187319#M82393
Anónimo
En respuesta a v-chuncz-msft
Hola,
He leído ese enlace y parece que todavía necesita agregar valores manualmente a la tabla. Estoy buscando una solución que pueda hacer esto automáticamente.
Gracias