Pivot Và Unpivot Trong Power Query: Chuyển Đổi Cấu Trúc Dữ Liệu Dễ Dàng
Chia sẻ
"Hướng dẫn dùng Pivot Column và Unpivot Columns trong Power Query để chuyển đổi dữ liệu từ dạng ngang sang dọc và ngược lại — kỹ thuật quan trọng cho Data Analyst."
1. Pivot Vs Unpivot: Khái Niệm
Pivot: xoay dữ liệu từ dọc sang ngang — biến giá trị cột thành tên cột mới. Unpivot: ngược lại — biến nhiều cột thành dòng. Đây là 2 thao tác reshape data quan trọng nhất trong Power Query, giúp chuyển đổi data giữa wide format và long format.
Ví dụ: báo cáo doanh thu có 12 cột (Jan-Dec) → Unpivot thành 2 cột (Month, Revenue) để vẽ chart timeline. Ngược lại: data dạng transaction (1 dòng/tháng) → Pivot thành matrix cho báo cáo.
2. Unpivot — Biến Cột Thành Dòng
Trong Power Query: Select cột cần giữ cố định → Transform → Unpivot Other Columns. Kết quả: 2 cột mới "Attribute" (tên cột cũ) và "Value" (giá trị). Rename cho phù hợp.
// M Language: Unpivot
let
Source = Excel.CurrentWorkbook(){[Name="Sales"]}[Content],
Unpivoted = Table.UnpivotOtherColumns(
Source,
{"Product", "Region"}, // Cột giữ cố định
"Month", // Tên cột Attribute mới
"Revenue" // Tên cột Value mới
)
in
Unpivoted3. Pivot — Biến Dòng Thành Cột
Select cột muốn trở thành column headers → Transform → Pivot Column → chọn Values Column + Aggregate Function (Sum, Count, Don't Aggregate). Kết quả: data từ long format thành wide format matrix.
// M Language: Pivot
let
Source = ...,
Pivoted = Table.Pivot(
Source,
List.Distinct(Source[Month]), // Giá trị thành cột headers
"Month", // Cột chứa headers
"Revenue", // Cột chứa values
List.Sum // Aggregate: Sum
)
in
Pivoted4. Khi Nào Dùng Unpivot?
Unpivot TRƯỚC khi: vẽ chart (timeline, comparison), load vào data model (star schema yêu cầu long format), tính toán aggregate (SUM, AVG dễ hơn trên long format), merge với bảng khác. Rule: database = long format, report = wide format.
5. Real-World Use Cases
Use case 1: File Excel từ phòng kế toán có 12 cột tháng → Unpivot thành format chuẩn (Date, Amount) để load vào Power BI. Use case 2: Survey results (Q1,Q2,Q3... thành columns) → Unpivot để phân tích distribution. Use case 3: Cross-tab report → Unpivot → Transform → Pivot lại theo tiêu chí khác.
6. Unpivot Only Selected Columns Vs Other Columns
Unpivot Columns: chỉ unpivot các cột đã select. Unpivot Other Columns: unpivot TẤT CẢ cột NGOẠI TRỪ cột đã select. Dùng Other Columns khi số cột thay đổi (VD: thêm tháng mới) — dynamic và an toàn hơn.
7. Tips Và Lỗi Thường Gặp
1) Data type phải consistent trước Pivot — nếu cột Value có mix text/number sẽ lỗi. 2) Unpivot Other Columns tốt hơn Unpivot Columns vì tự handle cột mới. 3) Rename Attribute/Value ngay sau unpivot. 4) Dùng Fill Down nếu có merged cells trước khi Unpivot.
8. Kết Luận
Pivot/Unpivot là kỹ năng ETL cốt lõi. Unpivot biến report format (wide) thành database format (long) để phân tích. Pivot biến data format thành report format để trình bày. Master cả hai = xử lý được mọi kiểu reshape data.
📥 Tải File Demo
📥 Tải file demo: pivot-unpivot-demo.xlsx
📎 File đính kèm bài viết — chứa đầy đủ dữ liệu mẫu
Mục lục
Muốn làm chủ Power Query?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề

Power Query Thực Chiến: 7 Bài Toán Thực Tế Từ Gộp File Đến ETL Tự Động
Giải quyết 7 bài toán thực tế bằng Power Query: gộp nhiều file Excel, unpivot bảng chéo, merge dữ liệu từ nhiều nguồn, xử lý ngày tháng lỗi, tách cột phức tạp, ETL tự động và parameter query.
M Language Nâng Cao: Custom Functions, Error Handling Và Recursion Trong Power Query
Viết Custom Function, xử lý lỗi Try-Otherwise, và thậm chí Recursion trong M Language — nâng Power Query lên level pro cho Data Analyst.
Power Query: Kết Nối Dữ Liệu Từ Nhiều Nguồn — CSV, Web, Database, API
Hướng dẫn dùng Power Query kết nối và import dữ liệu từ CSV, Excel, Web, SQL Server, SharePoint, API — tự động refresh mỗi ngày.
