DAX (的資料分析運算式) 35 個函數,專門用於匯總及比較一段時間的資料。 與 DAX 的日期和時間函數不同,Time-intelligence 函數在函數Excel。 這是因為時間智慧函數會處理持續變更的資料,這取決於您在樞紐分析表和 Power View 視覺效果中選取的上下文。
若要使用時間智慧函數,您必須在資料模型中包含日期資料表。 日期資料表必須包含一欄,資料中每年每一天都有一列。 此欄會視為日期欄 (雖然您可以以任何您喜歡的名稱命名) 。 許多時間智慧函數都需要日期欄,才能根據您選取為報表欄位的日期來計算。 例如,如果您有使用 CLOSINGBALANCEQTR 函數來計算完結季尾餘額的量值,Power Pivot 若要知道該季何時結束,則必須參照日期資料表中的日期欄,才能知道該季何時開始及結束。 若要深入瞭解日期資料表,請看一下瞭解及在Power Pivot中建立Excel。
函數
返回單一日期的函數
此類別中的函數會返回單一日期。 然後,結果可做為其他函數的引數。
此類別中的前兩個函數會以目前上下文Date_Column中第一個或最後一個日期。 當您想要尋找您擁有特定類型交易的第一個或最後一個日期時,這項功能會很有用。 這些函數只會使用一個引數,即日期資料表中的日期欄名稱。
此類別中的後兩個函數會找出第一個或最後一個 (或任何其他資料行值,) 運算式有非空白值。 這是最常見的使用方式,例如庫存,您想要取得最後一個庫存量,而您不知道最後一個庫存何時被取用。
-
FIRSTNONBLANK (Date_Column,運算式)
-
LASTNONBLANK (Date_Column,運算式)
還有六個函數會返回單一日期,這些函數會根據計算目前上下文,將月份、季或年的第一個或最後一個日期返回。
-
STARTOFMONTH (Date_Column)
-
STARTOFQUARTER (Date_Column)
-
STARTOFYEAR (Date_Column [,YE_Date])
-
ENDOFQUARTER (Date_Column)
-
ENDOFYEAR (Date_Column [,YE_Date])
會返回日期表的函數
有 16 個時間智慧函數會返回日期表。 這些函數通常會用來做為 CALCULATE 函數的 SetFilter 引數 。 就像 DAX 中所有時間智慧函數一樣,每個函數會以日期欄做為引數之一。
此類別中的前八個函數會以目前上下文的日期欄開始。 例如,如果在樞紐分析表中使用量值,則欄標籤或列標籤上可能有一個月或一年。 淨效果是篩選日期欄,只包含目前上下文的日期。 從目前的上下文開始,這八個函數接著會計算上一個 (或下一個) 天、月、季或年,然後以單一資料行資料表的形式返回這些日期。 「上一個」函數會從目前上下文的第一個日期往後工作,而「下一個」函數會從目前上下文的最後一個日期向前移動。
-
PREVIOUSDAY (Date_Column)
-
PREVIOUSMONTH (Date_Column)
-
PREVIOUSQUARTER (Date_Column)
-
PREVIOUSYEAR (Date_Column [,YE_Date])
-
NEXTDAY (Date_Column)
-
NEXTMONTH (Date_Column)
-
NEXTQUARTER (Date_Column)
-
NEXTYEAR (Date_Column [,YE_Date])
此類別中接下來四個函數是相似的,但除了計算上一個 (或下一個) 期間外,這些函數會計算 "月到日期" (或季至日期、年至今或上一年) 的同一期間中的一組日期。 這些函數都使用目前環境中的最後一個日期來執行計算。 請注意,SAMEPERIODLASTYEAR 要求目前的上下文包含一組連續的日期。 如果目前的上下文不是連續的日期集,則 SAMEPERIODLASTYEAR 會返回錯誤。
-
DATESMTD (Date_Column)
-
DATESYTD (Date_Column [,YE_Date])
此類別中的最後四個函數有點複雜,而且功能也比較強大。 這些函數是用來從目前上下文的日期集移轉至新的一組日期。
-
DATEADD (Date_Column、Number_of_Intervals、間隔)
-
DATESBETWEEN (Date_Column, Start_Date, End_Date)
-
DATESINPERIOD (Date_Column、Start_Date、Number_of_Intervals、間隔)
-
PARALLELPERIOD (Date_Column、Number_of_Intervals、間隔)
DATEBETWEEN 會計算指定開始日期和結束日期之間的一組日期。 其餘的三個函數會從目前上下文移轉一些時間間隔。 間隔可以是日、月、季或年。 這些函數可輕鬆地將計算時間間隔由下列任一項移動:
-
回到兩年
-
返回一個月
-
往前三季
-
返回 14 天
-
前轉 28 天
在每一種情況下,您只需要指定哪一個間隔,以及要移轉的間隔數。 正間隔會以時間向前移動,而負間隔會往後移。 間隔本身是由 DAY、MONTH、QUARTER 或 YEAR 的關鍵字所指定。 這些關鍵字不是字串,因此不應使用引號。
評估一段時程表達式的函數
此函數類別會評估指定時段的運算式。 您可以使用 CALCULATE 和其他時間智慧函數來完成相同的工作。 例如,
= TOTALMTD (運算式,Date_Column [, SetFilter])
與以下完全相同:
= CALCULATE (運算式,DATESMTD (Date_Column) [, SetFilter])
不過,當這些時間智慧函數非常適合需要解決的問題時,更容易使用這些時間智慧函數:
-
TOTALMTD (運算式,Date_Column [, SetFilter])
-
TOTALQTD (運算式,Date_Column [, SetFilter])
-
TOTALYTD (運算式,Date_Column [, SetFilter] [,YE_Date]) *
此外,此類別中還有一組函數,可計算開啟和結算餘額。 您應該使用這些特定函數瞭解某些概念。 首先,您可能認為顯而易見,任何期間的期初餘額都和上一期的期末餘額相同。 期末餘額包含期間結束時的所有資料,而期首餘額不包含目前期間內的任何資料。
這些函數一直會返回評估特定時間點之運算式的值。 我們關心的時間點一直是一個日曆週期中最後一個可能的日期值。 期首餘額是以上一個期間的最後一天為基礎,而期末餘額則以目前期間的最後一天為基礎。 目前期間一直由目前日期上下文的最後一個日期決定。
-
開啟BALANCEMONTH (運算式,Date_Column [,SetFilter])
-
開啟BALANCEQUARTER 第 (運算式,Date_Column [,SetFilter])
-
開啟BALANCEYEAR (運算式,Date_Column [,SetFilter] [,YE_Date])
-
CLOSINGBALANCEMONTH (運算式,Date_Column [,SetFilter])
-
CLOSINGBALANCEQUARTER (運算式,Date_Column [,SetFilter])
-
CLOSINGBALANCEYEAR (運算式,Date_Column [,SetFilter] [,YE_Date])
其他資源
文章:瞭解及建立 Power Pivot中的日期資料表Excel
參考:Office.com上的 DAX 函數參照
範例:使用 Microsoft PowerPivot中的損益資料Excel