如何解決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 | 数据分析 |