Chắc hẳn đối với những người làm báo cáo đều đã từng phải phân tích, theo dõi và so sánh các chỉ số dựa trên các khoảng thời gian khác nhau. Và với PowerBI, Time Intelligence chính là những bộ tính DAX giúp thực hiện giải quyết những phép tính này (ví dụ cùng kỳ năm ngoái, tháng trước, lũy kế năm, …)
Để mở đầu cho chuỗi bài viết về DAX cũng như Time Intelligence, mình sẽ bật mí cho các bạn một mấu chốt quan trọng để hiểu rõ các công thức và khái niệm trong DAX Time Intelligence. Dó chính là Date Dimension và các cách sử dụng giữa Default hoặc Custom trong Power BI. Vậy tại sao nó lại quan trọng?
Date Dimension là một trong những Role-Playing Dimension (bảng danh mục với nhiều liên kết giữa nó và các bảng khác). Ví dụ, cùng bảng Date có thể liên kết với dữ liệu bán hàng OrderSales qua trường OrderDay (ngày đặt hàng), ShipDay (ngày gửi hàng) hay CloseDay (ngày đóng đơn hàng). Hơn nữa chắc hẳn có nhiều bạn thắc mắc tại sao khi sử dụng các công thức DAX đúng để tính các khoảng thời gian khác nhau như khi trả về trên bảng dữ liệu lại không chính xác hay bị số trả về lệch với khoảng thời gian cần tính. Chúng ta sẽ cùng giải đáp những bí mật này bằng cách tìm hiểu cách thức hoạt đông của DAX trên các trường Date và trong các trường hợp được cài đặt là default Date Dimension hoặc Custom Date Dimension ra sao.
Mục lục
1. Default Vs Custom Date Dimension
Default Date Dimension được định sẵn tự động trong Power BI Desktop và bạn có thể tùy chỉnh option này ở Data Load cho Global (tất cả các báo cáo Desktop) hoặc Current File (cho báo cáo này thôi). Lựa chọn này được đặt sẵn on và khi có nó, các trường dữ liệu dạng Date của chúng ta sẽ được đi kèm theo một bảng Date Hierarchy tạo sẵn chính là Default Date Dimension.
Custom Date Dimension được tạo ra bởi nhiều cách có thể dung M hoặc DAX và tùy chỉnh dựa theo năm kinh doanh hay các thông tin khác như ngày nhỉ, ngày lễ … Ví dụ dưới đây sử dụng DAX để tạo ra một bảng Date trong một range nhất định cùng những trường bổ sung khác. Từ đó bạn có thể tạo ra các Custom Date Hierarchy để sử dụng làm Date Dimension cho các công thức tính.
2. Default Date Dimension, Những Điều Cần Chú Ý:
a. Khi bật chế độ Default Date Dimension, Power BI tự động tạo ra những bảng ẩn với mọi trường định dạng Date và xuất hiện hierarchy gồm Year/Quarter/Month/Day. Kể cả khi bạn tạo một trường mới từ các trường khác và định dạng date thì PowerBI sẽ tự động tạo một date hierarchy dimension ở các trường đó và đây thực chất là một bảng ẩn dựa trên trường Date đó.
b. Default Date Dimension không thể tùy chỉnh. Bảng Default Date Hierarchy tạo bởi Power BI không thể tùy chỉnh và có định dạng dưới đây. Bên trái là 4 trường cơ bản trong Date Hierarchy sử dụng trong tables và các visual như row content. Bên phải là bảng ẩn bao gồm các trường có thể sử dụng bổ sung trong công thức.
c. Default Date Dimension tiêu thụ bộ nhớ như những bảng bình thường khác. Mỗi bảng ẩn được tạo ra từ các trường Date cũng sẽ giống các bảng dữ liệu khác trong PowerBI, chiếm một phần bộ nhớ trong báo cáo của bạn. Khoảng thời gian của các bản date này dựa theo range của dữ liệu bạn sử dụng và vì chúng được bật lên cho các trường Date trong file nên số lượng bộ nhớ tiêu thụ có thể sẽ ảnh hưởng đến hiệu suất báo cáo. Vì vậy khi sử dụng Default Date Dimension, mình khuyên các bạn nên xóa bới những trường Date không sử dụng đến.
d. Cách sử dụng Default Date Dimension với DAX Time Intelligence
Khi sử dụng một trường Date trong DAX với các công thức Time Intelligence, bạn sẽ có hai cách để sử dụng trường Date đó trong bảng, đó là chọn sử dụng trường Date đó như chính giá trị của nó hoặc chọn show Date Hierarchy tức là sử dụng Default Date Dimension.
Lấy ví dụ công thức tính tổng lũy kế năm dựa trên trường OrderDate dưới đây. Khi sử dụng công thức này với trường OrderDate ở dạng ngày (không sử dụng Hierarchy), ta có thể thấy công thức trả về chính xác bởi vì đang nhìn trực tiếp trên trường OrderDate theo mỗi ngày.
Tuy nhiên nếu các bạn muốn sử dụng Date Hierarchy hay Default Date Dimension thì các bạn chú ý chúng ta phải bổ sung thêm .[Date] ở đằng sau OrderDate như dưới đây:
Vì vậy công thức trước nếu áp dụng với Default Date Dimension sẽ trở nên không chính xác.
Vậy tại sao lại phải thêm .[Date] và đến đây chắc hẳn sẽ có bạn thắc mắc thình thoảng đánh công thức DAX lại xuất hiện .[Date] đằng sau, thình thoảng lại không mà không rõ nó chỉ đến cái gì? Thật ra khi bạn sử dụng Date Hierarchy thì bạn sẽ thấy xuất hiện những lựa chọn sau khi gõ một cột công thức gồm trường DATE. Các lựa chọn giá trị chính là các trường định sẵn trên Default Date Dimension để trả về giá trị đơn vị thời gian bạn đang nhìn trong công thức đó. Ví dụ sử dụng Date ở trường hợp này vì công thức TotalYTD cần sử dụng trường DATE là ngày nên sử dụng .[Date] giúp truy cập đến trường Date của bảng ẩn Date hierarchy đó.
3. Custom Date Dimension, Những Điều Cần Chú Ý:
a. Tạo Custom Date Dimension
Có nhiều cách để tạo Date Dimension, bạn có thể dung DAX như ví dụ trên, dung Power Query để tạo ra một bảng Date riêng với những trường sử dụng thành hierarchy tự do. Đây cũng là cách mà mọi người thường dung vì hoặc là database có sẵn bảng Date định dạng chuẩn làm Dimension Table. Các bạn cũng nên chú ý khi tạo một bảng Date Dimension riêng vào liên kết với bảng SalesOrder có relationship là OrderDate, các bạn sẽ thấy trường OrderDate trong bảng SalesOrder mất đi kí hiệu trường Date và Date Hierarchy. Lí do vì trường OrderDate giờ sẽ được thay thế bởi Date ở Date table làm Date Dimension vì vậy các bạn có thể dấu trường này đi.
b. Đinh dạng Date Table (Mark as Date Table)
Để sử dụng Date hierarchy trong trường hợp này một cách thoải mái nhất, các bạn nên để ý tính năng “Mark as Date Table”. Sử dụng tính năng này, Power BI sẽ tự động xác nhận bảng đó là bảng Date Table và bạn không cần lo lắng sử dụng .[Date] hay không nữa vì chỉ đơn giản sử dụng trường Date bạn sẽ ra kết quả chính xác.
Sau khi cài đặt bạn sẽ thấy trường Date thay đổi kí hiệu và không còn show Date Hierarchy ở đây nữa.
4. Tổng Kết Và Nhận Định
Sau những ví dụ trên, hi vọng các bạn có thể hiểu được sự khác biệt giữa hai khác niệm Default Date Dimension và Custom Date Dimension cũng như việc dung Date Hierarchy hay giá trị ngày của trường Date. Giờ đây chúng ta chỉ cần đưa ra lựa chọn chính xác cho từng tình huống nghiệm vụ. Đa số các bạn sẽ rơi vào việc sử dụng Custom Date Dimension từ một Date table vì nó bao gồm sẵn từ cơ sở dữ liệu và đây cũng là cách tối ưu nhất khi tính toán các công thức Time Intelligence. Tuy nhiên, nếu bạn gặp phải trường hợp cần sử dụng Date Hierarchy ở các trường Date khác mà k thể liên kết được với bảng Date table (vì chỉ có duy nhất một active relationship), bạn có thể dung ngay trường ngay đó trong bảng fact với Default Date hierarchy để tiết kiệm thời gian. Gợi ý của mình đó là nếu muốn làm nhanh và sử dụng trường từ cùng bảng dữ liệu thì có thể dung Default Date Dimension và với nhu cầu cao hơn chặt chẽ hơn các bạn nên cân nhắc Custom Date Dimension nhé.
Hãy đón chờ các bài viết tiếp theo để hiểu sâu hơn về DAX và cách Power BI vận hành nha.