這項資訊適用於工作簿和傳統儀表板。
時間序列函數或篩選函數?
時間序列函數 Ago
和 Todate
提供了一種建立度量以計算 year-ago、year-to-date
等的簡易方式,而且此方法適用於業務使用者報表。只不過,這些函數會產生複雜的查詢,對效能會有很大的負擔。此外,每次在報表中使用這些中的其中一個函數時,會耗用更多資料庫資源產生額外的子查詢。
在傳統儀表板中,您通常可使用基礎度量搭配 Filter
函數來篩選適當的期間,這與使用時間序列函數產生的結果相同。此方法對業務使用者報表可能太過複雜,但非常適合 IT 團隊預先定義的儀表板。使用此方法所產生的實體 SQL 更加簡單且更有效率,而且不需要額外的子查詢。這代表 SQL 查詢的速度更快且使用的資料庫資源更少,可降低整體資料庫 CPU 使用率和 IO 數。
以下是在相同報表中使用基礎度量和月份 Ago 度量產生的實體查詢範例。產生以下兩個查詢:
以下是使用 Filter
函數產生的 SQL。產生更為簡單的單一查詢:
如何在包含提示的儀表板實行此方法
在大多數的實行中,儀表板已經包含提示,所以使用者可選取他們所需的月份。第一個步驟是根據使用者的選擇,找出需要篩選的期間。
在這個簡單的範例中,我們假設行事曆維度包含 Julian Period Number
資料欄,因為這樣讓計算更加簡單。雖然沒有 Julian Period Number
也一樣可行,但會需要使用更為複雜的公式來計算選取的期間。
首先,必須在 Month
提示填入展示變數 (在下方範例中為 MonthSelected
)。接著,建立獨立的儀表板提示以擷取相應的 Julian Period Number
,然後將其置入另一個變數 (PeriodNumberSelected
)。第二個提示不會對一般使用者顯示,在儀表板中會為隱藏狀態,且會根據 MonthSelected
變數自動計算其值。請參閱下方範例。
Month
提示以新增展示變數。
Julian Period Number
建立獨立的儀表板提示。
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})