Chào các anh chị em, hôm nay mình muốn chia sẻ một mẹo nhỏ mình vừa vọc vạch được trong Power Query để xử lý một dạng dữ liệu khá 'khó nhằn': dữ liệu có cấu trúc lặp lại (recursive data).
Tình huống của mình là thế này: Mình có một file Excel mà ở đó, mỗi dòng dữ liệu lại tham chiếu đến một dòng khác bằng một mã ID. Ví dụ, dòng 1 có ID là A, dòng 2 có ID là B, nhưng trong cột 'Tham chiếu' của dòng 1 lại ghi là B. Cứ thế lặp đi lặp lại. Việc này khiến mình không thể load thẳng vào Excel để phân tích được.
Sau một hồi loay hoay, mình đã tìm ra cách xử lý bằng Power Query như sau:
- Bước 1: Load dữ liệu vào Power Query.
- Bước 2: Tạo một cột 'Key' duy nhất cho mỗi dòng (thường là cột ID gốc).
- Bước 3: Sử dụng hàm
Table.ExpandRecordColumnhoặcTable.NestedJoinđể join bảng với chính nó dựa trên cột 'Tham chiếu' và cột 'Key'. - Bước 4: Lặp lại bước 3 cho đến khi nào cấu trúc lặp lại được 'mở' hết ra. Quá trình này có thể cần lặp lại vài lần tùy thuộc vào độ sâu của cấu trúc lặp.
- Bước 5: Xóa các cột trung gian không cần thiết và load kết quả ra Excel.
Cách này giúp mình 'phẳng hóa' được cấu trúc dữ liệu phức tạp, biến nó thành dạng bảng thông thường. Anh em nào gặp trường hợp tương tự có thể thử áp dụng nhé. Nếu có cách nào tối ưu hơn thì chia sẻ cho mình với!