如何解決Power BI在線版和本地版的時區差異問題

有些時候,我們需要在數據建模過程中使用Today()、Now()等函數獲取當前系統時間。比如計算用戶在線時間:

計算邏輯是如果用戶的「下線時間「為空,則用當前系統時間減 「上線時間「,否則直接用「上線時間「減「下線時間「。

在Power Query(查詢編輯器)中的公式:

if [下線時間]<> null then ([下線時間]-[上線時間])*24 else (DateTime.LocalNow()-[上線時間])*24

可以得到下圖的結果:

在Power Pivot(DAX)中的寫法:

DAX-在線時長(小時) = if(表1[下線時間]<>blank(),(表1[下線時間]-表1[上線時間])*24,(now()-表1[上線時間])*24)

但是,當我們把該報告發布到 Power BI 在線版並刷新後,我們得到了一個錯誤的結果

紅色框線的時長變成了負數。您肯定也想到了,這是因為Power BI 在線版的伺服器時間和我們本地桌面版的系統時間不一樣造成的 – 無論是國際版還是中國本地版,Power BI 在線版的默認都是UTC時間,而且暫時沒有辦法設置該時間。

假設我們在Power BI 桌面版新建度量值:

NOW = now()

得到的時間是我們計算機的系統時間 – 北京時間:

如果我們將該報告發布到在線版,時間則會變成UTC時間:

基於上述情況,如果我們已經在Excel或桌面版使用Today() 、Now()等函數,在發布到Power BI在線版之前,為了確保計算的準確性,需要對函數進行相應的調整。以Now()為例,我們需要在Power BI 在線版上獲得正確的北京時間,然後才能和「上線時間「進行比較。

【獲取伺服器上當前北京時間日期】

由於北京時間比UTC時間早8個小時,所以我們的公式應為:

Power BI 在線版北京時間= Now() +8/24

這樣我們就把Power BI 在線版上的UTC時間轉換成了當前的北京時間。在文章開始的示例中,公式需要進行如下調整:

Power Pivot(DAX):

DAX-調整後在線時長(小時) = if(表1[下線時間]<>blank(),(表1[下線時間]-表1[上線時間])*24,(now()+8/24-表1[上線時間])*24)

發布到在線版後得到正確的計算結果:

如果是在Power Query(查詢編輯器)中,M語句提供了DateTimeZone.SwitchZone 函數對時間進行調整:

DateTimeZone.SwitchZone(DateTimeZone.LocalNow(),8,0)

公式的意思是基於現有系統/伺服器時間,增加8個小時,即可將在線版的時間調整為北京時間。

完整示例公式:

if [下線時間]<> null then ([下線時間]-[上線時間])*24 else (DateTime.From(DateTimeZone.SwitchZone(DateTimeZone.LocalNow(),8,0))-[上線時間])*24

【獲取伺服器上當前北京時間日期】

同樣的道理,如果你在計算中使用的是Today(),需要將當前北京時間的日期提取出來,則可以使用下述計算:

Power Pivot(DAX):

在線版今天 = DATE(YEAR(NOW()+8/24),MONTH(NOW()+8/24),DAY(NOW()+8/24))

Power Query(查詢編輯器):

Date.From(DateTimeZone.SwitchZone(DateTimeZone.LocalNow(),8,0))

大家感興趣的話建議實際測試一下,不僅能解決時區轉換問題,還可以增加對DAX和M中相關時區轉換公式的了解。

*PowerPivot工坊原創文章,歡迎轉載,請註明出處

-----------------------------------------------------------------------------------------------------------------------

延伸閱讀:

在Power Pivot中使用DATEDIFF函數計算日期時間間隔

使用USERELATIONSHIP實現兩表之間多個關係的調用

在Power Pivot中計算父行匯總百分比

圖解Earlier函數

Power Pivot時間智能之YTD(年初至今累計)

一張圖看懂微軟Power BI系列組件

當Power BI遇上歐冠決賽

-----------------------------------------------------------------------------------------------------------------------

如果您想深入學習微軟Power BI,歡迎登錄網易雲課堂試聽學習我們的「從Excel到Power BI數據分析可視化」系列課程。或者關注我們的公眾號(PowerPivot工坊)後猛戳」在線學習」


推薦閱讀:

百分比堆積柱形圖
不為人知的Excel轉壓縮包逆天功能
PQ補充說明
如何將「2小時47分49秒」轉換為多少秒?

TAG:PowerBI | MicrosoftExcel | 数据分析 |