Mục lục
Data Model trong Power BI là gì?
Mình đã từng thấy rất nhiều người lúng túng và chưa biết “data model” là gì, và thực sự điều này hoàn toàn dễ hiểu thôi, data model hay tạm dịch ra tiếng việt là “mô hình dữ liệu” là một khái niệm xa lạ với hầu hết những bạn business, chưa tiếp xúc nhiều với các khái niệm trong ngành IT / công nghệ. Trong bài viết này, mình sẽ giải thích về data model một cách dễ hiểu cho các bạn.
Data model là gì?
Data model nói một cách ngắn gọn là một tập hợp:
- Các bảng dữ liệu:
- bảng dữ liệu này bao gồm một hoặc nhiều cột được load vào trong Power BI (thông qua Power Query) vì một lý do nhất định (Chúng ta không load thừa dữ liệu từ nguồn nếu không có lý do làm vậy)
- bảng dữ liệu này bao gồm một hoặc nhiều dòng được load vào trong Power BI (thông qua Power Query) vì một lý do nhất định (Chúng ta không load thừa dữ liệu từ nguồn mà không có lý do cụ thể)
- Các mối quan hệ giữa các bảng được load vào cùng data model
- Các công thức (measures) được viết ra để tính toán business logic, các chỉ số trong doanh nghiệp (ví dụ: margin, cost) bao gồm:
- Công thức và các định dạng áp dụng cho kết quả của công thức
- Tên chỉ số kinh doanh được gán cho công thức (Measure Name)
Tất cả những thành phần trên có thể được gọi là “Mô hình dữ liệu trong Power BI” (Điều này cũng đúng cho Analysis Service Tabular, Power Pivot trong Excel, và nhiều công cụ BI khác)
Công cụ BI dựa trên data model
Power BI là một công cụ báo cáo dựa trên mô hình dữ liệu, mặc dù không phải công cụ BI nào cũng dựa trên mô hình dữ liệu để làm việc. Một ví dụ cho công cụ không sử dụng mô hình dữ liệu để làm việc là SQL Server Reporting Services (SSRS). Đối với những công cụ BI dạng này, người sử dụng (chúng ta) cần viết các câu truy vấn để truy vấn dữ liệu tại nguồn dữ liệu (thường sử dụng ngôn ngữ SQL), sau đó kết quả của câu truy vấn sẽ được sử dụng ở trong báo cáo. Các công cụ này thường có giao diện giúp người dùng có thể “kéo thả” các thành phần để tạo ra báo cáo hoặc sử dụng một ngôn ngữ truy vấn dữ liệu như T-SQL để lấy dữ liệu cho báo cáo.
Một ví dụ nữa về công cụ BI không dựa trên mô hình dữ liệu mà có thể các bạn đã rất quen thuộc đó là Excel. Trong Excel, các bảng tính vừa là nơi lưu trữ dữ liệu, vừa là nơi nhập công thức tính toán business logic, vừa là nơi xây dựng các báo cáo.
Không có gì sai khi chúng ta sử dụng Excel hay SQL như một công cụ BI, chỉ là cách tiếp cận và giải quyết vấn đề khác nhau. Tới thời điểm hiện tại, có thể nói rằng vấn đề lớn nhất khi sử dụng các công cụ báo cáo – reporting tools không dựa trên mô hình dữ liệu là tốc độ tạo ra những báo cáo mới, bởi vì, thường thì mỗi khi cần báo cáo mới, chúng ta cần chuẩn bị lại từ đầu.
Một công cụ báo cáo như Power BI sẽ có những lợi ích là:
- Khả năng tái sử dụng mô hình dữ liệu cho những nhu cầu báo cáo trong tương lai mà không nhất thiết phải truy vấn lại dữ liệu.
- Bớt mang tính “kỹ thuật” hơn cho business user (thường quen làm việc với Excel) và cũng chưa làm việc với SQL bao giờ.
- Từ ít tới rất ít khi phải dùng tới khả năng coding nếu data model đã hỗ trợ đủ cho nhu cầu báo cáo, trực quan hoá dữ liệu.
Tại sao chúng ta cần data model trong Power BI?
Một số bạn quen làm việc từ Excel, tự tin với khả năng Excel của mình và bắt đầu làm việc với Power BI: bạn có dữ liệu, có Power BI. Nhưng tới đây, có gì đó chưa ổn, mặc dù có dữ liệu, với dữ liệu đó bình thường trong Excel bạn đã có thể bắt đầu viết công thức, đưa vào Pivot Table và tạo ra các báo cáo biểu đồ thật nhanh chóng. Với Power BI, cách tiếp cận sẽ khác. Nếu bạn sử dụng cách tiếp cận từ Excel và đem qua áp dụng vào Power BI, chắc chắn sẽ có những khó khăn: công thức đưa ra kết quả không như mong muốn, chưa nhận ra được “Intelligence” từ dữ liệu, báo cáo bị chậm. Dù như thế nào, nhiều khả năng vấn đề của bạn nằm ở data model.
Cách đơn giản nhất để tạo ra Data Model trong Power BI và Power Pivot là load dữ liệu chưa xử lý từ nguồn, định nghĩa các mối quan hệ, và bắt đầu thiết kế báo cáo. Với các làm này, đôi khi bạn sẽ gặp phải vấn đề như có quá nhiều bảng không cần thiết, độ chi tiết/độ phân giải của dữ liệu khác nhau (different level of granularity).
Một data model tốt sẽ:
- Làm cho báo cáo nhanh hơn
- Code DAX đơn giản hơn
- Dễ bảo trì, nâng cấp hơn
Model View trong Power BI Desktop
Trong Power BI Desktop, bạn có thể thấy chức năng “model view”.
Trong ảnh trên, chúng ta có thể thấy được:
- Các bảng dữ liệu
- Các cột trong bảng dữ liệu
- Mối quan hệ giữa các bảng dữ liệu (nếu tồn tại)
- Loại mối quan hệ giữa các bảng dữ liệu (tất cả các mối quan hệ trong data model phía trên ở dạng “1 – nhiều” hay “1 – *”)
- Hướng của các bộ lọc thể hiện trên đường nối giữa các bảng dimension table và fact table
Thứ mà bạn chưa nhìn thấy trong data model này là các Measures (Là các công thức tính toán các chỉ số từ dữ liệu)
Measure là một phần của Data model
Như đã nói tới ở phần trên, các measures cũng là một phần của data model. Measures được định nghĩa bởi các công thức DAX giúp chúng ta tính toán các chỉ số từ dữ liệu, hay nói chính xác hơn là từ Data Model. Hãy cùng xem một ví dụ như sau:
Trong bảng trên, cột được đánh dấu màu đỏ thể hiện tổng giá trị của một đơn hàng (mỗi dòng là một đơn hàng). Chúng ta có một vài nhận định như sau:
- Nếu chúng ta tính tổng của cột ExtendedAmount, chúng ta sẽ có được tổng giá trị của các đơn hàng
- Nếu chúng ta đếm số giá trị trong cột ExtendedAmount, chúng ta sẽ có số lượng các đơn hàng
- Nếu chúng ta tính giá trị trung bình cho cột ExtendedAmount, chúng ta sẽ có giá trị trung bình của các đơn hàng
- Nếu chúng ta tìm thấy giá trị lớn nhất trong cột ExtendedAmount, giá trị này sẽ thể hiện đơn hàng mang tới cho chúng ta nhiều doanh thu nhất
Power BI có thể tính toán những con số trên sử dụng DAX hoặc không sử dụng DAX, tuy nhiên bản thân Power BI sẽ không biết được ý nghĩa trong business của những con số trên. Chúng ta sẽ là người làm việc này, gán tên cho mỗi chỉ số được Power BI tính toán, định dạng kết quả trả về bởi Power BI. Điều này được tiến hành bằng cách sử dụng Measures và công thức DAX như sau:
Total Sales Value = SUM(Sales[ExtendedAmount]) format Currency, 0 decimals Total Line Items = COUNT(Sales[ExtendedAmount]) format whole number, comma separated Average Line Item Value = AVERAGE(Sales[ExtendedAmount]) format Currency, 2 decimals Maximum Line Item Value = MAX(Sales[ExtendedAmount]) format Currency, 2 decimals
Tổng kết
Như vậy, qua bài viết này, các bạn đã có những khái niệm đầu tiên về Data Model trong Power BI, đây là một concept quan trọng trong việc ứng dụng Power BI, hi vọng các bạn sẽ dành nhiều thời gian cho việc xây dựng mô hình dữ liệu và có được những báo cáo nhanh, đẹp, hiệu quả.