Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

Zona horaria de Power BI+ conexión de luz diurna a CEST

Buenos días

He encontrado toneladas de publicaciones sobre este problema exacto, desearía que Power BI lo agregara como una entrada normal.
Sin embargo, no he encontrado una solución adecuada que funcione para mí.

Estoy tratando de convertir RefreshTime a CEST / CET dependiendo del horario de verano.
¿Alguna ayuda?
Posibles enlaces útiles que no pude conseguir trabajar:
DateTimeZone.SwitchZone - PowerQuery M | Microsoft Learn
DateTimeZone.ToLocal: PowerQuery M | Microsoft Learn

Agregué una nueva tabla junto con mis otras fuentes de datos. Solo tiene un registro de la hora local. Marque eso como Tabla de fechas y las otras horas de fecha siguen en consecuencia.

let
Source = Json.Document(Web.Contents("http://worldtimeapi.org/api/timezone/Australia/Adelaide")),
#"Converted to Table" = Table.FromRecords({Source}),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"abbreviation", type text}, {"client_ip", type text}, {"datetime", type datetimezone}, {"day_of_week", Int64.Type}, {"day_of_year", Int64.Type}, {"dst", type logical}, {"dst_from", type datetime}, {"dst_offset", Int64.Type}, {"dst_until", type datetime}, {"raw_offset", Int64.Type}, {"timezone", type text}, {"unixtime", Int64.Type}, {"utc_datetime", type datetime}, {"utc_offset", type text}, {"week_number", Int64.Type}})
in
#"Changed Type"

"



7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Hi, @DvdH ;

Para sus necesidades específicas, tal vez esta función personalizada podría funcionar:

firstSundayOfNovember = Date.StartOfWeek(#date(Date.Year(date), 11, 7), Day.Sunday),
SecondSundayOfMarch = Date.StartOfWeek(#date(Date.Year(date), 3, 14), Day.Sunday),

isSummerTime =	(date = SecondSundayOfMarch and time >= #time(1,0,0))
	        or
		(date > SecondSundayOfMarch and date < firstSundayOfNovember) 
		or 
		(date = firstSundayOfNovember and time >= #time(1,0,0)),


timeZone = (7 - Number.From(isSummerTime))*-1,

Resuelto: Convertir fecha / hora en UTC a hora local con Daylig ... - Comunidad de Microsoft Power B...

Resuelto: Re: Convertir fecha / hora en UTC a hora local con Da... - Página 2 - Comunidad Power Plat...


Saludos
Equipo de Apoyo a la Comunidad _ Yalan Wu
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

¡Eh! Gracias por la respuesta. ¿Dónde/Cómo implementaría esto? Revisé los enlaces incluso antes de hacer esta publicación, pero parece que no puedo hacer que funcione.

@DvdH ,

Según su declaración, creo que desea convertir la fecha y hora en Power BI a la fecha y hora en su zona horaria local. Le sugiero que consulte este código. Agregue este código al Editor avanzado en el Editor de Power Query. Si esta lógica de cálculo no satisface su solicitud, puede cambiar la lógica de cálculo en función de sus requisitos.

(datetimecolumn as datetime) =>

let

date = DateTime.Date(datetimecolumn),
time = DateTime.Time(datetimecolumn),
firstSundayOfNovember = Date.StartOfWeek(#date(Date.Year(date), 11, 7), Day.Sunday),
SecondSundayOfMarch = Date.StartOfWeek(#date(Date.Year(date), 3, 14), Day.Sunday),

isSummerTime =	(date = SecondSundayOfMarch and time >= #time(1,0,0))
	        or
		(date > SecondSundayOfMarch and date < firstSundayOfNovember) 
		or 
		(date = firstSundayOfNovember and time >= #time(1,0,0)),


timeZone = (7 - Number.From(isSummerTime))*-1,

MDT = 
            DateTime.From(date) 
            + #duration(0,Time.Hour(time),Time.Minute(time),Time.Second(time))  
            + #duration(0, timeZone, 0, 0)

in
    MDT

A continuación, invoque esta consulta con la tabla.

RicoZhou_1-1673401792457.png

El resultado es el siguiente.

RicoZhou_0-1673401774896.png

Saludos
Rico Zhou

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Perdón por las respuestas tardías. Esto parece funcionar, pero no para mi tabla actual.
Tengo una tabla que es de la corriente (no tiene en cuenta el horario de verano)

DvdH_0-1674464639347.png


Parece que no puedo pegar la función aquí? ¿Alguna ayuda? Funcionó para una relación diferente mía con datos manuales.

= #table(type table[#"CET"=datetime],{{DateTimeZone.RemoveZone(DateTimeZone.SwitchZone(DateTimeZone.UtcNow(),1))}})

Código de la tabla por cierto

Syndicate_Admin
Administrator
Administrator

Sí, encontré como 100 enlaces sobre esto, pero realmente necesito algo de apoyo para usar adecuadamente las consultas.

Más información Encontré idontknow cómo convertir / importar en mi propia relación.

//create one entry for each year that exists in the dataset
if Record.Field(DateTimeZone.ToRecord([datetimeUTC]),"Year") = 2018
then 
    //set the start/end of daylight savings for that year.
    // (first number is the start, second is the end)
    //this is in UTC time in the format of MMDDHH
    if [MonthDayHour] >= 31109 and [MonthDayHour] < 110408 
    //set the UTC offset if daylight savings is active
    then DateTimeZone.SwitchZone([datetimeUTC],-6) 
    //set the UTC offset if daylight savings is not active
    else DateTimeZone.SwitchZone([datetimeUTC],-7)
else
if Record.Field(DateTimeZone.ToRecord([datetimeUTC]),"Year") = 2019
then 
    if [MonthDayHour] >= 31009 and [MonthDayHour] < 110308 
    then DateTimeZone.SwitchZone([datetimeUTC],-6) 
    else DateTimeZone.SwitchZone([datetimeUTC],-7)
else
if Record.Field(DateTimeZone.ToRecord([datetimeUTC]),"Year") = 2020
then
    if [MonthDayHour] >= 30809 and [MonthDayHour] < 110108 
    then DateTimeZone.SwitchZone([datetimeUTC],-6) 
    else DateTimeZone.SwitchZone([datetimeUTC],-7)
else 
if Record.Field(DateTimeZone.ToRecord([datetimeUTC]),"Year") = 2021
then
    if [MonthDayHour] >= 31409 and [MonthDayHour] < 110708 
    then DateTimeZone.SwitchZone([datetimeUTC],-6) 
    else DateTimeZone.SwitchZone([datetimeUTC],-7)
//set the default if no year is defined
else DateTimeZone.SwitchZone([datetimeUTC],-7)

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors