參數(shù)動態(tài)過濾是BI可視化分析使用過程中最常見的應(yīng)用場景,靈活掌握參數(shù)動態(tài)過濾的應(yīng)用可以幫助我們解決絕大部分的復雜數(shù)據(jù)過濾需求。
參數(shù)動態(tài)過濾之所以這么重要,主要是因為篩選器的定位是簡單易用的數(shù)據(jù)過濾,拖拽即可使用;但缺點也很明顯,篩選器只能進行最簡單的唯一值、匹配、范圍等篩選模式,對于稍微復雜的過濾場景就束手無策,如:
● 通過切換顯示本年、本月的銷售情況;
● 通過切換顯示最近7天、最近30天、最近半年的銷售情況;
● 選擇一個日期,顯示這個日期所在時間的上周的所有入職人員;
● 輸入一個閾值數(shù)字,如果該數(shù)字小于10,則不返回數(shù)據(jù);如果該數(shù)字大于10,則返回所有大于10且小于這個數(shù)字的數(shù)據(jù);
● ......
類似場景還有很多,今天我們主要通過參數(shù)動態(tài)過濾解決可視化展示中通過切換顯示本年、本月銷售情況的場景(如下圖左上角切換后,下方所有圖形展示切換后的數(shù)據(jù))。其他類型場景可能更復雜,但和該場景的實現(xiàn)方法并無本質(zhì)區(qū)別。
參數(shù)動態(tài)過濾解決思路
新建一個參數(shù),將該參數(shù)應(yīng)用應(yīng)用到SQL集(使用SQL集再作圖),或者圖形高級過濾中,通過改變參數(shù)值,使對應(yīng)引用參數(shù)的地方重新計算,進行實現(xiàn)數(shù)據(jù)的動態(tài)計算和過濾。
● 參數(shù)機制:參數(shù)值改變時,所有應(yīng)用到參數(shù)的地方(SQL集、高級過濾、計算列等)都會根據(jù)改變后的值重新計算,并返回計算后的值,最終實現(xiàn)參數(shù)值變化影響數(shù)據(jù)的動態(tài)變化(動態(tài)過濾);
● 參數(shù)特點:因使用參數(shù)的地方一般都能通過表達式構(gòu)建復雜的計算、數(shù)據(jù)過濾規(guī)則,所以能夠輕松實現(xiàn)復雜的數(shù)據(jù)動態(tài)過濾業(yè)務(wù)。
參數(shù)動態(tài)過濾操作說明
注:操作流程只針對動態(tài)過濾需求場景,過程中僅介紹參數(shù)動態(tài)過濾相關(guān)操作,其他在此不做說明。
對于該業(yè)務(wù)場景,很多用戶上來之后會先用數(shù)據(jù)集做出下圖看板中3個圖形,然后再考慮在左上角加上年度、月度的篩選,這樣是不一定正確的。今天我們通過參數(shù)和SQL集實現(xiàn)該業(yè)務(wù)場景。
注:直接使用數(shù)據(jù)集作圖,然后在高級過濾中通過參數(shù)實現(xiàn)動態(tài)過濾也能實現(xiàn)該業(yè)務(wù)。但SQL集更加靈活,能解決更加復雜的業(yè)務(wù)場景。
首先我們需要新建一個參數(shù),類型為字符,取值范圍為列表,參數(shù)方向為內(nèi)部,可選值類型為單變量,新增兩個值分別為年度、月度,具體如下圖:
接下來我們在左上角點擊添加數(shù)據(jù)-SQL創(chuàng)建數(shù)據(jù)集,在彈窗中使用業(yè)務(wù)數(shù)據(jù)表【全國銷售訂單數(shù)據(jù)】生成如下SQL集:
SELECT * FROM [全國銷售訂單數(shù)據(jù)(tempoappexampledata)] T0 where IF( ${參數(shù)1}='年度',year(`日期` ) =year(now()) , year(`日期` ) =year(now()) and month(`日期` ) =month(now()) )
可以看到SQL集中我們對參數(shù)的值進行了判斷,當參數(shù)值等于年度時,返回當年的數(shù)據(jù);當不等于當年時(等于當月),返回當月的數(shù)據(jù)。
然后我們基于該SQL集,構(gòu)建如下圖形(為了業(yè)務(wù)表達清晰,此處用線圖展示對應(yīng)日期下的訂單數(shù)量情況)
可以看到上圖中顯示了當年的數(shù)據(jù),因為參數(shù)默認值是當年,但我們還要實現(xiàn)年、月的切換。所以我們將參數(shù)組件拖入畫布,然后將創(chuàng)建好的參數(shù)拖入?yún)?shù)的圖表數(shù)據(jù)中,再將參數(shù)的樣式調(diào)整為單選導航條。此時我們切換參數(shù)的值時,線圖的數(shù)據(jù)就發(fā)生了變化。
以下為切換到月度時,只顯示當月數(shù)據(jù)的場景。
小T總結(jié)
參數(shù)動態(tài)過濾之所以這么強大,主要在于引用參數(shù)的地方一般都能實現(xiàn)邏輯自定義能力(SQL、表達式等)。
借助參數(shù)值在引用區(qū)域(SQL集、高級過濾、計算列等)動態(tài)變化的能力,我們能夠?qū)崿F(xiàn)非常復雜的數(shù)據(jù)過濾場景,包括但不限于上文中提到的以下內(nèi)容:
● 通過切換顯示最近7天、最近30天、最近半年的銷售情況;
● 選擇一個日期,顯示這個日期所在時間的上周的所有入職人員;
● 輸入一個閾值數(shù)字,如果該數(shù)字小于10,則不返回數(shù)據(jù);如果該數(shù)字大于10,則返回所有大于10且小于這個數(shù)字的數(shù)據(jù);
● ......