Chuyển đến nội dung chính

Hướng dẫn Mô hình hóa Dữ liệu trong Power BI

Tìm hiểu mô hình hóa dữ liệu trong Power BI là gì và cách các thực hành mô hình hóa dữ liệu tốt có thể đưa báo cáo Power BI của bạn lên một tầm cao mới.
· 11 phút đọc

Khám phá cùng AI

Các thực hành mô hình hóa dữ liệu tốt rất quan trọng để xây dựng báo cáo Power BI tối ưu về hiệu năng và có thể mở rộng khi cần.

Hướng dẫn này sử dụng một bộ dữ liệu mẫu do Microsoft cung cấp nhưng đã được điều chỉnh để phản ánh các thực hành tốt về mô hình hóa dữ liệu sẽ được thảo luận trong bài viết. Bạn có thể tải bộ dữ liệu tại đây.

Mô hình hóa dữ liệu là gì?

Mô hình hóa dữ liệu là quá trình tạo ra các biểu diễn trực quan về mối liên kết giữa các cấu trúc dữ liệu, kèm theo thông tin về các thuộc tính riêng lẻ nằm trong những cấu trúc dữ liệu đó.

Khi nói về mô hình hóa dữ liệu nói chung, thuật ngữ bạn sẽ nghe thường xuyên nhất là mô hình sao (star schema). Đây là một cách tiếp cận được áp dụng rộng rãi trong thiết kế kho dữ liệu và cơ sở dữ liệu quan hệ, đồng thời cũng là phương pháp được khuyến nghị khi làm việc với Power BI.

Có hai lợi ích chính khi sử dụng mô hình sao:

  • Tính dễ dùng: Mô hình sao giúp mô hình dữ liệu của bạn gọn gàng và có tổ chức hơn, khiến báo cáo dễ sử dụng hơn.
  • Hiệu năng: Mô hình sao cho phép bạn dễ dàng mở rộng báo cáo lên khối lượng dữ liệu rất lớn. Các phép đo DAX cũng tính toán nhanh hơn và báo cáo Power BI được làm mới nhanh hơn tổng thể.

Mô hình sao hoạt động như thế nào?

Mô hình sao gồm một bảng sự kiện (fact) trung tâm với nhiều bảng chiều (dimension) tỏa ra từ bảng sự kiện này, trông giống hình ngôi sao. Về lý tưởng, thực hành tốt là chỉ có một bảng sự kiện trong mô hình dữ liệu. Tuy nhiên, vẫn có thể đưa vào nhiều bảng sự kiện trong Power BI.

Power BI Star Schema Screenshot 1Mô hình sao trong Power BI. Ảnh: Tác giả

Một bảng sự kiện gồm các giá trị có thể tổng hợp và gộp nhóm, cùng với một hoặc nhiều khóa liên kết tới các bảng chiều. Mục đích của khóa là tạo kết nối giữa các bảng. Nếu bạn có mô hình dữ liệu phức tạp hoặc khối lượng dữ liệu lớn, nên dùng khóa là số thay vì chuỗi văn bản, vì điều này có thể cải thiện hiệu năng của mô hình.

Các bảng sự kiện nên hẹp và chứa ít cột nhất có thể. Bất kỳ cột nào mô tả đặc điểm của tập dữ liệu, như Tên sản phẩm hoặc Danh mục sản phẩm, nên được tách khỏi bảng sự kiện (nếu chưa được tách trong kho dữ liệu) sang các bảng chiều tương ứng. Quá trình này gọi là chuẩn hóa dữ liệu, với mục tiêu tránh lặp lại.

Các bảng chiều mô tả các đặc điểm của tập dữ liệu, trong đó các đặc điểm được nhóm hợp lý vào các bảng riêng để tránh phình to một bảng đơn hoặc gây khó khăn khi tạo quan hệ. Bảng chiều nên chứa các giá trị duy nhất cho các đặc điểm mà chúng mô tả, và các cột của chúng sẽ chịu trách nhiệm lọc hoặc nhóm dữ liệu trong báo cáo Power BI.

Một biến thể mở rộng của mô hình sao là mô hình bông tuyết (snowflake). Ở cách tiếp cận này, các bảng chiều được chia nhỏ hơn nữa nếu một đặc điểm có các danh mục hoặc phân nhóm bổ sung. Trong trường hợp của chúng ta, có bảng Products chứa Mã sản phẩm, Tên sản phẩm và Danh mục sản phẩm. Với mô hình bông tuyết, bảng Products sẽ chỉ chứa Mã sản phẩm và Tên sản phẩm, còn Danh mục sản phẩm sẽ được tách ra thành một bảng riêng với Mã danh mục sản phẩm và Danh mục sản phẩm.

Power BI Star Schema Screenshot 2Mô hình bông tuyết trong Power BI. Ảnh: Tác giả

Tuy nhiên, sử dụng mô hình bông tuyết có thể làm tăng không cần thiết độ phức tạp của mô hình dữ liệu; việc thêm các bảng này có thể làm giảm hiệu năng và khiến việc tạo quan hệ trở nên khó và rối.

Cách tạo mối quan hệ trong Power BI

Có hai cách để bạn tạo mối quan hệ trong Power BI:

  1. Chọn một trường từ một bảng và kéo thả lên trường ở bảng thứ hai mà bạn muốn tạo mối quan hệ.
  2. Chọn Manage Relationships trên ribbon và chọn “New” để thêm mối quan hệ bằng cửa sổ mà chúng ta sẽ thảo luận tiếp theo (nhưng sẽ bắt đầu trống).

Theo mặc định, Power BI sẽ cố suy luận mối quan hệ giữa các bảng; điều này không phải lúc nào cũng chính xác, vì vậy bạn có thể muốn tắt tính năng này trong phần cài đặt hoặc xóa bất kỳ mối quan hệ nào được tạo tự động. Để chỉnh sửa mối quan hệ, nhấp chuột phải vào đường nối giữa chúng và chọn “Properties”.

Cửa sổ này có 2 tùy chọn đáng chú ý khi định nghĩa mối quan hệ: lực lượng (cardinality) và hướng lọc chéo (cross filter direction). Lựa chọn cho mỗi tùy chọn này có thể ảnh hưởng lớn đến báo cáo, nên hãy cân nhắc kỹ. Hãy cùng phân tích từng tùy chọn.

Edit relationship in Power BI screenshotTạo mối quan hệ trong Power BI. Ảnh: Tác giả

Lực lượng (Cardinality)

Có 4 lựa chọn về lực lượng: nhiều-một (many-to-one), một-một (one-to-one), một-nhiều (one-to-many) hoặc nhiều-nhiều (many-to-many).

Khi tạo mối quan hệ, khuyến nghị trường nối chứa các giá trị duy nhất ở ít nhất 1 bảng. Điều này cho phép bạn sử dụng các tùy chọn một-nhiều hoặc nhiều-một trong mô hình dữ liệu.

Trong dữ liệu của chúng ta, có mối quan hệ giữa bảng Financials và bảng Products sử dụng trường Mã sản phẩm. Bảng Products có giá trị duy nhất cho trường Sản phẩm (mỗi sản phẩm chỉ xuất hiện một lần trong bảng). Tuy nhiên, bảng Financials có thể hiển thị mỗi sản phẩm nhiều lần theo ngày, quốc gia, phân khúc, v.v.

Tùy chọn nhiều-nhiều là rắc rối nhất, và dù hữu ích trong các mô hình phức tạp, chỉ nên chọn khi bạn hiểu rõ hệ quả của mối quan hệ này.

Để minh họa nơi mà quan hệ nhiều-nhiều có thể gây vấn đề, chúng ta tạo một bảng Mục tiêu Doanh số (Sales Target) theo Danh mục sản phẩm theo năm trong mô hình dữ liệu. Chúng ta cần báo cáo số liệu doanh số và các mục tiêu này cạnh nhau trong cùng một trực quan. Điều này có thể đạt được bằng cách tạo quan hệ nhiều-nhiều giữa bảng Sales Target và bảng Product.

Many-to-many relationship in Power BI ScreenshotQuan hệ nhiều-nhiều trong Power BI. Ảnh: Tác giả

Trong trực quan dạng bảng dưới đây, chúng ta có thể thấy giá trị doanh số và mục tiêu cạnh nhau cho từng danh mục sản phẩm.

Cardinality in Power BI Table Screenshot 1

Danh mục sản phẩm, doanh số và mục tiêu. Ảnh: Tác giả

Tuy nhiên, nếu chúng ta cố xem bảng này ở cấp độ Sản phẩm, các giá trị mục tiêu sẽ hoàn toàn không chính xác. Nguyên nhân là do mức độ chi tiết khác nhau trong dữ liệu; vì chỉ có mục tiêu doanh số ở cấp danh mục sản phẩm, Power BI không thể hiển thị hợp lý các mục tiêu này ở cấp sản phẩm, và do đó mục tiêu bị nhân bản cho từng sản phẩm trong danh mục. Nếu bạn không biết đây có thể là hệ quả của quan hệ nhiều-nhiều thì điều này sẽ rất rắc rối đối với báo cáo kinh doanh.

Cardinality in Power BI Table Screenshot 2Danh mục sản phẩm, doanh số và mục tiêu. Ảnh: Tác giả


Hướng lọc (Directionality)

Tùy chọn hướng lọc chéo cho phép chọn một chiều hoặc hai chiều. Quan hệ chảy từ bảng có giá trị duy nhất sang bảng có nhiều giá trị. Trong trường hợp của chúng ta, quan hệ chảy từ bảng Products sang bảng Financials. Điều này có nghĩa là nếu hướng lọc chéo đặt là một chiều, thì bảng Financials có thể được lọc theo các trường sản phẩm và danh mục sản phẩm trong bảng Products. Tuy nhiên, bảng Products không thể được lọc bằng trường mã sản phẩm trong bảng Financials hoặc bằng bất kỳ đặc điểm nào khác nằm trong các bảng chiều khác.

Hướng một chiều được khuyến nghị trong hầu hết các trường hợp. Bởi vì các quan hệ hai chiều (tùy chọn ‘both’) không chỉ làm giảm hiệu năng của mô hình mà còn có thể đưa vào sự mơ hồ khi lọc dữ liệu.

Trong trường hợp của chúng ta, hãy xem xét các mối quan hệ giữa bảng Product, Countries và Financials. Cả hai đều là quan hệ một chiều, một-nhiều. Điều này có nghĩa là việc lọc báo cáo theo quốc gia sẽ không khiến bảng Product được lọc theo. Để minh họa, xem các slicer dưới đây. Khi chọn một quốc gia (như USA), slicer sản phẩm sẽ không điều chỉnh chỉ hiển thị các sản phẩm liên quan tới quốc gia đó.

Directionality in Power BI Screenshot 1

Slicer trong Power BI. Ảnh: Tác giả

Tuy nhiên, bằng cách đổi quan hệ giữa bảng Products và bảng Financials thành hai chiều, chúng ta có thể cho phép lọc chảy vào bảng Products. Trong trường hợp này, sản phẩm Carretera không xuất hiện trong slicer Sản phẩm vì không có doanh số cho sản phẩm đó tại Hoa Kỳ.

Directionality in Power BI Screenshot 2Slicer trong Power BI. Ảnh: Tác giả

Hoặc, để tránh sử dụng quan hệ hai chiều, bạn có thể thêm bộ lọc vào trực quan slicer để loại trừ các mục trống. Lưu ý rằng bạn sẽ cần làm điều này cho từng trực quan sử dụng các trường từ nhiều bảng chiều.

Power BI Data Modeling Filter ScreenshotBộ lọc và slicer trong Power BI. Ảnh: Tác giả

Cách tối ưu mô hình Power BI của bạn

Yếu tố quan trọng nhất để tối ưu mô hình Power BI là áp dụng các thực hành mô hình hóa dữ liệu tốt như đã nêu trong hướng dẫn này. Thường thì, một mô hình dữ liệu tốt có thể tự nó cho phép báo cáo Power BI mở rộng tới hàng triệu, hàng tỷ dòng dữ liệu mà vẫn duy trì mức hiệu năng chấp nhận được.

Tuy vậy, ngoài việc tuân thủ các thực hành mô hình hóa dữ liệu tốt, bạn còn có thể làm thêm vài điều để tối ưu mô hình Power BI, chẳng hạn như:

  • Tắt time intelligence – Tính năng này trong Power BI tự động tạo phân cấp ngày/giờ mỗi khi một trường ngày được thêm vào một trực quan. Mỗi lần một phân cấp như vậy được tạo ra, về bản chất nó đang thêm một bảng bổ sung vào mô hình dữ liệu. Như bạn có thể hình dung, điều này có thể làm báo cáo Power BI phình to đáng kể, làm chậm việc hiển thị trực quan và tăng thời gian làm mới. Nên tắt tính năng này và thay vào đó sử dụng một bảng ngày chuyên dụng cho mọi phân cấp ngày/giờ.
  • Chỉ nạp các cột bạn thực sự cần – Sử dụng Power Query Editor, nên loại bỏ bất kỳ cột nào bạn không cần hoặc không dùng trong báo cáo. Một trong những trường phổ biến thường được giữ lại “phòng khi cần” là trường Row ID. Trường này là duy nhất với tập dữ liệu của bạn, ví dụ Mã đơn hàng cho mỗi giao dịch trong bảng Orders. Rất thường xuyên, trường ID này cũng được lưu dưới dạng văn bản, càng làm mô hình phình to. Nếu trường ID không được dùng rõ ràng trong một mối quan hệ, thường không cần nạp nó vào mô hình.
  • Chỉ nạp các hàng bạn cần – Đừng rơi vào bẫy nghĩ rằng bạn cần nhập tất cả dữ liệu kinh doanh vào báo cáo Power BI. Đặc biệt nếu doanh nghiệp đã hoạt động lâu năm, điều này có thể khiến báo cáo chứa lượng dữ liệu lớn mà thực ra không ai quan tâm. Mấu chốt là trao đổi với người dùng kinh doanh của báo cáo để biết chính xác họ cần xem bao nhiêu dữ liệu lịch sử. Nếu họ cần xem dữ liệu cũ, bạn có thể cân nhắc chỉ nhập phiên bản dữ liệu đã tổng hợp của bảng đó thay vì từng giao dịch đơn lẻ.

Kết luận

Áp dụng các thực hành mô hình hóa dữ liệu vững chắc là điều tối quan trọng để xây dựng các báo cáo Power BI hiệu quả và có khả năng mở rộng. Hướng dẫn này nhấn mạnh tầm quan trọng của mô hình sao (star schema), giúp cải thiện cả khả năng sử dụng lẫn hiệu năng. Hiểu các khái niệm then chốt như tạo mối quan hệ, lực lượng (cardinality) và hướng lọc giúp đảm bảo mô hình dữ liệu của bạn vừa hoạt động tốt vừa được tối ưu.

Bên cạnh đó, áp dụng các thực hành tốt như tắt những tính năng không cần thiết và hạn chế việc nhập dữ liệu cũng góp phần nâng cao hiệu năng. Bằng cách tuân theo các hướng dẫn này, bạn có thể cải thiện đáng kể hiệu quả và khả năng mở rộng của báo cáo Power BI, biến chúng thành công cụ phân tích kinh doanh hiệu quả hơn. Tiếp tục trau dồi kỹ năng bằng cách tham gia các khóa học của DataCamp. Khám phá đầy đủ tài nguyên Power BI của DataCamp, bao gồm các khóa học và lộ trình kỹ năng, blog và hướng dẫn.

Chủ đề

Liên quan