本主題說明時間序列函數和篩選函數之間的差異,並說明如何實行篩選函數。這項資訊適用於工作簿和傳統儀表板。
時間序列函數與篩選函數
時間序列函數 Ago
和 Todate
提供了一種建立度量以計算 year-ago、year-to-date
等的簡易方式。此方法適用於業務使用者報表;不過,這些函數會產生複雜的查詢,對效能有很大的負擔。此外,每次在報表中使用這些函數時,會耗用更多資料庫資源產生額外的子查詢。
在傳統儀表板中,您通常可使用基礎度量搭配 Filter
函數來篩選適當的期間,這與使用時間序列函數產生的結果相同。此方法對業務使用者報表可能太過複雜,但非常適合 IT 團隊預先定義的儀表板。使用此方法所產生的實體 SQL 程式碼更加簡單且更有效率,而且不需要額外的子查詢。這代表 SQL 查詢的執行速度更快且使用的資料庫資源更少,可降低整體資料庫 CPU 使用率和輸入/輸出呼叫數。
下圖顯示在相同報表中同時使用基礎度量和月份 Ago
度量產生的實體查詢範例。產生的兩個查詢如下:
下圖顯示改用 Filter
函數後,對單一查詢產生的 SQL 程式碼。
在包含提示的儀表板實行篩選函數
在大多數的實行中,儀表板已經包含提示,所以使用者可選取他們所需的月份。第一個步驟是根據使用者的選擇,找出需要篩選的期間。
在此範例中,行事曆維度包含 Julian Period Number
資料欄,因為這會讓計算較為簡單。雖然沒有 Julian Period Number
也一樣可行,但會需要使用更為複雜的公式來計算選取的期間。
Month
提示以新增展示變數 (MonthSelected
)。
Julian Period Number
,然後將其置入另一個變數 (PeriodNumberSelected
)。第二個提示不會對一般使用者顯示,在儀表板中為隱藏狀態,且會根據 MonthSelected
變數自動計算其值。
Julian Period
提示路徑。
Month
資料欄的全域篩選,然後視需要根據 Julian Period Number
使用資料欄公式篩選函數。以下是一些範例:
Current Month: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800})
Month Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-1)
Year Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-12)
Year to date: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"<=@{PeriodNumberSelected}{80800} and “Time”.”Year”=@{YearSelected}{2019})