Học Power BI Day 18: Tìm hiểu về cách sử dụng hàm DATEADD và SAMEPERIODLASTYEAR để so sánh với cùng kỳ

Ngày đăng: 12/02/2022


Trong bài học Power BI Day 18 này, chúng mình sẽ hướng dẫn cách sử dụng hàm DATEADD và SAMEPERIODLASTYEAR.

Một yêu cầu phổ biến là so sánh một khoảng thời gian với cùng một khoảng thời gian trong năm, quý hoặc tháng trước. Bài thực hành sau đây với bộ dữ liệu Adventurework sẽ giải quyết bài toán đó!

Tháng / quý / năm trước có thể không đầy đủ; vì vậy để đạt được sự so sánh công bằng, việc so sánh nên xem xét một khoảng thời gian tương đương. Vì những lý do này, các phép tính được hiển thị trong phần này sử dụng cột được tính theo Date[DateWithSales] với công thức như sau:

DatesWithSales =
'Date'[Date] <= MAX ( Sales[Order Date] )

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ự!

———————————————————————————————————-

Datapot là Learning Partner và Certified Trainer chính thức của Microsoft Với đội ngũ chuyên gia giàu kinh nghiệm, Datapot đã đào tạo, tư vấn và triển khai các giải pháp về phân tích dữ liệu cho cũng như các công ty hàng đầu như Unilever, Airpay, Techcombank, MB Ageas Life, HB Lab, Toyota… cũng như tổ chức các Khóa học về Phân tích dữ liệu cho hơn 1000 học viên.

Hãy theo dõi Fanpage Datapot để cập nhật lịch khai giảng các khóa học sắp tới & tham khảo các thông tin bổ trợ về ngành dữ liệu bạn nhé! Ngoài ra, bạn còn có thể tham khảo các khóa học phân tích dữ liệu cho người mới bắt đầu tại đây.

Tham gia để được xem trước những video mới nhất.

  • Group Microsoft Certified: Data Analyst Associate Việt Nam (DA-100): https://www.facebook.com/groups/da100vn
  • Fanpage Datapot: https://www.facebook.com/DatapotAnalytics
  • Website Datapot: https://www.datapot.vn/

Chia sẻ bài viết này

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *