Hàm DATEADD trong Power BI DAX

You are viewing the article: Hàm DATEADD trong Power BI DAX at bostonenglish.edu.vn

Sau các bài viết về hàm DATESYTD() hay DATESMTD(), mình nhận được khá nhiều câu hỏi về những trường hợp đặc biệt mà yêu cầu nghiệp vụ đòi hỏi bạn phải tính các công thức trên một khoảng thời gian cụ thể. Ví dụ như tính tổng doanh thu của 2 tháng trước thay vì 1 tháng trước hay là so sánh cổ phiếu của hôm nay với giá tuần trước.

Tất nhiên, qua bài viết về sử dụng CALCULATE(), FILTER(), MAX() các bạn có thể dễ dàng làm điều này bằng cách xác định các khoảng thời gian theo ngày khởi đầu và ngày kết thúc. Tuy nhiên, làm thế nào để dễ dàng xác định các ngày này? Đừng lo nhé, vì DAX có một bộ hàm tính đơn giản hóa vấn đề này cho bạn. Hãy cùng tìm hiểu nào!

desk research là gì

desk research là gì

Hàm DATEADD trong Power BI DAX

Miêu tả

Hàm DATEADD giúp trả về 1 cột chứa các giá trị về thời gian (ngày, tháng, quý, năm) được chỉ định dựa theo 1 mốc thời gian có sẵn.

(DATE + ADD)

Cách dùng / cấu trúc

DATEADD( <Thời điểm làm mốc>, <Khoảng cách thời gian so với mốc>, <Loại đơn vị thời gian> )

Tham số

<Thời điểm làm mốc> : Thường là 1 cột chứa giá trị thời gian để làm mốc (căn cứ)

<Khoảng cách thời gian so với mốc> : Là số nguyên. Nếu nhập số >0 sẽ cho ra thời gian tăng thêm (sau thời gian mốc), số <0 sẽ cho thời gian giảm đi (trước thời gian mốc) một khoảng tương ứng theo loại đơn vị thời gian được chỉ định.

<Loại đơn vị thời gian> : Là các ký tự đại diện cho đơn vị thời gian (nhập bằng tiếng anh): year (năm), quarter (quý), month (tháng), day (ngày)

Giá trị trả về

Là cột chứa các giá trị thời gian (đủ ngày, tháng, năm)

Giá trị thời gian mới sẽ cách thời điểm mốc bằng số ngày (hoặc số tháng, số quý, số năm) tùy theo giá trị được chỉ định trong hàm.

Lưu ý

Cột làm mốc phải chứa dữ liệu là dạng ngày tháng (đủ ngày, tháng, năm).

Ví dụ

Công thức sau đây giúp tạo ra giá trị ngày sau 1 năm của các ngày trong cột NgayBan của bảng dữ liệu BanHang:

Năm bán hàng =DATEADD( BanHang[ NgayBan], 1, year )

Công thức sau đây giúp xác định thời điểm sau 60 ngày (ngày đến hạn) kể từ ngày ký hợp đồng trong cột NgayKy của bảng dữ liệu DanhSach:

Ngày đến hạn =DATEADD( DanhSach[NgayKy], 60, day)

Tìm hiểu DATEADD(): Hàm giúp dịch chuyển khoảng thời gian

1/ Hàm DATEADD(), Giải Pháp Dịch Chuyển Khoảng Thời Gian Theo Ngày, Tháng, Năm

Hàm đầu tiên mình muốn giới thiệu với mọi người chính là DATEADD(). Có thể nói đây là hàm được cộng đồng PowerBI vô cùng ưa chuộng bởi tính linh hoạt và dễ sử dụng của nó. Hàm DATEADD() trả về một bảng có chứa cột ngày, được dịch chuyển tiến hoặc lùi theo số lượng khoảng thời gian được chỉ định từ các ngày trong bối cảnh hiện tại. Bạn có thể tiến lùi theo ngày, tháng, quý hoặc năm. Hãy cùng quan sát cấu trúc của DATEADD( 

Để sử dụng hàm DATEADD, bạn sẽ phải đưa vào:

  • Một trường thời gian DATE để sử dụng là ngày bắt đầu
  • Số lượng khoảng thời gian dịch chuyển: 1, 2, ….
  • Xác định khoảng thời gian bạn muốn dịch chuyển (Day, Month, Quarter, Year)

Hãy lấy ví dụ, bạn muốn sử dụng DATEADD để tính doanh thu của năm ngoái, chúng ta sẽ dung công thức:

Total sales 1 year back = CALCULATE([Total Sales], DATEADD(‘Date'[Date],-1, YEAR))

2/ Sử Dụng DATEADD() Để So Sánh Doanh Thu Giữa Các Tháng

Giờ hãy thử tính doanh thu của 2 tháng trước tháng hiện tại xem, ta chỉ việc thay đổi khoảng thời gian mà thôi:

Total Sales 2 months back = CALCULATE([Total Sales], DATEADD(‘Date'[Date], – 2, MONTH))

3/ Sử Dụng DATEADD() Để So Sánh Doanh Thu Giữa Các Quý

Một trong những so sánh hay được đặt ra đó là liệu chúng ta có làm tốt hơn quý trước hay không? Hãy thử tính doanh thu của các tháng so với cùng thời điểm quý trước nhé.

Sales 1 quarter back = CALCULATE([Total Sales], DATEADD(‘Date'[Date], – 1, QUARTER))

4/ Sử Dụng Hàm DATEADD() Để So Sánh Giá Stock Giữa Các Ngày

Giả sử, bạn đang đầu tư chứng khoán, và muốn tìm hiểu giá cổ phiểu của Tesla và xem xem tình hình cổ phiếu giữa hiện tại với một tuần trước đó, DATEADD() giúp bạn dễ dàng tính và làm điều này. Chúng ta sẽ dùng công thức sau để tính giá cổ phiếu của 7 ngày trước.

Price a week ago = CALCULATE([Price today],DATEADD(TSLA[Date], – 7, DAY))

Cú pháp

Dateadd ( khoảng thời gian, số, ngày )

Cú pháp hàm Dateadd có các đối số sau đây:

Đối số Mô tả
interval Bắt buộc. Biểu thức chuỗi là khoảng thời gian bạn muốn thêm.
number Bắt buộc. Biểu thức số là số khoảng thời gian bạn muốn thêm. Có thể dương (để lấy ngày trong tương lai) hoặc âm (để lấy ngày trong quá khứ).
ngày Bắt buộc. Biến thể (ngày) hoặc ngày biểu thị chữ cái mà khoảng được thêm vào.

Mẹo:  Trong Access 2010, bộ dựng biểu thức có thông minh, vì vậy bạn có thể thấy các đối số của biểu thức yêu cầu của bạn.

Thiết đặt

Khoảng thời gian tham đối có các thiết đặt này:

Thiết đặt Mô tả
yyyy Năm
q Quý
m Tháng
y Ngày trong năm
d Ngày
w Weekday
ww Tuần
h Giờ
n Phút
. Giây

Chú thích

Bạn có thể sử dụng hàm Dateadd để thêm hoặc trừ một khoảng thời gian đã xác định từ một ngày. Ví dụ, bạn có thể sử dụng Dateadd để tính toán ngày 30 ngày kể từ ngày hôm nay hoặc thời gian 45 phút từ lúc này.

Để thêm ngày vào ngày, bạn có thể sử dụng ngày trong năm (“y” ), ngày(“d”) hoặc ngày trong tuần (“w”).

Hàm Dateadd sẽ không trả về một ngày không hợp lệ. Ví dụ sau đây sẽ thêm một tháng vào 31 tháng 1:

DateAdd("m", 1, "31-Jan-95")

Trong trường hợp này, Dateadd trả về 28-feb-95, không phải 31-feb-95. Nếu date là 31-Jan-96, nó trả về 29-Feb-96 vì 1996 là năm nhuận.

Nếu ngày tính toán sẽ đứng trước năm 100 (nghĩa là, bạn trừ nhiều năm hơn là trong ngày), lỗi xảy ra.

Nếu số không phải là giá trị dài, nó sẽ được làm tròn đến số nguyên gần nhất trước khi được đánh giá.

Lưu ý:  Đối với ngày, nếu thiết đặt thuộc tính lịch là Gregorian, ngày cung cấp phải được dương lịch. Nếu lịch là Hijri, ngày đã cung cấp phải là Hijri. Nếu giá trị tháng là tên, tên phải nhất quán với thiết đặt thuộc tính lịch hiện tại. Để giảm thiểu khả năng tên tháng xung đột với thiết đặt thuộc tính lịch hiện tại, nhập giá trị tháng số (định dạng ngày ngắn).

Ví dụ về truy vấn

Biểu thức Kết quả
CHỌN DateAdd (“YYYY”, 1, [DateofSale]) là Expr1 từ ProductSales; Trả về kết quả bằng cách thêm 1 năm vào giá trị ngày của trường “DateofSale”.
CHỌN DateAdd (“YYYY”,-1, [DateofSale]) là Expr1 từ ProductSales; Trả về kết quả bằng cách trừ 1 năm vào giá trị ngày của trường “DateofSale”.
CHỌN DateAdd (“d”, 10, [DateofSale]) như NewDate từ ProductSales; Trả về kết quả trong cột “NewDate” bằng cách thêm 10 ngày vào giá trị ngày của trường “DateofSale”.
CHỌN DateAdd (“WW”,-1, [DateofSale]) như NewDate từ ProductSales; Trả về kết quả trong cột “NewDate” bằng cách trừ 1 tuần (7 ngày) từ giá trị ngày của trường “DateofSale”.

Ví dụ về VBA

Lưu ý: Các ví dụ sau thể hiện cách sử dụng hàm này trong mô-đun Visual Basic for Applications (VBA). Để biết thêm thông tin về cách làm việc với VBA, chọn Tham khảo dành cho Nhà phát triển trong danh sách thả xuống cạnh Tìm kiếm, rồi nhập một hoặc nhiều từ vào hộp tìm kiếm.

Ví dụ này sẽ mất một ngày như đầu vào và sử dụng hàm Dateadd để hiển thị một ngày tương ứng là một số tháng đã xác định trong tương lai.

Dim FirstDate As Date    ' Declare variables.
Dim IntervalType As String
Dim Number As Integer
Dim Msg
IntervalType = "m"    ' "m" specifies months as interval.
FirstDate = InputBox("Enter a date")
Number = InputBox("Enter number of months to add")
Msg = "New date: " & _
    DateAdd(IntervalType, Number, FirstDate)
MsgBox Msg

Tăng trưởng hàng năm

Tăng trường năm là ta đi so sánh giữa một thời kỳ với thời kỳ tương đương của năm trước. Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009. Vì lý do này, Sales PY (Sale Previous Year) hiển thị các con số liên quan đến năm 2008 chỉ xem xét các giao dịch trước ngày 15 tháng 8 năm 2008.

Hình dưới đây cho thấy Sales Amount của tháng 8 năm 2008 là 721.560,95, trong khi Sales PY cho Tháng 8 năm 2009 trả về 296.529,51 vì biện pháp chỉ xem xét doanh số bán hàng đến ngày 15 tháng 8 năm 2008.

hàm DATEADD và SAMEPERIOUSLASTYEAR

Đối với tháng 8 năm 2009, PY bán hàng hiển thị số tiền cho ngày 1-15 tháng 8 năm 2008, vì không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Sales PY sử dụng hàm DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh hợp lý giữa kỳ trước với dữ liệu. Mức tăng trưởng hàng năm được tính bằng Sales YOY so với cùng kỳ và theo tỷ lệ phần trăm Sales YOY % so với cùng kỳ năm trước. Cả hai thước đo đều sử dụng PY bán hàng để chỉ xem xét các ngày tính đến ngày 15 tháng 8 năm 2009:

Measure trong bảng Sales table

Sales PY :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, YEAR ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales YOY :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PY]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales YOY % :=

DIVIDE (

[Sales YOY],

[Sales PY]

)

Sales PY cũng có thể được viết bằng SAMEPERIODLASTYEAR. SAMEPERIODLASTYEAR dễ đọc hơn, nhưng nó không mang lại bất kỳ lợi ích hiệu suất nào. Điều này là do bên trong, nó được dịch sang hàm DATEADD được sử dụng trong các công thức trước đó:

Measure in the Sales table

Sales PY (2) :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

SAMEPERIODLASTYEAR ( 'Date'[Date] ),

'Date'[DateWithSales] = TRUE

)

)

)

Tăng trưởng hàng quý

So sánh hàng quý là so sánh với một kỳ với kỳ tương đương trong quý trước.

Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009, tức là nửa đầu của quý thứ ba năm 2009. Do đó, Sales PQ (Sales Past Quarter) cho tháng 8 năm 2009 (tháng thứ hai của quý thứ ba) cho thấy doanh số bán hàng cho đến ngày 15 tháng 5 năm 2009, là nửa đầu của tháng thứ hai của quý trước. Hình dưới đây cho thấy Sales Amount của tháng 5 năm 2009 là 1.067,165,23, trong khi Sales PQ cho tháng 8 năm 2009 trả về 435,306,10, chỉ tính đến doanh số bán hàng được thực hiện trước ngày 15 tháng 5 năm 2009.

Với tháng 8 năm 2009, Sales PQ cho biết số tiền cho ngày 1-15 tháng 5 năm 2009; thực sự, không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Tương tự, Sales PQ sử dụng DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh công bằng với kỳ trước cùng với dữ liệu. Mức tăng trưởng hàng quý so với quý trước được tính bằng số tiền trong Sales QOQ và tỷ lệ phần trăm trong Sales QOQ %. Cả hai biện pháp sử dụng PQ bán hàng để đảm bảo so sánh công bằng như nhau:

Measure trong bảng Sales table

Sales PQ :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, QUARTER ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales QOQ :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PQ]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales QOQ % :=

DIVIDE (

[Sales QOQ],

[Sales PQ]

)

Ngoài ra, bạn nên thực hành tính toán tăng trưởng hàng tháng với concept tương tự!

Tăng trưởng hàng năm

Tăng trường năm là ta đi so sánh giữa một thời kỳ với thời kỳ tương đương của năm trước. Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009. Vì lý do này, Sales PY (Sale Previous Year) hiển thị các con số liên quan đến năm 2008 chỉ xem xét các giao dịch trước ngày 15 tháng 8 năm 2008.

Hình dưới đây cho thấy Sales Amount của tháng 8 năm 2008 là 721.560,95, trong khi Sales PY cho Tháng 8 năm 2009 trả về 296.529,51 vì biện pháp chỉ xem xét doanh số bán hàng đến ngày 15 tháng 8 năm 2008.

hàm DATEADD và SAMEPERIOUSLASTYEAR

Đối với tháng 8 năm 2009, PY bán hàng hiển thị số tiền cho ngày 1-15 tháng 8 năm 2008, vì không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Sales PY sử dụng hàm DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh hợp lý giữa kỳ trước với dữ liệu. Mức tăng trưởng hàng năm được tính bằng Sales YOY so với cùng kỳ và theo tỷ lệ phần trăm Sales YOY % so với cùng kỳ năm trước. Cả hai thước đo đều sử dụng PY bán hàng để chỉ xem xét các ngày tính đến ngày 15 tháng 8 năm 2009:

Measure trong bảng Sales table

Sales PY :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, YEAR ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales YOY :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PY]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales YOY % :=

DIVIDE (

[Sales YOY],

[Sales PY]

)

Sales PY cũng có thể được viết bằng SAMEPERIODLASTYEAR. SAMEPERIODLASTYEAR dễ đọc hơn, nhưng nó không mang lại bất kỳ lợi ích hiệu suất nào. Điều này là do bên trong, nó được dịch sang hàm DATEADD được sử dụng trong các công thức trước đó:

See also  Người Dân Tiếng Anh Là Gì | Bostonenglish.edu.vn

Measure in the Sales table

Sales PY (2) :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

SAMEPERIODLASTYEAR ( 'Date'[Date] ),

'Date'[DateWithSales] = TRUE

)

)

)

Tăng trưởng hàng quý

So sánh hàng quý là so sánh với một kỳ với kỳ tương đương trong quý trước.

Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009, tức là nửa đầu của quý thứ ba năm 2009. Do đó, Sales PQ (Sales Past Quarter) cho tháng 8 năm 2009 (tháng thứ hai của quý thứ ba) cho thấy doanh số bán hàng cho đến ngày 15 tháng 5 năm 2009, là nửa đầu của tháng thứ hai của quý trước. Hình dưới đây cho thấy Sales Amount của tháng 5 năm 2009 là 1.067,165,23, trong khi Sales PQ cho tháng 8 năm 2009 trả về 435,306,10, chỉ tính đến doanh số bán hàng được thực hiện trước ngày 15 tháng 5 năm 2009.

Với tháng 8 năm 2009, Sales PQ cho biết số tiền cho ngày 1-15 tháng 5 năm 2009; thực sự, không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Tương tự, Sales PQ sử dụng DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh công bằng với kỳ trước cùng với dữ liệu. Mức tăng trưởng hàng quý so với quý trước được tính bằng số tiền trong Sales QOQ và tỷ lệ phần trăm trong Sales QOQ %. Cả hai biện pháp sử dụng PQ bán hàng để đảm bảo so sánh công bằng như nhau:

Measure trong bảng Sales table

Sales PQ :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, QUARTER ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales QOQ :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PQ]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales QOQ % :=

DIVIDE (

[Sales QOQ],

[Sales PQ]

)

Ngoài ra, bạn nên thực hành tính toán tăng trưởng hàng tháng với concept tương tự!

Tăng trưởng hàng năm

Tăng trường năm là ta đi so sánh giữa một thời kỳ với thời kỳ tương đương của năm trước. Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009. Vì lý do này, Sales PY (Sale Previous Year) hiển thị các con số liên quan đến năm 2008 chỉ xem xét các giao dịch trước ngày 15 tháng 8 năm 2008.

Hình dưới đây cho thấy Sales Amount của tháng 8 năm 2008 là 721.560,95, trong khi Sales PY cho Tháng 8 năm 2009 trả về 296.529,51 vì biện pháp chỉ xem xét doanh số bán hàng đến ngày 15 tháng 8 năm 2008.

hàm DATEADD và SAMEPERIOUSLASTYEAR

Đối với tháng 8 năm 2009, PY bán hàng hiển thị số tiền cho ngày 1-15 tháng 8 năm 2008, vì không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Sales PY sử dụng hàm DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh hợp lý giữa kỳ trước với dữ liệu. Mức tăng trưởng hàng năm được tính bằng Sales YOY so với cùng kỳ và theo tỷ lệ phần trăm Sales YOY % so với cùng kỳ năm trước. Cả hai thước đo đều sử dụng PY bán hàng để chỉ xem xét các ngày tính đến ngày 15 tháng 8 năm 2009:

Measure trong bảng Sales table

Sales PY :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, YEAR ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales YOY :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PY]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales YOY % :=

DIVIDE (

[Sales YOY],

[Sales PY]

)

Sales PY cũng có thể được viết bằng SAMEPERIODLASTYEAR. SAMEPERIODLASTYEAR dễ đọc hơn, nhưng nó không mang lại bất kỳ lợi ích hiệu suất nào. Điều này là do bên trong, nó được dịch sang hàm DATEADD được sử dụng trong các công thức trước đó:

Measure in the Sales table

Sales PY (2) :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

SAMEPERIODLASTYEAR ( 'Date'[Date] ),

'Date'[DateWithSales] = TRUE

)

)

)

Tăng trưởng hàng quý

So sánh hàng quý là so sánh với một kỳ với kỳ tương đương trong quý trước.

Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009, tức là nửa đầu của quý thứ ba năm 2009. Do đó, Sales PQ (Sales Past Quarter) cho tháng 8 năm 2009 (tháng thứ hai của quý thứ ba) cho thấy doanh số bán hàng cho đến ngày 15 tháng 5 năm 2009, là nửa đầu của tháng thứ hai của quý trước. Hình dưới đây cho thấy Sales Amount của tháng 5 năm 2009 là 1.067,165,23, trong khi Sales PQ cho tháng 8 năm 2009 trả về 435,306,10, chỉ tính đến doanh số bán hàng được thực hiện trước ngày 15 tháng 5 năm 2009.

Với tháng 8 năm 2009, Sales PQ cho biết số tiền cho ngày 1-15 tháng 5 năm 2009; thực sự, không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Tương tự, Sales PQ sử dụng DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh công bằng với kỳ trước cùng với dữ liệu. Mức tăng trưởng hàng quý so với quý trước được tính bằng số tiền trong Sales QOQ và tỷ lệ phần trăm trong Sales QOQ %. Cả hai biện pháp sử dụng PQ bán hàng để đảm bảo so sánh công bằng như nhau:

Measure trong bảng Sales table

Sales PQ :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, QUARTER ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales QOQ :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PQ]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales QOQ % :=

DIVIDE (

[Sales QOQ],

[Sales PQ]

)

Ngoài ra, bạn nên thực hành tính toán tăng trưởng hàng tháng với concept tương tự!

Tăng trưởng hàng năm

Tăng trường năm là ta đi so sánh giữa một thời kỳ với thời kỳ tương đương của năm trước. Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009. Vì lý do này, Sales PY (Sale Previous Year) hiển thị các con số liên quan đến năm 2008 chỉ xem xét các giao dịch trước ngày 15 tháng 8 năm 2008.

Hình dưới đây cho thấy Sales Amount của tháng 8 năm 2008 là 721.560,95, trong khi Sales PY cho Tháng 8 năm 2009 trả về 296.529,51 vì biện pháp chỉ xem xét doanh số bán hàng đến ngày 15 tháng 8 năm 2008.

hàm DATEADD và SAMEPERIOUSLASTYEAR

Đối với tháng 8 năm 2009, PY bán hàng hiển thị số tiền cho ngày 1-15 tháng 8 năm 2008, vì không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Sales PY sử dụng hàm DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh hợp lý giữa kỳ trước với dữ liệu. Mức tăng trưởng hàng năm được tính bằng Sales YOY so với cùng kỳ và theo tỷ lệ phần trăm Sales YOY % so với cùng kỳ năm trước. Cả hai thước đo đều sử dụng PY bán hàng để chỉ xem xét các ngày tính đến ngày 15 tháng 8 năm 2009:

Measure trong bảng Sales table

Sales PY :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, YEAR ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales YOY :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PY]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales YOY % :=

DIVIDE (

[Sales YOY],

[Sales PY]

)

Sales PY cũng có thể được viết bằng SAMEPERIODLASTYEAR. SAMEPERIODLASTYEAR dễ đọc hơn, nhưng nó không mang lại bất kỳ lợi ích hiệu suất nào. Điều này là do bên trong, nó được dịch sang hàm DATEADD được sử dụng trong các công thức trước đó:

See also  Hàm SUMIF trong excel, hàm tính tổng theo một điều kiện cho trước | Bostonenglish.edu.vn

Measure in the Sales table

Sales PY (2) :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

SAMEPERIODLASTYEAR ( 'Date'[Date] ),

'Date'[DateWithSales] = TRUE

)

)

)

Tăng trưởng hàng quý

So sánh hàng quý là so sánh với một kỳ với kỳ tương đương trong quý trước.

Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009, tức là nửa đầu của quý thứ ba năm 2009. Do đó, Sales PQ (Sales Past Quarter) cho tháng 8 năm 2009 (tháng thứ hai của quý thứ ba) cho thấy doanh số bán hàng cho đến ngày 15 tháng 5 năm 2009, là nửa đầu của tháng thứ hai của quý trước. Hình dưới đây cho thấy Sales Amount của tháng 5 năm 2009 là 1.067,165,23, trong khi Sales PQ cho tháng 8 năm 2009 trả về 435,306,10, chỉ tính đến doanh số bán hàng được thực hiện trước ngày 15 tháng 5 năm 2009.

Với tháng 8 năm 2009, Sales PQ cho biết số tiền cho ngày 1-15 tháng 5 năm 2009; thực sự, không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Tương tự, Sales PQ sử dụng DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh công bằng với kỳ trước cùng với dữ liệu. Mức tăng trưởng hàng quý so với quý trước được tính bằng số tiền trong Sales QOQ và tỷ lệ phần trăm trong Sales QOQ %. Cả hai biện pháp sử dụng PQ bán hàng để đảm bảo so sánh công bằng như nhau:

Measure trong bảng Sales table

Sales PQ :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, QUARTER ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales QOQ :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PQ]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales QOQ % :=

DIVIDE (

[Sales QOQ],

[Sales PQ]

)

Ngoài ra, bạn nên thực hành tính toán tăng trưởng hàng tháng với concept tương tự!

TÌM HIỂU VỀ CÁCH SỬ DỤNG HÀM DATEADD VÀ SAMEPERIOUSLASTYEAR ĐỂ SO SÁNH VỚI CÙNG KỲ

Tăng trưởng hàng năm

Tăng trường năm là ta đi so sánh giữa một thời kỳ với thời kỳ tương đương của năm trước. Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009. Vì lý do này, Sales PY (Sale Previous Year) hiển thị các con số liên quan đến năm 2008 chỉ xem xét các giao dịch trước ngày 15 tháng 8 năm 2008.

Hình dưới đây cho thấy Sales Amount của tháng 8 năm 2008 là 721.560,95, trong khi Sales PY cho Tháng 8 năm 2009 trả về 296.529,51 vì biện pháp chỉ xem xét doanh số bán hàng đến ngày 15 tháng 8 năm 2008.

hàm DATEADD và SAMEPERIOUSLASTYEAR

Đối với tháng 8 năm 2009, PY bán hàng hiển thị số tiền cho ngày 1-15 tháng 8 năm 2008, vì không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Sales PY sử dụng hàm DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh hợp lý giữa kỳ trước với dữ liệu. Mức tăng trưởng hàng năm được tính bằng Sales YOY so với cùng kỳ và theo tỷ lệ phần trăm Sales YOY % so với cùng kỳ năm trước. Cả hai thước đo đều sử dụng PY bán hàng để chỉ xem xét các ngày tính đến ngày 15 tháng 8 năm 2009:

Measure trong bảng Sales table

Sales PY :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, YEAR ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales YOY :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PY]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales YOY % :=

DIVIDE (

[Sales YOY],

[Sales PY]

)

Sales PY cũng có thể được viết bằng SAMEPERIODLASTYEAR. SAMEPERIODLASTYEAR dễ đọc hơn, nhưng nó không mang lại bất kỳ lợi ích hiệu suất nào. Điều này là do bên trong, nó được dịch sang hàm DATEADD được sử dụng trong các công thức trước đó:

Measure in the Sales table

Sales PY (2) :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

SAMEPERIODLASTYEAR ( 'Date'[Date] ),

'Date'[DateWithSales] = TRUE

)

)

)

Tăng trưởng hàng quý

So sánh hàng quý là so sánh với một kỳ với kỳ tương đương trong quý trước.

Trong ví dụ này, dữ liệu có sẵn cho đến ngày 15 tháng 8 năm 2009, tức là nửa đầu của quý thứ ba năm 2009. Do đó, Sales PQ (Sales Past Quarter) cho tháng 8 năm 2009 (tháng thứ hai của quý thứ ba) cho thấy doanh số bán hàng cho đến ngày 15 tháng 5 năm 2009, là nửa đầu của tháng thứ hai của quý trước. Hình dưới đây cho thấy Sales Amount của tháng 5 năm 2009 là 1.067,165,23, trong khi Sales PQ cho tháng 8 năm 2009 trả về 435,306,10, chỉ tính đến doanh số bán hàng được thực hiện trước ngày 15 tháng 5 năm 2009.

Với tháng 8 năm 2009, Sales PQ cho biết số tiền cho ngày 1-15 tháng 5 năm 2009; thực sự, không có dữ liệu nào sau ngày 15 tháng 8 năm 2009.

Tương tự, Sales PQ sử dụng DATEADD và bộ lọc Date[DateWithSales] để đảm bảo so sánh công bằng với kỳ trước cùng với dữ liệu. Mức tăng trưởng hàng quý so với quý trước được tính bằng số tiền trong Sales QOQ và tỷ lệ phần trăm trong Sales QOQ %. Cả hai biện pháp sử dụng PQ bán hàng để đảm bảo so sánh công bằng như nhau:

Measure trong bảng Sales table

Sales PQ :=

IF (

[ShowValueForDates],

CALCULATE (

[Sales Amount],

CALCULATETABLE (

DATEADD ( 'Date'[Date], -1, QUARTER ),

'Date'[DateWithSales] = TRUE

)

)

)

Measure trong bảng Sales table

Sales QOQ :=

VAR ValueCurrentPeriod = [Sales Amount]

VAR ValuePreviousPeriod = [Sales PQ]

VAR Result =

IF (

NOT ISBLANK ( ValueCurrentPeriod ) && NOT ISBLANK ( ValuePreviousPeriod ),

ValueCurrentPeriod - ValuePreviousPeriod

)

RETURN

Result

Measure trong bảng Sales table

Sales QOQ % :=

DIVIDE (

[Sales QOQ],

[Sales PQ]

)

Ngoài ra, bạn nên thực hành tính toán tăng trưởng hàng tháng với concept tương tự!

Kết Luận

Với DATEADD(), chúng ta có thể dễ dàng vượt ra khỏi hạn chế tính giá trị của năm nay, năm ngoái hoặc tháng này so với tháng trước bằng việc dịch chuyển khoảng thời gian bằng bất cứ giá trị khoảng nào. Từ đây, ta có thể có được các góc nhìn khác nhau và linh hoạt hơn trong báo cáo.

Tuy nhiên, bởi vì DATEADD() được sử dụng như một hàm Time Intelligence nên nó dựa vào bảng ngày đầy đủ và dung bảng ngày này để xác định các khoảng thời gian. Điều này sẽ gây ra việc khó khăn nếu chúng ta tính các giá trị trung bình khi cần thay đổi khoảng thời gian với những ngày không có giá trị. Ví dụ, giá cổ phiếu luôn chỉ có vào những ngày trong tuần, vì vậy nếu cần tính giá trung bình của cổ phiếu trong 5 ngày trước đó, chúng ta sẽ gặp phải vấn đề vì khoảng thời gian 5 ngày với DATEADD() sẽ luôn không đổi và bao gồm cả những ngày cuối tuần này. Để xử lí vấn đề này, hãy đón đọc những bài viết tiếp theo của bọn mình nhé.

Bostonenglish.edu.vn cũng giúp giải đáp những vấn đề sau đây:

  • Hàm DATEADD trong Access
  • Hàm DATEADD trong SQL
  • DateAdd VBA
  • Hàm DateAdd trong Excel
  • Hàm DATESMTD
  • DATEADD DAX
  • DATEDIFF trong SQL
  • Hàm TOTALYTD
See more articles in the category: Wiki

Leave a Reply