Excel DAX - 使用時間智慧



您已在“理解時間智慧”一章中學習了DAX強大的時間智慧功能。在本節中,您將學習如何在各種場景中使用DAX時間智慧函式。

DAX時間智慧函式包括:

  • 幫助您從資料中檢索日期或日期範圍的函式,這些函式用於計算跨相似時期的值。

  • 使用標準日期間隔的函式,允許您跨月份、年份或季度比較值。

  • 檢索指定期間的第一個和最後一個日期的函式。

  • 幫助您處理期初和期末餘額的函式。

計算累計銷售額

您可以使用DAX時間智慧函式建立用於計算累計銷售額的公式。以下DAX函式可用於計算期末和期初餘額:

CLOSINGBALANCEMONTH (<表示式>,<日期>, [<篩選器>]) - 在當前上下文中月份的最後一天評估表示式。

OPENINGBALANCEMONTH (<表示式>,<日期>, [<篩選器>]) - 在當前上下文中月份的第一天評估表示式。

CLOSINGBALANCEQUARTER (<表示式>,<日期>, [<篩選器>]) - 在當前上下文中季度的最後一天評估表示式。

OPENINGBALANCEQUARTER (<表示式>,<日期>, [<篩選器>]) - 在當前上下文中季度的第一天評估表示式。

CLOSINGBALANCEYEAR (<表示式>,<日期>, [<篩選器>], [<年末日期>]) - 在當前上下文中年份的最後一天評估表示式。

OPENINGBALANCEYEAR (<表示式>, <日期>, <篩選器>], [<年末日期>]) - 在當前上下文中年份的第一天評估表示式。

您可以使用以下DAX函式建立以下計算欄位,用於在指定時間的產品庫存:

Month Start Inventory Value: = OPENINGBALANCEMONTH ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
) 

Month End Inventory Value: = CLOSINGBALANCEMONTH ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)

Quarter Start Inventory Value: = OPENINGBALANCEQUARTER ( 
   SUMX ProductInventory, (ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
) 

Quarter End Inventory Value: = CLOSINGBALANCEQUARTER ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
) 

Year Start Inventory Value: = OPENINGBALANCEYEAR ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)

Year End Inventory Value: = CLOSINGBALANCEYEAR ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
) 

比較不同時間段的值

DAX支援的預設時間段為月、季和年。

您可以使用以下DAX時間智慧函式比較跨不同時間段的總和。

  • PREVIOUSMONTH (<日期>) - 返回一個表,其中包含來自上個月的所有日期的列,基於當前上下文中日期列中的第一個日期。

  • PREVIOUSQUARTER (<日期>) - 返回一個表,其中包含來自上一季度的所有日期的列,基於當前上下文中日期列中的第一個日期。

  • PREVIOUSYEAR (<日期>, <年末日期>]) - 返回一個表,其中包含來自上一年的所有日期的列,給定當前上下文中日期列中的最後一個日期。

您可以使用DAX函式建立以下計算欄位,用於計算指定時間段內西部地區的銷售總額進行比較:

Previous Month Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSMONTH (DateTime [DateKey])
) 

Previous Quarter Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSQUARTER (DateTime [DateKey])
) 

Previous Year Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSYEAR (DateTime [DateKey])
) 

比較並行時間段的值

您可以使用DAX時間智慧函式PARALLELPERIOD跨與指定時間段平行的時期比較總和。

PARALLELPERIOD (<日期>, <間隔數>, <間隔>)

此DAX函式返回一個表,其中包含代表與指定日期列中的日期平行的時期的日期列,在當前上下文中,日期向前或向後移動一定數量的間隔。

您可以建立以下計算欄位來計算西部地區上一年的銷售額:

Previous Year Sales: = CALCULATE ( 
   SUM (West_Sales[SalesAmount]), PARALLELPERIOD (DateTime[DateKey],-1,year)
) 

計算累計總計

您可以使用以下DAX時間智慧函式計算累計總計或累計和。

  • TOTALMTD (<表示式>,<日期>, [<篩選器>]) - 在當前上下文中評估表示式的每月至今的值。

  • TOTALQTD (<表示式>,<日期>, <篩選器>]) - 在當前上下文中評估季度至今日期的表示式的值。

  • TOTALYTD (<表示式>,<日期>, [<篩選器>], [<年末日期>]) - 在當前上下文中評估表示式的今年至今的值。

您可以使用DAX函式建立以下計算欄位,用於計算指定時間段內西部地區的銷售額累計和:

每月累計和:= TOTALMTD (SUM (West_Sales[SalesAmount]), DateTime[DateKey])

季度累計和:= TOTALQTD (SUM (WestSales[SalesAmount]), DateTime[DateKey])

年度累計和:= TOTALYTD (SUM (WestSales[SalesAmount]), DateTime[DateKey])

計算自定義日期範圍內的值

您可以使用DAX時間智慧函式檢索自定義日期集,您可以將其用作執行計算的DAX函式的輸入,以建立跨時間段的自定義聚合。

DATESINPERIOD (<日期>, <開始日期>, <間隔數>, <間隔>) - 返回一個表,其中包含一個日期列,該列以開始日期開頭並持續指定的間隔數。

DATESBETWEEN (<日期>, <開始日期>, ) - 返回一個表,其中包含一個日期列,該列以開始日期開頭並持續到結束日期。

DATEADD (<日期>,<間隔數>,<間隔>) - 返回一個表,其中包含一個日期列,在當前上下文中,從日期向前或向後移動指定的間隔數。

FIRSTDATE (<日期>) - 返回指定日期列在當前上下文中的第一個日期。

LASTDATE (<日期>) - 返回指定日期列在當前上下文中的最後一個日期。

您可以使用DAX函式建立以下DAX公式,用於計算指定日期範圍內西部地區的銷售總額:

  • 計算2016年7月17日前15天的銷售額的DAX公式。

CALCULATE ( 
   SUM (WestSales[SalesAmount]), DATESINPERIOD (DateTime[DateKey], DATE(2016,17,14), -15, day)
) 
  • 建立計算2016年第一季度銷售額的計算欄位的DAX公式。

= CALCULATE (
   SUM (WestSales[SalesAmount]),DATESBETWEEN (DateTime[DateKey], DATE (2016,1,1), DATE (2016,3,31))
)
  • 建立獲取當前上下文中西部地區首次進行銷售的日期的計算欄位的DAX公式。

= FIRSTDATE (WestSales [SaleDateKey]) 
  • 建立獲取當前上下文中西部地區最後一次進行銷售的日期的計算欄位的DAX公式。

= LASTDATE (WestSales [SaleDateKey]) 
  • 計算當前上下文中的日期前一年的日期的DAX公式。

= DATEADD (DateTime[DateKey],-1,year) 
廣告

© . All rights reserved.