Excel 中的 Power Pivot 時間智慧

套用到
Microsoft 365 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

DAX (資料分析表達式) 包含 35 個專門用於資料彙整與比較的函式。 與 DAX 的日期和時間函數不同,時間智慧函數在 Excel 中其實沒有類似的功能。 這是因為時間智慧功能處理的資料會根據你在樞紐分析表和 Power View 視覺化中選擇的上下文不斷變化。

為了使用時間智慧函數,你需要在資料模型中包含一個日期表。 日期表必須包含一欄,每一行代表你資料中每年的每一天。 這欄被視為日期欄 (雖然你可以隨意命名) 。 許多時間情報函數需要日期欄位,才能根據你在報告中選擇的欄位來計算日期。 例如,如果你有一個度量,透過 CLOSINGBALANCEQTR 函數計算季末結餘,Power Pivot 要知道季度真正結束的時間,必須參考日期表中的日期欄,以判斷季度開始和結束的時間。 想了解更多關於日期表的資訊,請參考 Excel 中的「理解並建立 Power Pivot 中的日期表」。

函數

回傳單一日期的函式

此類別中的函式會回傳單一日期。 結果可作為其他函數的參數。

此類別的前兩個函式回傳當前語境中Date_Column的第一個或最後一個日期。 當你想查找某一特定類型交易的第一天或最後一次發生時,這會很有用。 這些函式只接受一個參數,即日期表中日期欄位的名稱。

此類別的後面兩個函式會尋找 (或任何其他欄位的日期,) 表達式非空白值的欄位值。 這通常用於像是庫存這類情況,當你想知道最後的庫存金額,卻不知道最後一次庫存是何時被取走的。

另外六個回傳單一日期的函數,是回傳當前計算情境中每月、季度或年度第一個或最後一個日期的函數。

回傳日期表的函式

共有十六個時間智能函數,會回傳一張日期表。 這些函式通常會作為 CALCULATE 函式的 SetFilter 參數使用。 就像 DAX 中所有的時間智慧函數一樣,每個函數都以日期欄位作為其中一個參數。

此類別的前八個函式皆以當前情境中的日期欄位開始。 例如,如果在樞紐分析表中使用度量,欄位標籤或列標籤上可能會有月份或年份。 結果是日期欄位被過濾,只包含當前上下文的日期。 從當前情境出發,這八個函式會計算前 (或下一個) 天、月、季或年,並以單欄表格的形式回傳這些日期。 「先前」函式從當前上下文中的第一個日期向前計算,而「下一個」函式則從當前上下文的最後日期向前推進。

此類別中的接下來四個函數類似,但它們不是計算前一 (或下) 期間,而是計算「月至今」期間的日期集合,無論是 (、季度至今、或去年同期) 。 這些函式都是利用當前情境中的最後日期來計算。 請注意,SAMEPERIODLASTYEAR 要求當前上下文包含連續的日期集合。 如果目前的上下文不是連續的日期集合,那麼 SAMEPERIODLASTYEAR 會回傳錯誤。

這類的最後四個功能稍微複雜一些,也更強大一些。 這些函數用來從當前上下文中的日期集合轉換到新的日期集合。

DATESBETWEEN 計算指定開始日期與結束日期之間的日期集合。 剩下的三個函數會從當前情境中移動若干時間區間。 間隔可以是一天、一個月、一季或一年。 這些函數使得透過以下任一方法輕鬆調整計算時間區間:

  • 返回兩年前
  • 返回一個月後
  • 往前走三分之四
  • 返回14天
  • 往前看 28 天

在每種情況下,你只需要指定哪個區間,以及要移多少個區間。 正值區間會向前移動,負值區間則會往時間上回溯。 該區間本身由 DAY、MONTH、QUARTER 或 YEAR 等關鍵字指定。 這些關鍵字不是字串,所以不應該加上引號。

評估一段時間內表達式的函數

這類函數會在指定時間內評估一個表達式。 你也可以用 CALCULATE 和其他時間智慧函數達成同樣的效果。 例如,

= TOTALMTD (表達式,Date_Column [, SetFilter])

完全相同於:

= 計算 (表達式,DATESMTD (Date_Column) [, SetFilter])

然而,當這些時間智慧函數與需要解決的問題相契合時,使用起來會更容易:

  • TOTALMTD (表達式,Date_Column [, SetFilter])
  • TOTALQTD (表達式,Date_Column [, SetFilter])
  • TOTALYTD (表達,Date_Column [, SetFilter] [,YE_Date]) *

同一類別中還有一組計算期初與期末餘額的函數。 你必須了解這些特定功能中的一些概念。 首先,正如你可能認為顯而易見的,任何期間的期初餘額與前一期的期末餘額相同。 期末餘額包含該期間結束前的所有資料,而期初餘額則不包含本期內的任何資料。

這些函式總是回傳針對特定時間點評估的表達式值。 我們關心的時間點永遠是曆法期間中最後可能的日期值。 期初餘額是根據前一期間的最後一天計算,而期末餘額則是根據本期的最後一天計算。 當前期間總是以當前日期情境中的最後日期決定。

其他資源

文章: 在 Excel 中理解並建立 Power Pivot 中的日期表

參考資料: DAX 函數參考 資料 Office.com

範例: 使用 Microsoft PowerPivot 在 Excel 中的損益資料建模與分析