Posted on Leave a comment

XÂY DỰNG MA TRẬN KHÔNG ĐỐI XỨNG

Ma trận không đối xứng

Ma trận đối xứng và Ma trận không đối xứng

Matrix đối xứng

Matrix là một loại visual thường được sử dụng trong Power BI khi người dùng muốn thể hiện thông tin theo 2 chiều dữ liệu khác nhau. Thông thường matrix của chúng ta là dạng ma trận đối xứng, chúng ta sử dụng một dimension để cấu thành nên hàng và 1 dimension khác để cấu thành nên cột của matrix. Như ví dụ trong ảnh dưới đây là một ma trận đối xứng.

Ví dụ về Ma trận đối xứng
Ví dụ về Ma trận đối xứng

Matrix không đối xứng

Tuy nhiên, thực tế chúng ta có thể gặp các yêu cầu xây dựng matrix không đối xứng, thường gặp trong các báo cáo tài chính, cân đối kế toán. Với dạng visual này, chúng ta không thể kéo 2 dimension cấu thành nên cột và hàng như thông thường. Hình ảnh dưới là minh họa cho 1 matrix không đối xứng ở cột.

Ví dụ về Ma trận không đối xứng ở cột
Ví dụ về Ma trận không đối xứng ở cột

Một cách đơn giản nhất để xử lý trong tình huống này, chúng ta tạo ra các measure tương ứng với từng cột trong ma trận đối xứng. Ví dụ như ở minh họa phía trên, chúng ta cần phải tạo ra 5 measure. Tuy nhiên nếu số lượng cột quá lớn thì việc tạo ra measure như vậy sẽ mất nhiều thời gian và cũng không phải cách hay. Một nhược điểm nữa là nó không thể xử lý được tình huống ma trận không đối xứng ở hàng.

Phương pháp tạo Measure trong xử lý Ma trận không đối xứng
Phương pháp tạo Measure trong xử lý Ma trận không đối xứng

Bài viết này giới thiệu đến các bạn cách để chúng ta xây dựng nên matrix không đối xứng.

Download file Power BI Tại đây

(Tham khảo Cách xây dựng Dynamic Measure trên Power BI Tại đây)

(Tham khảo Cách xây dựng Cohort Analysis trên Power BI Tại đây)

Hướng dẫn xây dựng Ma trận không đối xứng

Giả sử chúng ta có một bảng dữ liệu có tên là “SalesTable” bao gồm 2 cột:
⦁ Customerkey: Cột chứa key định danh cho mỗi khách hàng mua dịch vụ.
⦁ OrderDate: Ngày có đặt hàng dịch vụ
Mỗi dòng dữ liệu là 1 giao dịch bán hàng.
Ngoài ra ta cũng có 1 bảng “Date”, có relationship với bảng “SalesTable” thông qua cột Date và OrderDate

Chúng ta cần tạo ra một matrix chứa số lượng order bán ra theo từng tháng trong từng năm, và cũng thể hiện sự tăng trưởng của năm 2020 so với số lượng bán được trong năm 2019. Kết quả mong muốn chính là hình ảnh bên dưới.

Ma trận chứa số lượng order bán ra theo từng tháng trong từng năm
Matrix chứa số lượng order bán ra theo từng tháng trong từng năm

Bước 1

Đầu tiên, chúng ta cần tạo ra 1 measure để đếm số lượng order từ dữ liệu trong bảng “SalesTable”:

No.Orders = COUNTROWS(SalesTable)

Quan sát matrix ở trên, với dòng, chúng ta có thể dễ dàng sử dụng cột “Month of year” trong bảng “Date”. Tuy nhiên với cột, chúng ta không thể kéo cột “Fiscal Year” vào. Thay vào đó, chúng ta cần tạo ra một disconnected table, đặt tên nó là “header_table”. Bảng này sẽ chứa các quan sát là header label của matrix mà chúng ta cần tạo. Lưu ý ở đây, 3 giá trị đầu tiên trong cột header_label của bảng chính là 3 năm trong bảng “Date”

header_table
header_table

Để cố định thứ tự xuất hiện trong matrix, chúng ta cần sắp xếp cột header_label theo cột id.

Sắp xếp cột header_label theo cột id.
Sắp xếp cột header_label theo cột id.

Bước 2

Tiếp đến, chúng ta cần thiết lập relationship giữa bảng “Header_table” và bảng “Date” thông qua cột “header_label” trong bảng “Header_table” và cột “Fiscal Year” trong bảng Date. Tại sao lại là “Fical Year”? Đơn giản chúng ta muốn hiển thị matrix theo “Fiscal Year” nhưng thêm 1 số cột mới như change và %change.

Thiết lập relationship giữa bảng “Header_table” và bảng “Date”
Thiết lập relationship giữa bảng “Header_table” và bảng “Date”

Bước 3

Bước tiếp theo, chúng ta tạo 1 measure, đặt tên là “Measure by column header” như sau:

Measure by column header =
VAR DisplayItem = SELECTEDVALUE (header_table[id])
VAR year_2019 = CALCULATE([No.Orders], all(header_table), header_table[header_label] = “FY2019”)
VAR year_2020 = CALCULATE([No.Orders], all(header_table), header_table[header_label] = “FY2020”)
VAR change_2020_vs_2019 = year_2020 – year_2019
VAR percent_change = DIVIDE(change_2020_vs_2019, year_2019, BLANK())*100
RETURN
SWITCH (
TRUE (),
DisplayItem <= 3, [No.Orders],
DisplayItem = 4, change_2020_vs_2019,
DisplayItem = 5, percent_change)

Trong measure này, chúng ta tạo ra 2 chỉ số change_2020_vs_2019 và percent_change để xác định số lượng order thay đổi giữa năm FY2020 so với FY2019 và tỉ lệ thay đổi là bao nhiêu. Việc tạo ra “DisplayItem” thông qua hàm “SELECTEDVALUE” và sử dụng nó trong hàm “SWITCH” chính là cách mà measure “Dynamic measure by column header” hoạt động.

Bước 4

Cuối cùng, chúng ta tạo matrix. Lựa chọn loại visual là matrix, tại tùy chọn Rows, sử dụng cột “Month of year” trong bảng “Date”. Tại tùy chọn Columns, thay vì sử dụng “Fiscal Year” trong bảng “Date”, ta sử dụng cột “header_label” trong bảng “header_table”. Ở tùy chọn Values, ta sử dụng “Measure by column header”. Kết quả là chúng ta có một ma trận không đối xứng theo cột (matrix with asymmetrical columns)

Thiết lập các tùy chọn
Thiết lập các tùy chọn
Ma trận không đối xứng kết quả
Ma trận không đối xứng theo cột

Ở đây, tại mỗi cột, chúng ta DisplayItem trong measure sẽ được xác định. Ví dụ tại FY2018, DisplayItem = 1, với điều kiện DisplayItem <= 3 thì sử dụng [No.Orders]. Tương tự với cột FY2019 và FY2020. Trong khi đó với cột Change 2020 vs 2019, DisplayItem = 4, do đó measure sẽ áp dụng chỉ số change_2020_vs_2019.
Với ma trận không đối xứng theo hàng (matrix with asymmetrical rows), chúng ta chỉ cần thay đổi tùy chọn columns, rows trong phần thiết lập visual:

Thiết lập các tùy chọn 2
Thiết lập các tùy chọn
Ma trận không đối xứng theo hàng
Ma trận không đối xứng theo hàng

Tham khảo kết quả tại file Power BI dưới đây

Như vậy chúng ta vừa tìm hiểu xong cách xây dựng matrix không đối xứng, thông qua ví dụ khá trực quan. Bạn đọc có thể áp dụng vào trong công việc của mình, thay vì chỉ sử dụng được matrix mặc định trong PBI, chúng ta đã có thể tự custom theo ý mình.
Tham khảo: Tại đây

Tham gia group ôn thi DA-100 tại: https://www.facebook.com/groups/da100vn
Chuỗi Video Hướng dẫn thực hành Lab và sử dụng các tài nguyên của Microsoft: https://www.youtube.com/c/Datapotvn/videos
Update tài nguyên từ Microsoft, DA-100 exam questions và exam topics tại Fanpage của Datapot: https://www.facebook.com/DatapotAnalytics/

Khóa học Ôn thi DA-100


Combo khóa học dành cho các bạn Fresher
Leave a Reply

Your email address will not be published. Required fields are marked *