Chào các anh chị em trong diễn đàn,
Dạo này mình hay gặp phải các file dữ liệu mà sếp gửi về dưới dạng 'flat file' - tức là tất cả thông tin nằm trên một mặt phẳng, không có cấu trúc phân cấp rõ ràng. Ví dụ như danh sách các phòng ban, nhân viên, kèm theo mã phòng ban cha để xác định cấp bậc. Việc này gây khó khăn khi muốn phân tích dữ liệu theo từng cấp, từng nhánh.
Trước đây, mình thường mất khá nhiều thời gian để 'gỡ rối' bằng các công thức phức tạp hoặc làm thủ công. Tuy nhiên, gần đây mình có tìm hiểu và áp dụng Power Query để xử lý vấn đề này một cách khá hiệu quả. Hôm nay mình muốn chia sẻ cách làm này, hy vọng sẽ giúp ích được cho các bạn nào cũng đang gặp tình huống tương tự.
Ý tưởng chính:
- Bước 1: Load dữ liệu dạng flat file vào Power Query.
- Bước 2: Xác định cột chứa mã ID và cột chứa mã ID của cấp cha.
- Bước 3: Sử dụng chức năng 'Group By' kết hợp với các phép toán tổng hợp để gom nhóm dữ liệu theo cấp cha.
- Bước 4: Lặp lại quá trình này cho đến khi xây dựng được cấu trúc phân cấp mong muốn. Power Query cho phép tạo các cột dạng 'Table' lồng nhau, giúp lưu trữ thông tin của các cấp con.
Ví dụ cụ thể:
Giả sử mình có bảng dữ liệu nhân viên:
ID, TenNhanVien, ID_Cha
1, Giám đốc A, NULL
2, Trưởng phòng B, 1
3, Nhân viên C, 2
4, Trưởng phòng D, 1
5, Nhân viên E, 4Sau khi xử lý bằng Power Query, mình có thể tạo ra một cấu trúc mà mỗi phòng ban cha sẽ chứa một danh sách (table) các phòng ban con hoặc nhân viên trực thuộc.
Cách này giúp việc phân tích dữ liệu theo cây (tree structure) trở nên dễ dàng hơn rất nhiều. Ai đã từng áp dụng cách này hoặc có phương pháp nào hay hơn thì chia sẻ thêm nhé!