我目前正在从Dynamics导出数据。有很多日期字段需要导出。默认情况下,它们都是UTC时区。我想报道一下新西兰时区的情况。我尝试在Power Query中使用以下方法:
1) use DateTimeZone.ToLocal: =Table.TransformColumns(#"dataset", {{"**UTC Date**", **DateTimeZone.ToLocal**, type datetimezone}})
2) use a specific timezone ("en-NZ"): =Table.TransformColumnTypes(#"dataset", {{"UTC Date", type datetime}}, **"en-NZ"**) 这两种方法在Power BI桌面报告中都工作正常,但是一旦我发布到Power BI服务,并在几次刷新之后(最初是新西兰时间),时间又回到了UTC时间。
我不想在DAX中创建额外的列,我真的想尝试使用Power Query。有没有办法解决这个问题?
发布于 2020-04-09 16:56:28
不久前,我也遇到过同样的问题,并提出了以下解决方案。
您可以简单地组合使用RemoveZone和Addzone的电源查询功能来实现这一点。下面的示例显示了如何获取印度标准时间(IST= +5:30)
= DateTime.AddZone(DateTimeZone.RemoveZone(DateTimeZone.UtcNow()),5,30)请注意,我总是使用DateTimeZone.UtcNow()来获取通用标准DateTime,然后将其转换为印度时间。您可以使用自己的时区值
在您的代码中添加上面的代码来代替DateTimeZone.ToLocal。
到DateTime.AddZone的文档
发布于 2020-04-09 11:56:05
Power BI:
使用此Power Query函数将时间从UTC转换为本地时间,但您可以将其设置为任何新西兰时间
let
ConvertDateColumnstoMountainTime = (sourcetable as table) as table =>
let
TargetColumnList = Table.ColumnsOfType(sourcetable, {type datetime, type nullable datetime, type datetimezone, type nullable datetimezone}),
AdjustTimeZones = Table.TransformColumns(sourcetable, List.Transform(TargetColumnList,
(name) => {name, (date) => if date <> null
then DateTime.From(DateTimeZone.RemoveZone(date) + #duration(0,CalculateUTCOffset(date,null),0,0))
else null})),
//Above returns type as text. Need it explicitly as Date.
AdjustColumnTypes = Table.TransformColumnTypes(AdjustTimeZones,List.Transform(TargetColumnList,
(name) => {name, type datetime}))
in AdjustColumnTypes
in ConvertDateColumnstoMountainTimehttps://stackoverflow.com/questions/61111965
复制相似问题