Правильно и автоматически определите восточное время для визуального элемента «Последнее обновление» в Power BI

#datetime #powerbi #data-analysis #powerquery #m

Вопрос:

У меня есть опубликованная панель мониторинга, которая обновляется каждые 30 минут, там у меня есть карточка, на которой я указываю дату и время «Последнего обновления» в формате восточного времени, когда панель мониторинга обновлялась службами Power BI, я хочу избежать ручного изменения часов (после UTC) на основе экономии дневного света за каждый год.

В настоящее время я определил этот расчет времени EST на основе следующего сценария M:

 let
Source = #table(type table[Date Last Refreshed=datetime],{{DateTimeZone.UtcNow()}}),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date Last Refreshed", type datetime}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom Last Refresh", each [Date Last Refreshed]  #duration(0,-4,0,0)),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Date Last Refreshed"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom Last Refresh", "Date Last Refreshed"}})

in
#"Renamed Columns"
 

Ответ №1:

Я использую это для корректировки перехода на летнее время (я тоже на Востоке).:

 let
ESTAdjustment = (InputDateTimeAsUTC as datetimezone, UTCAdjustmentAmount as number) =>
let
CurrentYear = Date.Year( DateTimeZone.SwitchZone( InputDateTimeAsUTC, UTCAdjustmentAmount ) ),
DaylightSavingsStart = Date.StartOfWeek( #datetimezone( CurrentYear, 3, 14, 0, 0, 0, UTCAdjustmentAmount, 0 ), Day.Sunday )   #duration( 0, 2, 0, 0 ),
DaylightSavingsEnd = Date.StartOfWeek( #datetimezone( CurrentYear, 11, 7, 0, 0, 0, UTCAdjustmentAmount   1, 0 ), Day.Sunday )   #duration( 0, 2, 0, 0 ),
AdjustForDaylightSavingsTime = if InputDateTimeAsUTC >= DaylightSavingsStart and InputDateTimeAsUTC < DaylightSavingsEnd then UTCAdjustmentAmount   1 else UTCAdjustmentAmount,
AdjustToEST = DateTimeZone.RemoveZone(InputDateTimeAsUTC)   #duration(0, AdjustForDaylightSavingsTime, 0, 0)
in
AdjustToEST
in
ESTAdjustment