Trả lời nhanh: Data profiling là quá trình quét một nguồn dữ liệu có sẵn (bảng, tệp) và thu về thống kê mô tả: kiểu dữ liệu, tỷ lệ ô trống, số giá trị duy nhất, mẫu định dạng, khoá và quan hệ giữa các bảng. Kết quả cho biết dữ liệu có dùng được không, và cần sửa gì trước.
Điểm chính
- Profiling chỉ đo và mô tả dữ liệu. Nó không sửa dữ liệu.
- Có ba loại: theo từng cột, chéo cột (khoá, phụ thuộc) và chéo bảng (khoá ngoại, bản ghi mồ côi).
- Thường làm trước khi chuyển hệ thống, xây kho dữ liệu hoặc viết quy tắc kiểm tra chất lượng.
- Hồ sơ thu được còn dùng để kiểm tra siêu dữ liệu (metadata) có khớp với giá trị thực hay không.
Mục lục
- Data profiling là gì?
- Data profiling hoạt động thế nào và có những loại nào?
- Một bản profile thường đo những chỉ số nào?
- Ví dụ minh hoạ: profile bảng khách hàng của một chuỗi cửa hàng
- Quy trình profiling gồm những bước nào?
- Có những công cụ nào để làm data profiling?
- Doanh nghiệp Việt Nam dùng data profiling ở đâu?
- Ưu điểm và hạn chế của data profiling
- Data profiling khác gì các khái niệm gần?
- Khi nào nên và không nên làm data profiling?
- Câu hỏi thường gặp
Data profiling là gì?
Data profiling (tạm dịch: lập hồ sơ dữ liệu) là việc kiểm tra dữ liệu có trong một nguồn hiện có, ví dụ một cơ sở dữ liệu hoặc một tệp, rồi thu thập thống kê và bản tóm tắt về dữ liệu đó. Định nghĩa này phổ biến trong tài liệu kỹ thuật và cả trong các bằng sáng chế về công cụ profiling. Điểm cần nhớ là nó làm việc trên dữ liệu thật đang nằm trong hệ thống, không dựa vào tài liệu mô tả.
Lý do cần làm vậy là tài liệu thiết kế và dữ liệu thực thường lệch nhau. Một cột được mô tả là “ngày sinh” có thể chứa cả chữ “N/A”, ngày năm 1900 hoặc số điện thoại do nhân viên nhập nhầm. Profiling vừa kiểm tra metadata khi đã có, vừa suy ra metadata khi chưa có. Bạn có thể xem khái niệm nền ở bài metadata là gì.
Một cách hiểu ngắn: profiling trả lời câu “dữ liệu này thực sự trông như thế nào?”. Nó chưa trả lời “dữ liệu này tốt hay xấu?”. Câu thứ hai cần có tiêu chuẩn của doanh nghiệp, và đó là việc của quản lý chất lượng dữ liệu.
Data profiling hoạt động thế nào và có những loại nào?
Công cụ profiling quét bảng và tính các chỉ số theo ba mức, từ rẻ đến tốn tài nguyên. Cách chia này được dùng trong các tài liệu của IBM và nhiều giáo trình về chất lượng dữ liệu.
Profiling theo cột (column profiling)
Công cụ đếm số lần mỗi giá trị xuất hiện trong từng cột. Từ bảng tần suất đó, bạn thấy phân bố giá trị và các mẫu định dạng lặp lại. Mức này nhanh, vì mỗi cột được xử lý độc lập.
Profiling chéo cột (cross-column)
Mức này gồm hai việc. Phân tích khoá (key analysis) tìm cột hoặc tổ hợp cột có thể làm khoá chính, rất hữu ích với hệ thống cũ không có khoá nhân tạo. Phân tích phụ thuộc (dependency analysis) tìm phụ thuộc hàm: nếu hai dòng có cùng giá trị cột X thì cũng có cùng giá trị cột Y. Ví dụ, mã bưu chính xác định tỉnh thành. Phát hiện này giúp tìm dữ liệu dư thừa và cơ hội chuẩn hoá bảng. Theo giáo trình về profiling trên ScienceDirect, mức này tốn tính toán hơn nhiều so với phân tích từng cột, vì thuật toán phải quét bảng nhiều lần.
Profiling chéo bảng (cross-table)
Công cụ so các tập giá trị giữa bảng này và bảng khác để tìm khoá ngoại có thể có. Nó cũng tìm bản ghi mồ côi, tức dòng con trỏ tới một dòng cha không tồn tại, và các khác biệt về cách ghi giữa hai nguồn. Đây là mức quyết định việc nối bảng có an toàn hay không. Theo mô tả trong một bằng sáng chế về công cụ profiling, đây là một trong những thao tác tốn kém nhất, vì phải đếm số giá trị chung giữa từng cặp cột.
Một bản profile thường đo những chỉ số nào?
Bảng dưới liệt kê các chỉ số hay gặp nhất và dấu hiệu cần để ý khi đọc kết quả.
| Chỉ số | Đo cái gì | Dấu hiệu cần xem lại |
|---|---|---|
| Kiểu dữ liệu suy ra | Giá trị thực là số, ngày hay chuỗi | Cột khai báo là ngày nhưng được lưu dạng chuỗi |
| Tỷ lệ null và rỗng | Số ô không có giá trị | Cột bắt buộc nhưng trống nhiều |
| Độ duy nhất (cardinality) | Số giá trị khác nhau so với số dòng | Cột mã khách hàng có giá trị lặp |
| Min, max, trung bình, phân vị | Phạm vi giá trị số và ngày | Số lượng âm, ngày ở tương lai xa |
| Độ dài chuỗi | Ngắn nhất, dài nhất, phổ biến nhất | Số điện thoại có độ dài lạ |
| Mẫu định dạng | Hình dạng chuỗi, ví dụ 9 chữ số sau số 0 | Nhiều mẫu cùng tồn tại trong một cột |
| Tần suất giá trị | Giá trị nào xuất hiện nhiều nhất | Giá trị mặc định như “0000” chiếm tỷ lệ lớn |
| Ứng viên khoá chính, khoá ngoại | Cột nào định danh được dòng, nối được bảng | Khoá ngoại có giá trị không có ở bảng cha |
Các chỉ số trên không tự mang ý nghĩa tốt hay xấu. Tỷ lệ null 40% ở cột “email” có thể chấp nhận được với khách mua tại quầy. Với cột “mã số thuế” của khách doanh nghiệp xuất hoá đơn, mức đó là vấn đề. Người hiểu nghiệp vụ phải đọc cùng người làm dữ liệu.
Ví dụ minh hoạ: profile bảng khách hàng của một chuỗi cửa hàng
Đây là ví dụ minh hoạ, số liệu không lấy từ doanh nghiệp thật. Một chuỗi bán lẻ có bảng khach_hang xuất từ phần mềm bán hàng cũ, khoảng 200.000 dòng, chuẩn bị chuyển sang hệ thống mới. Chạy profiling trên cột so_dien_thoai, bạn có thể gặp các kết quả sau.
- Số dòng 200.000, nhưng chỉ khoảng 150.000 dòng có giá trị. Phần còn lại là null hoặc chuỗi rỗng.
- Bảng tần suất cho thấy một giá trị “0000000000” lặp rất nhiều lần. Đây là giá trị nhân viên gõ tạm để qua được ô bắt buộc, không phải số thật.
- Mẫu định dạng có ít nhất ba kiểu cùng lúc: 10 chữ số bắt đầu bằng 0, số có dấu cách, và số bắt đầu bằng +84.
- Phân tích chéo cột cho thấy hai khách khác mã nhưng cùng số điện thoại và cùng tên. Đó là ứng viên bản ghi trùng.
Nếu chuyển thẳng, hệ thống mới sẽ nhận cả giá trị giả lẫn ba định dạng. Chương trình khách hàng thân thiết khi đó có thể gộp nhầm hàng nghìn khách vào cùng một số điện thoại. Profiling giúp phát hiện điều này trước khi chuyển, khi sửa còn rẻ.
Quy trình profiling gồm những bước nào?
Quy trình dưới đây áp dụng được cho cả công cụ chuyên dụng lẫn truy vấn tự viết.
Bước 1. Chọn nguồn và phạm vi
Chọn bảng liên quan trực tiếp đến mục tiêu, ví dụ ba bảng khách hàng, đơn hàng, sản phẩm cho dự án báo cáo doanh thu. Với bảng hàng trăm triệu dòng, bạn có thể lấy mẫu, nhưng cần nhớ mẫu ngẫu nhiên dễ bỏ sót giá trị hiếm. Các tình huống như khoá trùng thường cần quét toàn bộ.
Bước 2. Chạy profiling theo cột
Lấy các chỉ số trong bảng ở phần trên. Với SQL, bạn có thể bắt đầu bằng ba truy vấn đơn giản trên bảng khách hàng.
SELECT COUNT(*) AS tong_dong,
COUNT(so_dien_thoai) AS co_gia_tri,
COUNT(DISTINCT so_dien_thoai) AS gia_tri_duy_nhat
FROM khach_hang;
SELECT so_dien_thoai, COUNT(*) AS so_lan
FROM khach_hang
GROUP BY so_dien_thoai
ORDER BY so_lan DESC;
COUNT(cột) bỏ qua giá trị null, nên hiệu số giữa hai cột đếm đầu tiên chính là số ô trống. Truy vấn thứ hai là bảng tần suất, nơi các giá trị giả hiện lên đầu danh sách. Nếu cần ôn cú pháp, bạn có thể đọc bài SQL là gì.
Bước 3. Chạy chéo cột và chéo bảng
Kiểm tra cột nào là ứng viên khoá, và giá trị khoá ngoại có tồn tại ở bảng cha hay không. Truy vấn tìm đơn hàng mồ côi:
SELECT COUNT(*) AS don_mo_coi FROM don_hang d LEFT JOIN khach_hang k ON d.ma_kh = k.ma_kh WHERE k.ma_kh IS NULL;
Kết quả khác 0 nghĩa là có đơn hàng trỏ tới khách không tồn tại. Báo cáo doanh thu theo khách sẽ bị hụt nếu bạn nối bằng INNER JOIN mà chưa biết điều này.
Bước 4. Đọc kết quả cùng người hiểu nghiệp vụ
Ghi từng phát hiện theo ba cột: hiện tượng, nguyên nhân có thể và mức ảnh hưởng. Đừng sửa ngay trong lúc đọc. Giá trị trông lạ có thể là quy ước nội bộ hợp lệ, ví dụ mã “999” nghĩa là khách vãng lai.
Bước 5. Quyết định cho từng phát hiện
Mỗi phát hiện đi vào một trong ba nhóm: chấp nhận vì không ảnh hưởng mục tiêu, sửa tại nguồn, hoặc xử lý trong bước biến đổi. Nhóm thứ hai và thứ ba chính là đầu vào cho bước làm sạch dữ liệu. Những quy tắc bạn rút ra, chẳng hạn “số điện thoại phải có 10 chữ số”, có thể trở thành quy tắc kiểm tra chất lượng chạy định kỳ.
Có những công cụ nào để làm data profiling?
Bạn không bắt buộc phải mua phần mềm. Tài liệu kỹ thuật cho biết có thể profiling chỉ bằng tiện ích sẵn có của môi trường dữ liệu nguồn, nhưng công cụ chuyên dụng hiệu quả hơn nhiều trên khối lượng lớn. Các nhóm công cụ thường gặp:
- SQL thuần. Phù hợp bảng vừa và nhỏ, kiểm tra nhanh một vài cột. Hạn chế là phải tự viết truy vấn cho từng cột.
- Thư viện Python. Ví dụ gói ydata-profiling sinh báo cáo tự động cho DataFrame, gồm cảnh báo giá trị thiếu, trùng và biểu đồ tương quan giữa các cột. Một bài phân tích trên Medium từng chạy gói này với mẫu 10% của một bộ dữ liệu lớn vì giới hạn tài nguyên máy, cho thấy việc lấy mẫu là thực tế phổ biến.
- Công cụ chất lượng dữ liệu thương mại. Có IBM InfoSphere Information Analyzer, Informatica Data Quality, SAP Business Objects Data Services. Chúng hỗ trợ phân tích khoá, phân tích chéo miền và lưu lịch sử kết quả. Giá và gói thay đổi theo thời điểm, bạn cần hỏi nhà cung cấp.
- Tính năng profiling trong công cụ ETL. Nhiều nền tảng tích hợp dữ liệu có sẵn bước profiling trước khi thiết kế luồng. Bạn có thể xem cách chúng nằm trong luồng ở bài ETL là gì.
Khi chọn, hãy kiểm tra ba điều: có kết nối được nguồn của bạn không (ví dụ phần mềm kế toán nội địa, tệp Excel), có chạy được chéo bảng không, và có xuất kết quả để lưu làm bằng chứng không.
Doanh nghiệp Việt Nam dùng data profiling ở đâu?
Trước khi chuyển hệ thống
Doanh nghiệp đổi ERP, phần mềm kế toán hay CRM thường thừa hưởng dữ liệu nhập tay nhiều năm. Profiling tìm ra mã hàng trùng, khách hàng ghi theo nhiều cách và danh mục không khớp trước khi nạp vào hệ thống mới. Nó cũng có thể lộ ra yêu cầu mới cho hệ thống đích. Chi tiết quy trình chuyển nằm ở bài data migration là gì.
Trước khi xây báo cáo hoặc kho dữ liệu
Profiling cho biết nguồn nào đủ tốt để đưa vào, và thường là cơ sở cho quyết định nên dùng hay loại một nguồn ngay từ đầu dự án. Một chiều khác: nếu cột “ngày giao hàng” trống hơn một nửa, chỉ số thời gian giao hàng không thể tin được dù bảng điều khiển trông rất đẹp.
Khi dữ liệu có thông tin cá nhân
Bảng tần suất giá trị sẽ liệt kê nguyên văn số điện thoại, email hay số căn cước xuất hiện nhiều nhất. Báo cáo profile gửi qua email hoặc chia sẻ rộng sẽ vô tình phơi bày những giá trị đó. Với cột nhạy cảm, bạn nên chỉ xuất chỉ số tổng hợp (tỷ lệ null, độ dài, mẫu định dạng), hoặc làm trên bản đã che. Kỹ thuật che nằm ở bài data masking là gì.
Ưu điểm và hạn chế của data profiling
| Ưu điểm | Hạn chế |
|---|---|
| Phát hiện vấn đề từ dữ liệu thật, không dựa vào tài liệu cũ | Chỉ phát hiện được cái đo được. Dữ liệu sai nhưng hợp lệ về hình thức (ví dụ số điện thoại đúng định dạng nhưng của người khác) sẽ lọt qua |
| Cho căn cứ để quyết định dùng hay bỏ một nguồn từ sớm | Chéo cột và chéo bảng tốn tài nguyên trên bảng lớn |
| Rút ra quy tắc chất lượng và bổ sung metadata | Cần người hiểu nghiệp vụ để diễn giải, công cụ không tự phân biệt ngoại lệ hợp lệ |
| Tái chạy được khi dữ liệu thay đổi để so sánh theo thời gian | Là ảnh chụp tại một thời điểm, không thay cho giám sát liên tục |
Data profiling khác gì các khái niệm gần?
| Khái niệm | Làm gì | Quan hệ với profiling |
|---|---|---|
| Data profiling | Đo và mô tả dữ liệu hiện có | Bước khám phá |
| Data quality | Định nghĩa tiêu chuẩn và đánh giá đạt hay không | Profiling cung cấp số đo đầu vào |
| Data cleaning | Sửa, loại, chuẩn hoá giá trị sai | Chạy sau profiling, dựa trên phát hiện |
| Data mining | Tìm mẫu và tri thức để dự đoán hoặc phân nhóm | Profiling nằm ở giai đoạn hiểu dữ liệu trước đó |
| Data observability | Theo dõi sức khoẻ dữ liệu liên tục trong hệ thống | Profiling là ảnh chụp, observability là giám sát dài hạn |
Về tiêu chuẩn và các chiều đánh giá, bạn xem bài data quality là gì. Còn nếu muốn theo dõi dữ liệu liên tục sau khi đã profile, hãy đọc bài data observability là gì.
Khi nào nên và không nên làm data profiling?
Nên làm
- Trước khi chuyển dữ liệu sang hệ thống mới hoặc gộp hai hệ thống, ví dụ sau khi mua lại một công ty.
- Trước khi nạp một nguồn lạ vào kho dữ liệu hoặc báo cáo mà bạn chưa có tài liệu mô tả đáng tin.
- Khi báo cáo cho số khác nhau ở hai phòng ban và chưa rõ vì sao.
- Khi cần soạn quy tắc chất lượng dữ liệu nhưng chưa biết ngưỡng hợp lý, vì phân bố thực tế cho bạn mốc tham chiếu.
Chưa cần hoặc không đủ
- Bảng nhỏ vài trăm dòng mà một người đã tự đọc hết được. Một bộ lọc trong bảng tính là đủ.
- Khi bạn cần phát hiện sự cố dữ liệu từng giờ. Đây là việc của giám sát liên tục, profiling một lần không đáp ứng.
- Khi mục tiêu là xác minh dữ liệu có đúng với thực tế hay không, ví dụ số điện thoại có đúng người. Profiling không đối chiếu được với thế giới bên ngoài, cần đối soát với chứng từ hoặc nguồn khác.
Một báo cáo profile chỉ đúng với dữ liệu tại thời điểm chạy. Hãy ghi ngày chạy, phạm vi (toàn bộ hay mẫu) và phiên bản nguồn ngay trên báo cáo, để người đọc sau không dùng nhầm kết quả cũ.
Câu hỏi thường gặp
Data profiling là gì, nói ngắn gọn?
Đó là việc quét dữ liệu có sẵn để thu thống kê và mô tả cấu trúc, nội dung và quan hệ của nó. Kết quả cho biết dữ liệu có dùng được cho mục đích nào đó không, và cần xử lý gì trước.
Data profiling khác data cleaning ở điểm nào?
Profiling chỉ đo và ghi nhận, không thay đổi dữ liệu. Cleaning mới là bước sửa hoặc loại giá trị sai. Thứ tự thông thường là profiling trước, cleaning sau, vì bạn cần biết sai ở đâu rồi mới sửa đúng chỗ.
Có cần biết lập trình mới làm được data profiling không?
Không bắt buộc. Với bảng nhỏ, bạn có thể dùng bộ lọc và bảng tổng hợp trong bảng tính. Biết SQL cơ bản giúp đếm null, đếm giá trị duy nhất và kiểm tra khoá ngoại. Với dữ liệu lớn, công cụ chuyên dụng hoặc thư viện như ydata-profiling tiết kiệm nhiều thời gian.
Data profiling có làm chậm hệ thống đang chạy không?
Có thể. Phân tích chéo cột và chéo bảng cần quét nhiều lần và tốn tài nguyên. Nếu nguồn là cơ sở dữ liệu vận hành, bạn nên chạy trên bản sao hoặc ngoài giờ cao điểm, thay vì chạy thẳng trên hệ thống đang phục vụ giao dịch.
Nên profiling lại bao lâu một lần?
Không có chu kỳ chung. Hãy chạy lại khi nguồn thay đổi cấu trúc, khi đổi quy trình nhập liệu, hoặc trước mỗi đợt chuyển dữ liệu. Nếu cần theo dõi liên tục, bạn nên dùng các kiểm tra chất lượng tự động thay vì lặp lại profiling thủ công.
Báo cáo profile có chứa dữ liệu nhạy cảm không?
Có thể có. Bảng tần suất và giá trị min, max có thể lộ nguyên văn số điện thoại, email, số căn cước hay mức lương. Với các cột này, hãy xuất chỉ số tổng hợp thay vì giá trị gốc, và giới hạn người được xem báo cáo.
Bài viết thuộc chuyên mục Dữ liệu & phân tích trên VBPO Tech Blog, trang tin tức và kiến thức công nghệ cho doanh nghiệp Việt Nam về AI, dữ liệu, blockchain, chuyển đổi số và tự động hoá.