Power BI 各类时间序列文本的处理方法(unixtime, timezone)

当使用Power BI处理时间戳的时候,会遇到各种各样的坑。
本文先讨论两种常见情况。如果有其他特殊场景,欢迎留言。

划重点:

  • duration()

1. unix timestamp

Unix时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
常见的会是长成:1551684928 这样的连续数字。

可以通过增加一列custom column将其转变为Datetime:

= #datetime(1970, 1, 1, 0, 0, 0) + #duration(0, 0, 0, [UnixTime_ColumnName]/1000)

2. 带tz的时间戳

以中国时区为例
例如:2019-03-013T09:25:41.4327813+08:00

Power BI能够忽略时区部分,自动Parse"2019-03-013T09:25:41.4327813+00:00"这样的时间戳,但如果时区不为零,则会报错:

DataFormat.Error: We couldn't parse the input provided as a DateTime value.
Details:
    2019-03-013T09:25:41.4327813+08:00

这时,我们可以通过简单的两步,解决问题:
1. split column by Delimiter
将时间戳 column 以 Operator : "+" 分为两列:

Timestamp.1 Timestamp.2
2019-03-013T09:25:41.4327813 08:00

默认会分为属性是"Text"的两列, 需要将第一列变成"Date/Time属性"

image.png

2. add custom column

= if [Timestamp.2] = "08:00" then [Timestamp.1]+#duration(0,8,0,0) else if [Timestamp.2] = "00:00" then [Timestamp.1] else [Timestamp.1]

这一方法还可以用来处理local time 和 UTC time之间的GAP。
目前,Power BI desktop中可以展示local timezone的时间,而publish到Power BI Service之后,则会变回UTC time。
为了保持Report的一致性,也可以使用这一方法。

Done.

你可能感兴趣的:(Power BI 各类时间序列文本的处理方法(unixtime, timezone))