Chất lượng dữ liệu
Bài này hữu ích khi bạn thấy số liệu có vẻ sai mà chưa biết sai ở đâu, lỗi gì và nên báo cho ai.
Đọc xong bạn hiểu gì
- Cách dùng sáu chiều chất lượng dữ liệu để nhận ra từng loại lỗi trên một bảng cụ thể
- Mỗi loại lỗi ảnh hưởng đến báo cáo ra sao và nên báo cho ai
- Vì sao ô trống có khi vẫn hợp lệ và thấy lỗi chưa có nghĩa là bạn được tự sửa hay xoá dòng
Khoảng 15 phút đọc.
Bối cảnh
Sao Mai là một chuỗi cửa hàng tạp hoá và đồ gia dụng. Chuỗi bắt đầu từ một cửa hàng và đang mở thêm cửa hàng mới. Mỗi cửa hàng bán hàng qua máy tính tiền; dữ liệu bán hàng được gửi về văn phòng để các phòng ban làm báo cáo. Tên chuỗi và mọi số liệu trong bài là giả lập.
Mỗi đêm, các cửa hàng gửi về văn phòng một batch (lô dữ liệu) gồm mọi dòng hàng đã bán trong ngày. Batch phải đến chậm nhất 06:00 sáng hôm sau. Văn phòng cần nhận kịp để ra báo cáo doanh thu lúc 08:00.
Sáng 15/09/2026, dữ liệu bán hàng ngày 14/09/2026 gửi về có 10 dòng. Cộng hết các dòng thì được 835.000 đ. Người lập báo cáo thấy tổng tiền “có gì đó sai sai”. Họ chưa biết sai ở đâu, lỗi gì và nên hỏi ai.
Bài này giúp bạn gọi tên từng kiểu sai, chỉ ra được “dòng này sai ở chỗ nào” và biết nên báo cho ai.
Chất lượng dữ liệu là gì
Chất lượng dữ liệu (data quality) là mức độ dữ liệu đáp ứng được mục đích bạn định dùng. Một bảng có thể đủ tốt để xem xu hướng bán hàng cả tháng mà chưa đủ tốt để đối chiếu tiền của từng hoá đơn.
Không thể đánh giá chất lượng chỉ bằng cảm giác “số trông lạ lạ”, mà cần quy tắc nêu rõ dữ liệu phải thế nào mới đạt, chẳng hạn “dòng nào cũng phải có mã cửa hàng”. Khi có quy tắc viết ra, mọi người sẽ kiểm theo cùng một cách và ra cùng một kết quả. Khi thấy lỗi, bạn cũng biết dòng sai phạm quy tắc nào.
Người ta thường xếp các quy tắc theo sáu chiều chất lượng. Đây là cách chia trong khung chất lượng dữ liệu do Chính phủ Anh công bố (xem nguồn ở cuối bài). Mỗi chiều ứng với một câu hỏi:
- Đầy đủ (Completeness): có đủ các bản ghi cần có không, và bản ghi nào cũng có đủ những thông tin bắt buộc chưa?
- Duy nhất (Uniqueness): có việc nào bị ghi thành hai dòng không?
- Kịp thời (Timeliness): dữ liệu có đủ mới, và có sẵn đúng lúc cần dùng không?
- Hợp lệ (Validity): giá trị có đúng định dạng và nằm trong phạm vi cho phép không, chẳng hạn số lượng phải lớn hơn 0?
- Nhất quán (Consistency): các giá trị cùng nói về một thứ, dù ở trong một bảng hay giữa nhiều bảng, có mâu thuẫn với nhau không?
- Chính xác (Accuracy): dữ liệu có khớp với thực tế không, chẳng hạn có khớp với chứng từ đã được xác nhận không?
Bài chỉ minh hoạ mỗi chiều bằng một quy tắc, còn thực tế mỗi chiều có thể có nhiều quy tắc. Sáu chiều giúp nhìn dữ liệu từ nhiều phía và đỡ bỏ sót, nhưng không bảo đảm bắt được mọi vấn đề. Danh sách sáu chiều cũng không phải là bắt buộc. Chính khung chất lượng dữ liệu của Chính phủ Anh nêu rằng danh sách có thể thay đổi tuỳ dữ liệu và nhu cầu của người dùng. Với mỗi bảng, chỉ cần quy tắc ở những chiều quan trọng với cách dùng bảng ấy.
Thấy lỗi khác với quyết định sửa
Thấy một dòng sai, bạn dễ muốn sửa luôn cho kịp báo cáo. Có ba lý do để dừng lại một chút.
Người phát hiện thường không biết giá trị đúng là gì. Nếu một dòng thiếu mã cửa hàng, bạn có thể đoán mã từ batch gửi về. Nhưng đoán vẫn chỉ là đoán. Chỉ cửa hàng đã bán món đó mới biết chắc.
Xoá hay sửa thẳng có thể làm mất dấu vết. Nếu bạn xoá hoặc sửa dòng sai mà không giữ bản gốc và lịch sử xử lý, sẽ khó nhận ra lỗi đã từng xảy ra khi nó lặp lại, và việc tìm nguyên nhân gốc cũng khó hơn.
Ô trống hay giá trị lạ có khi vẫn hợp lệ, tuỳ bối cảnh. Cột “mã thẻ thành viên” để trống là bình thường nếu khách không có thẻ. Số lượng âm có thể hợp lệ ở một hệ thống ghi hàng trả lại bằng dòng âm. Chỉ có quy tắc đã thống nhất mới giúp xác định đâu là lỗi.
Cách làm thường gặp là giữ nguyên dòng gốc, đánh dấu dòng đó phạm quy tắc nào, rồi báo cho người có quyền quyết định. Trên báo cáo, cũng cần ghi rõ những dòng đang bị loại ra hoặc đang chờ xác nhận. Cách này hợp khi báo cáo còn chờ được, hoặc có thể ghi chú kèm.
Khi báo cáo phải ra ngay và lỗi đã được xác nhận, chẳng hạn một dòng chỉ là bản gửi lặp y hệt của dòng khác, tổ chức có thể cho phép tạm loại dòng đó khỏi báo cáo. Dù vậy, dữ liệu gốc phải còn, phải ghi lại lần loại dòng và cho người dùng báo cáo biết. Đánh dấu một dòng không có nghĩa là đã có quyền loại nó. Hai dòng trùng khoá mà nội dung khác nhau thì không thể xử lý như bản gửi lặp.
Ví dụ giải sẵn
Mỗi cửa hàng gửi về một batch. Đây là thời điểm văn phòng nhận được từng batch.
| Batch | Cửa hàng | Lúc nhận |
|---|---|---|
| L-CH01-0914 | CH01 | 15/09/2026 02:10 |
| L-CH02-0914 | CH02 | 15/09/2026 03:20 |
| L-CH03-0914 | CH03 | 15/09/2026 07:10 |
Bảng dưới liệt kê các dòng trong batch, rút gọn còn ba cột. Cột “Dòng” là mã riêng của từng dòng nhận về, ví dụ R03. Đừng nhầm mã này với số thứ tự dòng hàng trên hoá đơn. Phần Duy nhất sẽ giải thích thêm về số thứ tự.
| Dòng | Hoá đơn | Thành tiền (đ) |
|---|---|---|
| R01 | HD2001 | 80.000 |
| R02 | HD2001 | 60.000 |
| R03 | HD2002 | 150.000 |
| R04 | HD2002 | 150.000 |
| R05 | HD2003 | 90.000 |
| R06 | HD2004 | -90.000 |
| R07 | HD2005 | 120.000 |
| R08 | HD2006 | 70.000 |
| R09 | HD2007 | 110.000 |
| R10 | HD2008 | 95.000 |
Hãy lần lượt kiểm từng chiều. Trong batch nhận, chiều nào cũng có lỗi.
1. Đầy đủ: dòng thiếu mã cửa hàng
Quy tắc: dòng nào cũng phải có mã cửa hàng. Có 1 dòng phạm quy tắc này.
| Dòng | Batch | Cửa hàng |
|---|---|---|
| R05 | L-CH02-0914 | (trống) |
Ảnh hưởng: nếu bạn vẫn cộng dòng thiếu mã cửa hàng, tổng tiền của cả chuỗi không thay đổi chỉ vì thiếu mã, nhưng vẫn chưa biết phải tính khoản tiền ấy cho cửa hàng nào. Nếu báo cáo theo cửa hàng bỏ qua các dòng chưa rõ cửa hàng, số liệu sẽ hụt phần tương ứng. Có thể gom các dòng ấy vào nhóm “chưa rõ cửa hàng”.
Báo cho: cửa hàng đã gửi batch. Dòng thiếu mã nằm trong batch của CH02 nên nhiều khả năng thuộc CH02. Nên để cửa hàng xác nhận, đừng tự điền.
2. Duy nhất: một dòng bị ghi hai lần
Quy tắc: mỗi cặp mã hoá đơn và số thứ tự dòng chỉ được xuất hiện một lần. Cặp này là khoá nhận diện của một dòng hàng. Dựa vào khoá, có thể xác định được đúng một món trên một hoá đơn. Có 1 dòng phạm quy tắc này.
| Dòng | Hoá đơn | Số thứ tự dòng |
|---|---|---|
| R03 | HD2002 | 1 |
| R04 | HD2002 | 1 |
Ảnh hưởng: tổng tiền bị cộng thừa. Cộng cả batch được 835.000 đ. Bỏ dòng trùng thì còn 685.000 đ.
Báo cho: người phụ trách khâu nhận dữ liệu để tìm xem vì sao một dòng bị gửi hai lần.
3. Kịp thời: một batch đến trễ hạn
Quy tắc: batch phải đến chậm nhất lúc 06:00. Có 1 batch đến trễ, gồm 2 dòng.
| Dòng | Batch | Cửa hàng |
|---|---|---|
| R09 | L-CH03-0914 | CH03 |
| R10 | L-CH03-0914 | CH03 |
Ảnh hưởng: batch đến lúc 07:10, vẫn trước giờ ra báo cáo 08:00. Nếu báo cáo chỉ lấy dữ liệu đến đúng hạn, CH03 sẽ không có doanh thu ngày 14/09 trên báo cáo dù hôm đó vẫn bán hàng. Nếu báo cáo lấy cả batch đến trễ, nên cho người xem biết số của CH03 về sau hạn.
Báo cho: cửa hàng CH03 và những người dùng báo cáo.
4. Hợp lệ: số lượng âm
Quy tắc: số lượng phải lớn hơn 0, và trạng thái phải nằm trong danh sách giá trị cho phép (PAID, VOID). Có 1 dòng phạm quy tắc này.
| Dòng | Số lượng | Thành tiền (đ) |
|---|---|---|
| R06 | -2 | -90.000 |
Ảnh hưởng: dòng có số lượng âm kéo tổng tiền xuống. Có thể đây là một lần trả hàng ghi sai cách, cũng có thể chỉ là gõ nhầm dấu. Chỉ nhìn dữ liệu thì chưa biết được.
Báo cho: cửa hàng đã gửi batch để biết thực tế đã xảy ra chuyện gì.
5. Nhất quán: tổng hoá đơn không khớp tổng các dòng
Quy tắc: tổng tiền ghi trên hoá đơn phải bằng tổng thành tiền các dòng của hoá đơn đó, sau khi đã bỏ dòng trùng. Trong ví dụ này, Sao Mai quy ước tổng hoá đơn chỉ gồm thành tiền các dòng, không có khoản điều chỉnh nào khác. Ở nơi khác, tổng hoá đơn có thể còn gồm giảm giá, thuế hay các khoản khác. Khi đó, quy tắc phải tính cả những khoản ấy. Có 1 hoá đơn phạm quy tắc này. Đặt hai bảng cạnh nhau:
| Hoá đơn | Tổng ghi trên hoá đơn (đ) |
|---|---|
| HD2006 | 100.000 |
| Dòng | Hoá đơn | Thành tiền (đ) |
|---|---|---|
| R08 | HD2006 | 70.000 |
Ảnh hưởng: hai bảng không khớp nhau theo quy tắc, nhưng chưa biết bảng nào sai, thậm chí có thể cả hai cùng sai. Có thể thiếu một dòng hàng, cũng có thể tổng hoá đơn bị ghi nhầm. Báo cáo cộng theo dòng và báo cáo cộng theo hoá đơn sẽ cho ra hai tổng tiền khác nhau.
Báo cho: cửa hàng CH02, nơi xuất hoá đơn này.
6. Chính xác: số tiền không khớp chứng từ
Quy tắc: thành tiền của một dòng phải bằng số tiền của chính dòng hàng đó trên chứng từ dùng để đối chiếu. Chứng từ là giấy tờ ghi lại giao dịch. Số trên dòng và số trên chứng từ phải tính theo cùng một cách. Dữ liệu giả lập coi chứng từ là căn cứ đúng. Ngoài thực tế, lệch với chứng từ trước hết là dấu hiệu cần xác minh. Văn phòng rút 3 chứng từ ra đối chiếu và thấy 1 dòng không khớp.
| Dòng | Hoá đơn | Thành tiền (đ) |
|---|---|---|
| R07 | HD2005 | 120.000 |
| Hoá đơn | Số thứ tự dòng | Số tiền (đ) |
|---|---|---|
| HD2005 | 1 | 210.000 |
Ảnh hưởng: trong ví dụ này, đây là lỗi khó thấy nhất. Dòng sai vẫn vượt qua mọi quy tắc khác: đủ thông tin, không trùng, đến đúng hạn, giá trị hợp lệ. Tổng hoá đơn cũng ghi đúng bằng dòng, nên phải so với chứng từ mới thấy lệch. Văn phòng chỉ đối chiếu một phần chứng từ nên những dòng chưa đối chiếu vẫn có thể mắc lỗi tương tự.
Báo cho: phòng Kế toán và cửa hàng. Cũng cần kiểm lại chính tờ chứng từ vì chứng từ cũng có thể ghi sai.
Bảng tổng hợp
| Chiều | Lỗi tìm thấy | Báo cho |
|---|---|---|
| Đầy đủ | R05 thiếu mã cửa hàng | Cửa hàng đã gửi batch |
| Duy nhất | R04 trùng R03 | Người phụ trách khâu nhận dữ liệu |
| Kịp thời | Batch của CH03 đến lúc 07:10 | CH03, người dùng báo cáo |
| Hợp lệ | R06 có số lượng âm | Cửa hàng đã gửi batch |
| Nhất quán | HD2006 lệch tổng | CH02 |
| Chính xác | HD2005 không khớp chứng từ | Kế toán, cửa hàng |
Phiếu quy tắc chất lượng đã điền
Nên viết mỗi quy tắc thành một phiếu để mọi người kiểm theo cùng một cách. Phiếu dưới đây dành cho quy tắc đầu tiên: dòng hàng phải có mã cửa hàng.
| Mục | Nội dung |
|---|---|
| Tên quy tắc | Dòng hàng phải có mã cửa hàng |
| Chiều chất lượng | Đầy đủ |
| Áp dụng cho | Cột mã cửa hàng trong các dòng của batch nhận |
| Điều kiện đạt | Ô mã cửa hàng không để trống |
| Vì sao cần | Báo cáo doanh thu theo cửa hàng cần biết mỗi dòng thuộc cửa hàng nào |
| Khi nào để trống vẫn hợp lệ | Không có ngoại lệ với dòng bán hàng tại cửa hàng |
| Kiểm khi nào | Mỗi lần nhận một batch, trước khi lập báo cáo lúc 08:00 |
| Khi phát hiện lỗi | Giữ nguyên dòng, đánh dấu và báo cửa hàng đã gửi batch. Trên báo cáo theo cửa hàng, ghi chú số dòng đang chờ xác nhận |
| Người quyết định sửa | Cửa hàng đã gửi batch xác nhận mã đúng |
| Người phê duyệt quy tắc | Trưởng phòng phụ trách báo cáo doanh thu |
Mẫu phiếu trống để bạn dùng lại nằm ở mục Tóm tắt.
Khi nào nên làm, khi nào chưa cần
Nên viết quy tắc và kiểm thường xuyên khi bạn dùng dữ liệu để lập báo cáo phục vụ quyết định. Điều này càng cần khi dữ liệu đến từ nhiều nơi, chẳng hạn nhiều cửa hàng.
Có cách khác: không cần đủ cả sáu chiều ngay từ đầu, mà có thể bắt đầu bằng vài quy tắc cho những lỗi đã từng gây phiền rồi bổ sung dần. Với chiều chính xác, đối chiếu từng dòng với chứng từ thường rất tốn công. Khi nguồn lực có hạn và có thể chấp nhận bỏ sót, có thể chỉ đối chiếu một phần, ưu tiên những giao dịch đáng chú ý. Khi đó, kết quả chỉ nói được về phần đã kiểm. Nếu cần chắc chắn về từng giao dịch thì phải kiểm đủ những giao dịch đó.
Chưa cần dựng cả một quy trình kiểm tra khi dữ liệu chỉ để xem nhanh một lần, không ai dựa vào đó để quyết định, hoặc khi phạm vi nhỏ, sai cũng không gây hậu quả lớn và có thể kiểm bằng tay. Nếu một người vừa nhập vừa dùng dữ liệu thì kiểm tra sẽ đơn giản hơn. Dù vậy, nếu số liệu dẫn tới quyết định quan trọng thì vẫn nên kiểm. Khi nhiều người bắt đầu dùng lại dữ liệu, nên viết quy tắc.
Tự làm
Sao Mai thêm cột 'mã thẻ thành viên' vào các dòng hàng. Rất nhiều dòng để trống cột này. Như vậy có phải lỗi đầy đủ không?
Gợi ý
Xem đáp án
Chưa chắc. Khách không có thẻ thành viên thì ô trống là đúng với thực tế. Ô trống chỉ là lỗi đầy đủ khi dòng đó thuộc diện phải có mã thẻ theo quy tắc đã thống nhất, chẳng hạn giao dịch có dùng ưu đãi thành viên. Không nhất thiết giao dịch nào cũng phải có mã thẻ.
Sao Mai có thể đặt hai quy tắc đi kèm nhau. Quy tắc đầy đủ có điều kiện: giao dịch thuộc diện bắt buộc thì phải có mã thẻ, các giao dịch khác được để trống. Quy tắc hợp lệ: đã điền thì phải là một mã thẻ có thật. Quy tắc hợp lệ không thay được quy tắc đầy đủ.
Với những dòng được phép để trống, vẫn nên hỏi lại cửa hàng nếu số ô trống tăng bất thường, chẳng hạn một cửa hàng bỗng không còn dòng nào có mã thẻ, dù dữ liệu chưa phạm quy tắc nào.
Sắp đến giờ ra báo cáo. Một đồng nghiệp đề nghị xoá luôn dòng R04 khỏi dữ liệu cho tổng tiền đúng. Bạn trả lời thế nào?
Gợi ý
Xem đáp án
Không nên xoá khỏi dữ liệu gốc. Hãy giữ R04 và đánh dấu nó trùng khoá với R03. Nếu đã xác nhận R04 chỉ là bản gửi lặp của R03, và quy trình của Sao Mai cho phép, thì báo cáo chỉ cộng một bản. Dữ liệu gốc vẫn còn để người phụ trách khâu nhận dữ liệu tìm nguyên nhân. Nếu chưa xác nhận được, hoặc bạn không có quyền quyết định, hãy báo người phụ trách để họ chọn: chờ thêm, ra báo cáo tạm có ghi chú, hay cách khác. Dù chọn cách nào cũng nên nói rõ: tổng sau khi bỏ dòng trùng vẫn chưa phải doanh thu đã được xác nhận, vì batch này còn những lỗi khác chưa xử lý.
Một món hàng có đơn giá bị gõ thừa một số 0. Số vẫn dương, tổng hoá đơn cũng tính theo đơn giá sai nên vẫn khớp với các dòng. Lỗi này thuộc chiều nào, và quy tắc nào bắt được nó?
Gợi ý
Xem đáp án
Đây là lỗi chính xác: dữ liệu hợp lệ về hình thức và khớp nhau giữa hai bảng, nhưng không đúng với thực tế. Bạn có thể phát hiện lỗi bằng cách đối chiếu với một nguồn đã được xác nhận, đúng thời điểm và cùng điều kiện giao dịch, như chứng từ hoặc bảng giá đang áp dụng cho món đó. Cần lưu ý giá bán thực tế có thể khác giá niêm yết vì có giảm giá. Nguồn đối chiếu cũng có thể sai, nên thấy lệch là dấu hiệu cần xác minh. Nếu Sao Mai có quy tắc hợp lệ về khoảng giá cho từng món, chẳng hạn “đơn giá không được vượt quá một mức trần”, quy tắc đó cũng có thể bắt được lỗi, nhưng chỉ khi giá sai vượt ra ngoài khoảng ấy. Vì vậy hai cách bổ sung cho nhau, chứ không thay thế nhau.
Hiểu nhầm thường gặp
“Ô trống nào cũng là lỗi.” Ô trống chỉ là lỗi khi quy tắc nói cột đó bắt buộc. Có những ô trống đúng với thực tế.
“Thấy lỗi thì sửa ngay là tốt nhất.” Người phát hiện thường không biết giá trị đúng. Nếu bạn giữ dòng gốc, đánh dấu và báo cho người có quyền quyết định, người xử lý sẽ có cơ hội sửa cả nguyên nhân thay vì chỉ sửa một dòng.
“Dữ liệu qua hết các quy tắc là dữ liệu đúng.” Mỗi quy tắc chỉ bắt được những lỗi mà nó nhắm tới. Lỗi chính xác ở HD2005 vẫn lọt qua mọi quy tắc khác.
“Chất lượng dữ liệu là việc của bộ phận IT.” IT có thể chạy các quy tắc, nhưng người hiểu nghiệp vụ mới biết quy tắc nào đúng và giá trị nào là thật. Trong ví dụ trên, phần lớn lỗi đều phải hỏi cửa hàng hoặc Kế toán.
Tóm tắt
- Chất lượng dữ liệu là mức độ dữ liệu đáp ứng được mục đích bạn định dùng. Đánh giá chất lượng bằng quy tắc viết ra.
- Sáu chiều: đầy đủ, duy nhất, kịp thời, hợp lệ, nhất quán, chính xác. Mỗi chiều là một câu hỏi để kiểm.
- Với mỗi lỗi, nên nêu nó ảnh hưởng đến báo cáo ra sao và cần báo cho ai.
- Thấy lỗi chưa có nghĩa là được tự sửa hay xoá dòng. Ô trống có khi vẫn hợp lệ, tuỳ bối cảnh.
Thuật ngữ trong bài
| Tiếng Việt | Tiếng Anh |
|---|---|
| Lô dữ liệu | batch |
| Chất lượng dữ liệu | Data quality |
| Đầy đủ | Completeness |
| Duy nhất | Uniqueness |
| Kịp thời | Timeliness |
| Hợp lệ | Validity |
| Nhất quán | Consistency |
| Chính xác | Accuracy |
Mẫu tải về: Phiếu quy tắc chất lượng (Word). Các mục giống phiếu đã điền ở trên, để trống cho bạn điền.
Bài liên quan: “Hai báo cáo, hai con số” (B1) nói về chuyện số doanh thu hai bên lệch nhau vì cách tính, chứ không phải vì dữ liệu sai. “Tổ chức lớp dữ liệu” (A5) nói về cách giữ dữ liệu gốc khi phải nhận lại một batch.