Trong quá trình làm việc với dữ liệu, công đoạn làm sạch và biến đổi dữ liệu (Clean & Transform) là một trong những nhiệm vụ quan trọng nhất. Clean & transform tốt thì mới có thể giúp cho các bước phân tích sau đó có hiệu quả. Pivot và unpivot là thao tác được sử dụng tương đối nhiều trong công đoạn này. Trong bài viết hôm nay, chúng ta sẽ cùng nhau tìm hiểu chi tiết về pivot, unpivot và cách sử dụng nhé.
Mục lục
Tổng quan về Pivot và Unpivot
Pivot và Unpivot là gì?
1. Atributes và Values
Trước khi đi sâu vào khái niệm pivot và unpivot, chúng ta cần hiểu dữ liệu trong doanh nghiệp thường chứa các thông tin gì và được lưu trữ như thế nào.
Ở mức cơ bản, thông tin của doanh nghiệp thu thập được có thể chia thành 2 loại, đó là các thuộc tính (Attributes) và giá trị (Values) tương đương với từng thành phần của thuộc tính đó.
- Thuộc tính (Attributes): Các đặc điểm, thông tin cụ thể mà ta muốn đo đạc chỉ số về nó.
- Giá trị (Values): Một chỉ số hay giá trị đo đạc tương đương với một thành phần của thuộc tính.
Ví dụ: Trong quá trình ghi nhận doanh thu, ta cần biết doanh thu của từng tháng là bao nhiêu. Ở đây, tháng được coi là Attribute, tức Tháng 1, Tháng 2,…là từng thành phần của Attribute đó; còn doanh thu của từng tháng được coi là Value.
Về cách lưu trữ Attributes và Values, ta thường hay bắt gặp 2 cách đó là lưu trữ theo chiều ngang và chiều dọc.
- Chiều dọc:
Từng Attribute và Values sẽ được sắp xếp thành từng cột.

- Chiều ngang:
Từng thành phần trong một Attribute và giá trị tương ứng với nó được sắp xếp thành 1 cột.

2. Pivot và Unpivot
Pivot và Unpivot đơn giản là tên gọi của quá trình thay đổi cấu trúc của cách lưu trữ dữ liệu từ chiều dọc sang chiều ngang hoặc ngược lại. Việc thay đổi cấu trúc này nhằm phục vụ từng nhu cầu riêng biệt trong việc phân tích.
- Pivot:
Thay đổi cấu trúc từ lưu trữ theo chiều dọc => chiều ngang.

- Unpivot:
Thay đổi cấu trúc từ lưu trữ theo chiều ngang => chiều dọc.

Tại sao lại phải thực hiện Pivot và Unpivot?
- Tối ưu hóa cấu trúc dữ liệu:
Pivot và Unpivot có thể giúp tối ưu hóa cấu trúc dữ liệu để phù hợp với nhu cầu của các công việc phân tích và báo cáo cụ thể. - Dễ dàng thực hiện phân tích:
Khi dữ liệu được biến đổi vào đúng định dạng, việc thực hiện các thao tác phân tích và báo cáo thường trở nên dễ dàng hơn. - Tiết kiệm bộ nhớ và tăng hiệu suất:
Pivot và Unpivot có thể giúp giảm thiểu sự lặp lại dữ liệu và tiết kiệm bộ nhớ khi lưu trữ dữ liệu theo cách hiệu quả hơn.
Thực hành Pivot và Unpivot trong Power Query
Các bước Pivot và Unpivot chúng ta đều thực hiện trong giao diện Power Query Editor (Chọn “Transform Data” trên thanh công cụ => Click vào phần “Transform Data”)

Pivot
- Tình huống hay phải dùng: Khi bạn có một cột chứa nhiều loại values khác nhau và muốn tách chúng ra thành các cột riêng biệt, đại diện cho 1 values mới thì bạn có thể sử dụng Pivot.
- Ví dụ:
Chúng ta có bộ dataset về hạch toán doanh thu và chi phí của các trung tâm như sau:

Do nhu cầu tính toán và phân tích độc lập 2 chỉ số doanh thu và chi phí, ta cần tách riêng 2 chỉ số này thành 2 cột riêng biệt. Kết quả mong muốn như sau:

- Hướng dẫn thực hành:
Tại giao diện “Power Query Editor”,
Bước 1:
Chọn cột thông tin chứa nhiều loại values khác nhau mà chúng ta đang muốn tách. Ở case study này chúng ta chọn cột “Loại hạch toán”.

Bước 2:
Trên thanh công cụ, chọn “Transform”, sau đó ở bên dưới chọn “Pivot Column”

Bước 3:
Sau khi chọn Pivot Coulmn, sẽ có Pop-up hiển thị để người dùng tùy chỉnh trước khi Pivot. Ở đây “Value Column” là cột mà ta chỉ định để Power BI tính toán giá trị mới sau khi Pivot, trong mục ”Advanced Option” là nơi ta lựa chọn phép tính toán. Trong case study này và lựa chọn cột “Giá trị hạch toán” làm Values Coulmn” và “Aggregate Value Function” sẽ là “Sum”. Sau khi chọn xong ta nhấn OK.

Kết quả:

Unipivot
- Tình huống hay phải dùng: Khi bạn có nhiều cột chứa dữ liệu của cùng một loại thông tin và bạn muốn biến đổi chúng thành các dòng trong một cột. Mục đích chính là để phục vụ việc lưu trữ sau này dễ dàng hơn, cũng như thuận tiện trong việc việc mở rộng bộ dataset.
- Ví dụ:
Ta có bộ dataset lưu trữ kết quả doanh thu theo từng tháng của các trung tâm như sau:

Các cột Tháng 1, Tháng 2, Tháng 3 đều mang thông tin liên quan đến “Tháng”, các giá trị bên dưới là doanh thu tương ứng của các tháng đó. Nếu về sau phát sinh thêm nhiều tháng mới, thì bảng dữ liệu của chúng ta càng ngày càng bị mở rộng theo chiều ngang. Như vậy sẽ rất khó kiểm soát và khó lưu trữ. Vì vậy ta cần thay đổi cấu trúc lại theo chiều dọc. Kết quả mong muốn sẽ như sau:

- Hướng dẫn:
Tại giao diện “Power Query Editor”,
Bước 1:
Chọn cột thông tin mà ta KHÔNG MUỐN cấu trúc của nó. Ở ví dụ này là cột “Trung tâm”.

Bước 2:
Trên thanh công cụ, chọn “Transform”, sau đó ở bên dưới chọn “Unpivot Column”. Lưu ý trong mục này có nhiều lựa chọn, chúng ta chọn “Unpivot Other Column”.

Bước 3:
Đổi tên các cột mới sao cho phù hợp và ta đã có kết quả như mong muốn.

Qua bài viết này, hy vọng các bạn đã nắm rõ hơn được cách pivot và unpivot các bảng biểu dữ liệu trong lúc transform, cũng như hiểu rõ hơn được về cách tình huống cụ thể cần sử dụng những thao tác này.
Nguồn tham khảo: Pivot columns (Power Query) – Microsoft Support
Một số bài viết liên quan:
- Data Profiling – Tính năng kiểm tra chất lượng dữ liệu (datapot.vn)
- 3 Cách dùng M Query để biến đổi dữ liệu trong Power BI (datapot.vn)

