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!
Mục lục
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))
5/ 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é.
Nguồn: Internet