Chào mọi người,
Dạo này mình làm việc với một bộ dữ liệu mà cái cột mô tả của nó có những ký tự rất 'khó chiều'. Ban đầu thì nó dùng dấu phẩy (,) để phân tách, nhưng sau đó lại chuyển sang dấu chấm phẩy (;) hoặc thậm chí là dấu gạch ngang (-). Việc này làm mình đau đầu khi cố gắng tách chuỗi để lấy thông tin cần thiết.
Mình đã thử dùng hàm Text.Split thông thường nhưng không hiệu quả vì nó chỉ nhận một loại dấu phân cách cố định.
Sau một hồi mày mò, mình phát hiện ra một cách khá hay ho để xử lý vấn đề này bằng Power Query. Đó là sử dụng kết hợp Text.Split và List.Transform.
Cách làm của mình như sau:
- Đầu tiên, bạn cần xác định tất cả các loại dấu phân cách có thể xuất hiện trong chuỗi của bạn.
- Sau đó, bạn có thể áp dụng một hàm tùy chỉnh hoặc một bước Power Query để thay thế lần lượt các dấu phân cách khác nhau bằng một dấu phân cách chung (ví dụ: dấu phẩy).
- Cuối cùng, bạn dùng
Text.Splitvới dấu phân cách chung đó để tách chuỗi thành các cột.
Ví dụ, nếu bạn có chuỗi như "Sản phẩm A;Mô tả chi tiết,Giá rẻ", bạn có thể xử lý nó như sau:
Text.Split(Text.Replace(Text.Replace("Sản phẩm A;Mô tả chi tiết,Giá rẻ", ";", ","), "-", ","), ",")Cách này giúp mình xử lý triệt để các trường hợp dấu phân cách không đồng nhất. Hy vọng chia sẻ này hữu ích cho các bạn nào đang gặp tình huống tương tự.
Có ai có cách nào khác hay hơn không, cùng chia sẻ cho mọi người biết với nhé!