#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