天天看點

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

不知日常工作中,是否有人跟小悅一樣,遇到過需要将時間篩選細化至時分的問題,例如,貨運/快遞行業,需要掌握時點的發運資訊,如:2019/6/1 13:40:00到2019/6/3 18:30:00,以了解時點的發運高峰等資訊。鑒于Power BI目前大緻的切片器都僅隻顯示日期的篩選,小悅這次為大家分享兩種解決方法。

01

✍第一種,DAX寫出時間區域

在這種方法中,我們需要用DAX分别生成開始時間(日期+時點)和結束時間(日期+時點),以使用它來與我們的業務日期(日期/時點)進行對比。

首先開始時間表和結束時間表,分别由日期表和不同的小時表(開始和結束)和分鐘表(開始和結束)内的資料進行拼結,我們先随機生成開始的小時和分鐘數,公式如下:

小時(開始)=GENERATESERIES(0,23,1)

分鐘(開始)= GENERATESERIES(0,59,1)

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器
切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

以同樣的方法來生成結束的小時和分鐘表。

然後,我們以業務表的開始日期和結束日期為坐标,生成一個日期表(開始),公式如下:

日期表(開始)=CALENDAR(MIN(‘業務表’[業務日期]),MAX(‘業務表’[業務日期]))

并且建立一列,将它轉化為文本列,如果有需要,可以用YEAR,MONTH等函數取出年份,月份等資訊。

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

再以同樣的方式來建立日期表(結束)。

當表格都建立完成後,現在讓我們來分别用(開始)的表格們建立完整的日期時間計算字元吧;

開始日期= MIN('日期表 開始'[日期文本])&" "&FORMAT(TIME('時 開始'[開始時值],'分 開始'[開始分值],0),"HH:mm:SS")

結束日期用同樣的方式,将結束表格中的日期與時間作文本拼接。

接下來,我們回到主界面,在畫布中拖拉生成切片器,這裡,要分别用(開始)表格和(結束)表格生成兩個類型切片器,首先,我們來看開始時間的切片器。

我們先将開始日期表的[DATE]拉入切片器字段,因為我們不是在這裡來篩選日期區間,是以選擇“之後”這種單日期選擇模式,再繼續加入兩個切片器,将時(開始)表中的小時值和分(開始)表中的分值拉入字段内;最後開成這樣的切片界面。

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

在完成開始時間的切片器制作後,請繼續以同樣的方式,完成結束時間的切片器制作。

當開始時間和結束時間的切片器完成後,我們就可以來建立計算路徑成本了,比如,我們想對時間區域内的訂單數進行計數,以确定在具體的多少小時内,各車隊分别完成了多少單,可以完成如下計算公式:

訂單數 = CALCULATE(COUNTROWS('DM_T_FYD'),FILTER('DM_T_FYD',FORMAT('DM_T_FYD'[出發錄入時間],"YYYY/MM/DD HH:mm:SS")>='日期表 開始'[開始時間]&&FORMAT('DM_T_FYD'[出發錄入時間],"YYYY/MM/DD HH:mm:SS")<='日期表 結束'[結束時間]))

因為我們的日期表(開始/結束)中的[開始時間]和[結束時間]是文本拼接,它的資料類型為文本,是以請注意,在用業務表中定義的業務計算時間來與之對比時,一定事先進行格式的轉化,将其轉化為文本再進行對比。在篩選器中,我們将出發日期在開始時間和結束時間之間的資料行篩選出來,再進行計數運算。

最後,得到我們需要的值,在切片器中,可以任意填入開始/結束日期,以及與之對應的時點。

而為了驗證切片器的時間設定,與日期表的開始時間/結束時間,确實一緻,我們可以拖放兩個卡片圖來進行确定。在日常操作中,這并非必要步驟。

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

關于用DAX解決時點粒度的時間切片問題,以上便是所有内容了。

現在,讓我們來看下;

02

✍第二種方法:Time Brush Slicer

我們先從市場導入Time Brush,并在可視化面闆中選擇它,如果我們對這個對象并不熟悉,我們可以在示例中先來了解它。

在示例檔案中,你會發現以下提示:

1. 在時間字段中,最好不要用時間層次結構,而是使用日期時間的時間戳。就這意味着,在拖放好時間字段後,需要顯式取消選擇時間層次。

2. 預先通過時間戳生成自己所需要時間粒度(分,時,日,周),Time Brush本身無法完成聚合。

3. 必須在值字段中添加一列數值列(或計算數值列)以便得到一個可選擇的時間區間圖。

4. 通過它來過濾其它可視化對象,但是一定要注意,是通過哪個來過濾哪個對象,不要出現互相過濾的情況。

5. 預設情況下,如果另一個可視化對象對Time Brush形成過濾互動,那麼它也會清除掉Time Brush所選擇的時間區域。

當看完這些提示,讓我們來做一次總結,Time Brush其實作為一個可視化對象,通過互動作用,對其它可視化對象起到時間粒度的過濾作用,是以,我們首先需要将放置其字段面闆中的時間,進行時間粒度的細化(時,分),然後,需要在值字段中,拉放一個數值字段,最後,在需要受時間切片器影響,将時間細化到(時,分)的可視化對象,在選擇Time Brush的情況下,将互動模式調整到過濾,注意不要出現互相過濾。操作如下:

首先,我們選擇一個時間切片器,并将我們的業務日期拖放進字段。接下來,我們選擇Time Brush,同樣,将業務日期(帶時點)拖放至“Date”,并拖放一個數值列進“With Values”.因為我們并不在意這個數值,是以随意拖放訂單進行計數。

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

完成後,會生成如下圖所示的可視化對象。在這裡,時間切片(日期)對它進行影響,它僅僅顯示我們日期所選區間内的日期/時間區間軸,但是粒度卻會細化至我們拖放進去的“業務時間”同樣的粒度。

當我們将滑鼠懸停在建立的Time Brush對象上時,會發現會出現一個黑十字圖示,這裡,我們通過拖拉,來在該時間區間内,選擇我們具體所需要時點區間。選擇好的時間區間,會形成一片陰影面積,就便是我們在具體日期的時間區間内,所具體選擇的時點區域。

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

最後,我們再建立一個車隊的訂單計數表格。然後記得通過互動設計,來選擇誰對誰進行篩選。

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

完成以上步驟後,就可以通過選擇不同時點區域,來對表格的統計時點粒度進行控制。

切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器
切片器可以設定日期格式?_如何分秒必争--淺淡時間切片器

以上,便是第二種方式的分享,希望在工作中遇到此問題的小夥伴,能夠有所收獲,進而解決自己的問題。也希望,如果有了解其它方法的小夥伴,在留言中與我們共享知識哦。

技術交流

微信公衆号搜尋:悅策PowerBI,立即擷取Power BI學習資料大禮包~

繼續閱讀