Excel DAX - Sử dụng thời gian thông minh

Bạn đã tìm hiểu về tính năng mạnh mẽ của DAX Thông minh thời gian trong chương - Tìm hiểu Thông minh thời gian. Trong chương này, bạn sẽ học cách sử dụng các chức năng thông minh thời gian DAX trong các tình huống khác nhau.

Các chức năng thông minh thời gian DAX bao gồm:

  • Các hàm giúp bạn truy xuất ngày hoặc phạm vi ngày từ dữ liệu của mình, được sử dụng để tính toán các giá trị trong các khoảng thời gian tương tự.

  • Các hàm hoạt động với khoảng ngày chuẩn, để cho phép bạn so sánh các giá trị giữa các tháng, năm hoặc quý.

  • Các hàm truy xuất ngày đầu tiên và ngày cuối cùng của một khoảng thời gian cụ thể.

  • Các chức năng giúp bạn làm việc trên số dư mở và đóng.

Tính toán doanh số bán hàng tích lũy

Bạn có thể sử dụng hàm thông minh thời gian DAX để tạo công thức tính doanh số bán hàng tích lũy. Các hàm DAX sau có thể được sử dụng để tính toán số dư đóng và mở:

CLOSINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Đánh giá biểu thức vào ngày cuối cùng của tháng trong bối cảnh hiện tại.

OPENINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Đánh giá biểu thức vào ngày đầu tiên của tháng trong bối cảnh hiện tại.

CLOSINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Đánh giá biểu hiện vào ngày cuối cùng của quý trong bối cảnh hiện tại.

OPENINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Đánh giá biểu hiện vào ngày đầu tiên của quý, trong bối cảnh hiện tại.

CLOSINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>]) - Đánh giá biểu hiện vào ngày cuối cùng của năm trong bối cảnh hiện tại.

OPENINGBALANCEYEAR (<expression>, <dates>, <filter>], [<year_end_date>]) - Đánh giá biểu hiện của ngày đầu năm trong bối cảnh hiện tại.

Bạn có thể tạo các trường được tính toán sau cho khoảng không quảng cáo sản phẩm tại một thời điểm cụ thể bằng cách sử dụng các hàm DAX sau:

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]
)

So sánh các giá trị trong các khoảng thời gian khác nhau

Khoảng thời gian mặc định được DAX hỗ trợ là tháng, quý và năm.

Bạn có thể sử dụng các hàm thông minh thời gian DAX sau đây để so sánh tổng số trong các khoảng thời gian khác nhau.

  • PREVIOUSMONTH (<dates>) - Trả về một bảng có chứa một cột gồm tất cả các ngày từ tháng trước, dựa trên ngày đầu tiên trong cột ngày tháng, trong ngữ cảnh hiện tại.

  • PREVIOUSQUARTER (<dates>) - Trả về một bảng có chứa một cột gồm tất cả các ngày từ quý trước, dựa trên ngày đầu tiên trong cột ngày, trong ngữ cảnh hiện tại.

  • PREVIOUSYEAR (<dates>, <year_end_date>]) - Trả về một bảng có chứa một cột gồm tất cả các ngày từ năm trước, cho ngày cuối cùng trong cột ngày, trong ngữ cảnh hiện tại.

Bạn có thể tạo các trường được tính toán sau để tính tổng doanh số bán hàng ở khu vực phía Tây vào các khoảng thời gian được chỉ định để so sánh, bằng cách sử dụng các hàm 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])
)

So sánh các giá trị trong các khoảng thời gian song song

Bạn có thể sử dụng hàm thông minh thời gian DAX PARALLELPERIOD để so sánh tổng trong một khoảng thời gian song song với khoảng thời gian được chỉ định.

PARALLELPERIOD (<ngày>, <number_of_intervals>, <interval>)

Hàm DAX này trả về một bảng chứa một cột ngày biểu thị một khoảng thời gian song song với các ngày trong cột ngày được chỉ định, trong ngữ cảnh hiện tại, với các ngày được dịch chuyển một số khoảng tiến hoặc lùi theo thời gian.

Bạn có thể tạo trường được tính toán sau để tính doanh số bán hàng của năm trước ở khu vực phía Tây -

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

Tính toán tổng số đang chạy

Bạn có thể sử dụng các hàm thông minh thời gian DAX sau đây để tính toán tổng số đang chạy hoặc tổng đang chạy.

  • TOTALMTD (<expression>,<dates>, [<filter>]) - Đánh giá giá trị của biểu thức cho tháng tính đến thời điểm hiện tại.

  • TOTALQTD (<expression>,<dates>, <filter>]) - Đánh giá giá trị của biểu thức cho các ngày trong quý cho đến nay, trong bối cảnh hiện tại.

  • TOTALYTD (<expression>,<dates>, [<filter>], [<year_end_date>]) - Đánh giá giá trị hàng năm của biểu thức trong bối cảnh hiện tại.

Bạn có thể tạo các trường được tính toán sau để tính toán tổng doanh số đang bán ở khu vực phía Tây vào các khoảng thời gian cụ thể, bằng cách sử dụng các hàm DAX:

Tổng thời gian chạy tháng: = TOTALMTD (SUM (West_Sales [SalesAmount]), DateTime [DateKey])

Tổng hoạt động hàng quý: = TOTALQTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Tổng hoạt động trong năm: = TOTALYTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Tính giá trị trong phạm vi ngày tùy chỉnh

Bạn có thể sử dụng các hàm thông minh thời gian DAX để truy xuất một nhóm ngày tùy chỉnh, mà bạn có thể sử dụng làm đầu vào cho hàm DAX thực hiện các phép tính, để tạo tổng hợp tùy chỉnh trong các khoảng thời gian.

DATESINPERIOD (<dates>, <start_date>, <number_of_intervals>, <interval>) - Trả về một bảng có chứa một cột ngày bắt đầu bằng ngày bắt đầu và tiếp tục cho số khoảng_thời gian đã chỉ định.

DATESBETWEEN (<dates>, <start_date>, ) - Trả về một bảng có chứa cột ngày bắt đầu bằng ngày bắt đầu và tiếp tục cho đến ngày kết thúc.

DATEADD (<dates>,<number_of_intervals>,<interval>) - Trả về một bảng có chứa một cột ngày tháng, được dịch chuyển tiến hoặc lùi theo thời gian theo số khoảng thời gian được chỉ định từ các ngày trong ngữ cảnh hiện tại.

FIRSTDATE (<dates>) - Trả về ngày đầu tiên trong ngữ cảnh hiện tại cho cột ngày đã chỉ định.

LASTDATE (<dates>) - Trả về ngày cuối cùng trong ngữ cảnh hiện tại cho cột ngày đã chỉ định.

Bạn có thể tạo các công thức DAX sau để tính tổng doanh số bán hàng ở miền Tây trong một phạm vi ngày cụ thể, bằng cách sử dụng các hàm DAX:

  • Công thức DAX để tính toán doanh số bán hàng trong 15 ngày trước ngày 17 tháng 7 năm 2016.

CALCULATE ( 
   SUM (WestSales[SalesAmount]), DATESINPERIOD (DateTime[DateKey], DATE(2016,17,14), -15, day)
)
  • Công thức DAX để tạo trường được tính toán để tính toán doanh số bán hàng quý đầu tiên năm 2016.

= CALCULATE (
   SUM (WestSales[SalesAmount]),DATESBETWEEN (DateTime[DateKey], DATE (2016,1,1), DATE (2016,3,31))
)
  • Công thức DAX để tạo một trường được tính toán lấy ngày đầu tiên khi bán hàng được thực hiện ở miền Tây cho ngữ cảnh hiện tại.

= FIRSTDATE (WestSales [SaleDateKey])
  • Công thức DAX để tạo một trường được tính toán lấy ngày cuối cùng khi bán hàng được thực hiện ở miền Tây cho ngữ cảnh hiện tại.

= LASTDATE (WestSales [SaleDateKey])
  • DAX Công thức tính toán các ngày trước ngày một năm trong ngữ cảnh hiện tại.

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