Với bài viết này, KPIM sẽ giới thiệu về khái niệm Dimension trong Power BI, và tầm quan trọng của nó trong quá trình phân tích dữ liệu. Chúng ta sẽ tìm hiểu về thiết kế, xây dựng, và sử dụng trong Power BI để tạo ra các báo cáo và trực quan hóa dữ liệu mạnh mẽ và linh hoạt.

Giới thiệu về Dimension trong Power BI

Trong Power BI, Dimension (Kích thước) là một khái niệm quan trọng trong việc xây dựng mô hình dữ liệu và tạo báo cáo. Kích thước là một thuộc tính hoặc mô tả các khía cạnh của dữ liệu mà ta muốn phân loại, nhóm hoặc lọc dữ liệu theo đó.

Mỗi Dimension thường chứa một danh sách các giá trị riêng biệt, gọi là Members (Thành viên). Với kích thước Loại sản phẩm, các Members có thể là Điện thoại di động, Máy tính xách tay, Máy ảnh, v.v. Các Members này được sử dụng để phân loại và nhóm dữ liệu trong báo cáo.

Trong Power BI, ta có thể tạo Dimension từ các nguồn dữ liệu khác nhau, bao gồm cả cơ sở dữ liệu quan hệ, bảng Excel hoặc dữ liệu được nhập trực tiếp. Sau khi tạo, bạn có thể sử dụng chúng trong việc tạo biểu đồ, báo cáo, hoặc các tính toán khác để phân tích dữ liệu.

Tìm hiểu thêm về Dimension: Tổng quan về Star Schema - Microsoft Learn

Tối ưu hóa cấu trúc và hiệu suất của Dimension

Để tối ưu hóa cấu trúc và hiệu suất của Dimension trong Power BI, bạn có thể thực hiện các biện pháp sau:

  • Thiết kế cấu trúc tối ưu: Xây dựng cấu trúc Dimension sao cho phù hợp với yêu cầu phân tích dữ liệu của bạn. Đảm bảo rằng các thuộc tính và mức độ được tổ chức một cách logic và hợp lý để đảm bảo tính nhất quán và hiệu quả trong việc truy vấn dữ liệu.
  • Sử dụng index và tạo quan hệ: Trong Power BI, bạn có thể sử dụng các chỉ mục (index) để tăng tốc độ truy vấn dữ liệu. Đảm bảo rằng các quan hệ giữa Dimension và các bảng dữ liệu khác được thiết lập chính xác để tối ưu hóa hiệu suất.
  • Cắt giảm dữ liệu không cần thiết: Trong quá trình biến đổi dữ liệu và xây dựng Dimension, hãy loại bỏ các cột và hàng dữ liệu không cần thiết. Điều này giúp giảm kích thước dữ liệu và cải thiện hiệu suất truy vấn.
  • Sử dụng DirectQuery hoặc Power BI Composite Models: Power BI cung cấp các tùy chọn DirectQuery và Composite Models để tối ưu hóa hiệu suất truy vấn dữ liệu. Nếu có thể, sử dụng DirectQuery để truy vấn trực tiếp dữ liệu từ nguồn gốc mà không cần sao chép vào Power BI. Composite Models cho phép bạn kết hợp các nguồn dữ liệu trực tiếp và nhập khẩu để tận dụng lợi thế của cả hai.

Default vs Custom Date Dimension

Default vs Custom Date Dimension
Default vs Custom Date Dimension

Default 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.

Default Date Dimension được định sẵn tự động
Default Date Dimension được định sẵn tự động

Custom Date Dimension

Custom Date Dimension được tạo ra bởi nhiều cách, có thể dùng ngôn ngữ 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.

Tạo bảng Date trong một range nhất định
Default Date Dimension
Default Date Dimension
Bảng Default Date Hierarchy tạo bởi Power BI
Bảng Default Date Hierarchy tạo bởi Power BI

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 đó.

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.
Date và xuất hiện hierarchy gồm Year/Quarter/Month/Day
Date và xuất hiện hierarchy gồm Year/Quarter/Month/Day

Default Date Dimension tiêu thụ bộ nhớ

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 Power BI, 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.

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.

Cách sử dụng Default Date Dimension
Cách 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.

				
					YTD =
TOTALYTD(SUM('Sales SalesOrderHeader'[TotalDue]),'Sales SalesOrderHeader'[OrderDate])
				
			
Previous slide
Next slide

Công thức tính tổng lũy kế năm dựa trên trường OrderDate

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:

				
					YTD correct =
TOTALYTD(SUM('Sales SalesOrderHeader'[TotalDue]), 'Sales SalesOrderHeader'[OrderDate].[Date])
				
			

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.

				
					YTD wrong =
TOTALYTD(SUM('Sales SalesOrderHeader'[TotalDue]), 'Sales SalesOrderHeader'[OrderDate])
				
			
Công thức tính tổng lũy kế năm dựa trên trường OrderDate

Công thức tính tổng lũy kế năm dựa trên trường OrderDate

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 đó.

Sử dụng .[Date] trong TotalYTD

Custom Date Dimension, những điều cần chú ý:

Tạo Custom Date Dimension

Có nhiều cách để tạo Date Dimension, bạn có thể dùng DAX như ví dụ trên, dùng 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.

Tạo Custom Date Dimension
Tạo Custom Date Dimension

Định 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.

Previous slide
Next slide

Định dạng Data Table

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.

				
					YTD =
TOTALYTD(SUM('Sales SalesOrderHeader'[TotalDue]),'Date'[Date])
				
			
Previous slide
Next slide

Trường Date thay đổi kí hiệu và không còn show Date Hierarchy

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 DimensionCustom Date Dimension cũng như việc dùng 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à không 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ể dùng Default Date Dimension.
  • 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.