Skip to content

🎮 Mini Game Buổi 3: Dirty Data Fixer

Bạn là Data Cleaner chuyên nghiệp — nhận 7 bộ dữ liệu bẩn từ các phòng ban khác nhau. Nhiệm vụ: chọn đúng cách sửa trước khi dữ liệu bẩn gây thiệt hại cho công ty!


🎯 Mục tiêu học tập

Sau khi hoàn thành game, bạn sẽ:

  1. Nhận diện nhanh 6 loại dữ liệu bẩn phổ biến: duplicate, missing, formatting, typo, outlier, inconsistency
  2. Chọn đúng hàm Excel để xử lý: TRIM, CLEAN, SUBSTITUTE, IFERROR, TEXT
  3. Áp dụng Remove Duplicates đúng cách — biết khi nào giữ, khi nào xóa
  4. Xử lý missing values bằng phương pháp phù hợp với từng bối cảnh
  5. Chuẩn hóa dữ liệu theo nguyên tắc Tidy Data
  6. Sử dụng Pivot Table để tổng hợp và kiểm tra dữ liệu sau cleaning
  7. Tư duy data quality — garbage in, garbage out

📜 Luật chơi

┌──────────────────────────────────────────────────────┐
│  BẠN = Dirty Data Fixer 🧹                          │
│  NHIỆM VỤ = Sửa 7 bộ dữ liệu bẩn từ thực tế      │
│  MỖI VÒNG = 1 loại lỗi data + 3 cách sửa           │
│  3 LỰA CHỌN mỗi vòng — chỉ 1 đáp án tốt nhất      │
│  THỜI GIAN = 90 giây/vòng (nhanh = bonus XP)        │
│  MỤC TIÊU = Thu thập ≥ 85 XP để đạt hạng Gold 🥇   │
└──────────────────────────────────────────────────────┘

Cách tính điểm mỗi vòng:

Thời gian trả lờiSpeed Bonus
≤ 30 giây+5 XP
31–60 giây+3 XP
61–90 giây+1 XP
> 90 giây (hết giờ)0 XP, tự động chọn sai

🎲 Cơ chế game

Chỉ số theo dõi

Chỉ sốIconMô tảMục tiêu
Accuracy🎯Chọn đúng cách sửa tối ưu nhất≥ 6/7 câu đúng
Data Quality Score📊Chất lượng dữ liệu sau khi sửa (tính theo % clean)≥ 80%
Speed⏱️Tổng thời gian & speed bonusTối đa 35 bonus XP

Công thức XP

XP vòng = Accuracy Points + Speed Bonus + Data Quality Bonus + Random Event Modifier
XP tổng = Σ (XP vòng 1..7) + Badge Bonus

Tổng XP tối đa lý thuyết: 85 (Accuracy) + 35 (Speed) + 35 (Data Quality) + bonus events ≈ 155+ XP


📋 Kịch bản chi tiết


🧹 Vòng 1: Khoảng trắng "vô hình" phá hỏng VLOOKUP

Độ khó: ⭐ Dễ — Warm-up

📄 Bối cảnh:

Bạn vừa vào làm DA tại công ty phân phối SaigonFood JSC. Team Sales gửi file Excel báo cáo doanh thu tháng 1, yêu cầu bạn VLOOKUP mã sản phẩm để lấy tên sản phẩm từ bảng master. Nhưng VLOOKUP trả về #N/A cho 40% dòng dù mã sản phẩm rõ ràng có trong bảng master.

📊 Dữ liệu mẫu:

Mã SP (Bảng Sales)Mã SP (Bảng Master)VLOOKUP kết quả
"SP001 " (có space cuối)"SP001"#N/A ❌
" SP002" (có space đầu)"SP002"#N/A ❌
"SP003""SP003"✅ Tìm thấy
"SP 004" (space giữa)"SP004"#N/A ❌

Bạn kiểm tra bằng hàm LEN("SP001 ") = 6 thay vì 5. Rõ ràng có khoảng trắng thừa ẩn trong dữ liệu.

🧹 Câu hỏi: Cách sửa nào xử lý triệt để nhất?

Lựa chọnHành độngAccuracySpeedData Quality
ADùng Find & Replace: tìm " " (space), replace bằng "" (rỗng) → xóa tất cả space+3+1~5+1
BDùng =TRIM(CLEAN(A2)) để loại space đầu/cuối + ký tự ẩn, rồi xử lý space giữa bằng =SUBSTITUTE(TRIM(CLEAN(A2))," ","") cho mã SP+10+1~5+5
CGõ lại tay toàn bộ mã sản phẩm cho chuẩn+1+1~5+2

🧹 Vòng 2: Tên thành phố "trăm kiểu viết"

Độ khó: ⭐ Dễ

📄 Bối cảnh:

Phòng HR của công ty bảo hiểm BảoViệt Plus gửi bạn file nhân sự 2,500 nhân viên trên toàn quốc để phân tích phân bổ theo khu vực. Bạn tạo Pivot Table nhóm theo cột "Thành phố" và phát hiện... Hà Nội bị tách thành 7 dòng riêng biệt!

📊 Pivot Table kết quả (sai):

Thành phốSố NV
Ha Noi85
Hà Nội290
HÀ NỘI45
Hà nội120
hà nội15
Hanoi30
TP Ha Noi10
Tổng thật: 595

Khi báo cáo ghi "Hà Nội có 290 nhân viên" → sai lệch 51% so với thực tế (595 NV).

🧹 Câu hỏi: Cách chuẩn hóa cột "Thành phố" hiệu quả nhất?

Lựa chọnHành độngAccuracySpeedData Quality
ADùng =UPPER(A2) để chuyển hết thành chữ in hoa+3+1~5+2
BTạo bảng mapping chuẩn (Ha Noi → Hà Nội, HÀ NỘI → Hà Nội, Hanoi → Hà Nội...) rồi dùng =VLOOKUP hoặc =SUBSTITUTE kết hợp =TRIM(PROPER(...)) để chuẩn hóa về 1 tên duy nhất+10+1~5+5
CDùng Filter từng giá trị rồi sửa tay+2+1~5+3

🧹 Vòng 3: 500 đơn hàng trùng lặp "kép"

Độ khó: ⭐⭐ Trung bình

📄 Bối cảnh:

Team kinh doanh của sàn TMĐT MuaSắm24h export đơn hàng tháng 1 từ 3 hệ thống khác nhau (POS, Website, App) vào chung 1 file Excel. Tổng: 15,000 dòng. Sếp yêu cầu tính tổng doanh thu. Bạn nghi ngờ có dữ liệu trùng.

📊 Dữ liệu mẫu:

RowMã ĐHKhách hàngNgàyGiá trịNguồn
1ĐH-0012Nguyễn Văn An05/01/20261,200,000POS
2ĐH-0012Nguyễn Văn An05/01/20261,200,000Website
3ĐH-0012Nguyen Van An05/01/20261,200,000App
4ĐH-0045Trần Thị Bình06/01/2026850,000POS
5ĐH-0045Trần Thị Bình06/01/2026950,000Website
  • Row 1–3: Cùng mã ĐH, cùng ngày, cùng giá trị → trùng lặp hoàn toàn (chỉ khác nguồn + format tên)
  • Row 4–5: Cùng mã ĐH, cùng ngày, khác giá trị → có thể là bổ sung (đơn sửa giá) hoặc lỗi

Nếu không xử lý: doanh thu bị tính gấp 3 lần cho ĐH-0012!

🧹 Câu hỏi: Xử lý duplicate thế nào cho đúng?

Lựa chọnHành độngAccuracySpeedData Quality
ADùng Remove Duplicates trên toàn bộ file → xóa hết dòng trùng+3+1~5+2
BBước 1: Chuẩn hóa cột tên (TRIM, PROPER) + cột nguồn → tạo cột key ghép (Mã ĐH + Ngày). Bước 2: Dùng COUNTIF để đánh dấu duplicate. Bước 3: Kiểm tra từng nhóm trùng — nếu cùng giá trị → giữ 1, nếu khác giá trị → xác minh với team trước khi xóa+10+1~5+5
CSort theo mã đơn hàng rồi xóa tay các dòng trùng+2+1~5+1

🧹 Vòng 4: Missing values — điền hay xóa?

Độ khó: ⭐⭐ Trung bình

📄 Bối cảnh:

Phòng Finance của chuỗi cà phê HighlandsCoffee gửi bạn file chi phí hoạt động 120 chi nhánh trong 12 tháng. Sếp cần tổng hợp chi phí trung bình theo khu vực. Nhưng 18% ô dữ liệu bị trống (missing values).

📊 Dữ liệu mẫu (triệu VNĐ/tháng):

Chi nhánhKhu vựcT1T2T3T4
CN Quận 1HCM859088
CN Quận 3HCM7275
CN Đống ĐaHN656870
CN mới Thủ ĐứcHCM45
  • CN Quận 1: thiếu T3 — có thể dùng trung bình T1, T2, T4 ≈ 87.7
  • CN Quận 3: thiếu T2 + T3 — thiếu 50% dữ liệu
  • CN Đống Đa: thiếu T1 — chi nhánh mới mở tháng 2?
  • CN mới Thủ Đức: thiếu T1–T3 — mới khai trương T4, không nên điền

🧹 Câu hỏi: Xử lý missing values thế nào?

Lựa chọnHành độngAccuracySpeedData Quality
AĐiền tất cả ô trống bằng 0 — để dễ tính toán+2+1~5+1
BXóa tất cả dòng có missing values — chỉ giữ dữ liệu đầy đủ+3+1~5+2
CPhân loại nguyên nhân trước: (1) Thiếu ngẫu nhiên → dùng AVERAGE các tháng có data để ước tính, bọc IFERROR phòng lỗi. (2) Thiếu do chưa tồn tại (CN mới) → để trống hoặc đánh dấu "N/A", không điền số. (3) Thiếu >50% → cân nhắc loại khỏi phân tích, ghi chú riêng+10+1~5+5

🧹 Vòng 5: Ngày tháng "hỗn loạn" — Excel tưởng text

Độ khó: ⭐⭐⭐ Khó

📄 Bối cảnh:

Team Sales của công ty xuất nhập khẩu VietTrade Corp tổng hợp hợp đồng từ 5 chi nhánh ASEAN. Mỗi chi nhánh nhập ngày theo format khác nhau. File tổng hợp có 3,000 hợp đồng — bạn cần phân tích doanh thu theo tháng, nhưng Excel không nhận cột ngày!

📊 Dữ liệu mẫu:

RowNgày HĐ (raw)Chi nhánhGiá trị (USD)
115/01/2026Vietnam50,000
201-15-2026Philippines32,000
3Jan 15, 2026Singapore75,000
42026/01/15Japan120,000
515 Januari 2026Indonesia28,000
  • Row 1: DD/MM/YYYY → Excel có thể nhầm thành MM/DD/YYYY
  • Row 2: MM-DD-YYYY → format Mỹ
  • Row 3: Text tiếng Anh → Excel lưu dạng text, không phải date
  • Row 4: ISO format → thường OK
  • Row 5: Tiếng Indonesia → hoàn toàn text

Nếu dùng MONTH() trực tiếp → lỗi hoặc sai tháng cho >60% dữ liệu.

🧹 Câu hỏi: Chuẩn hóa cột ngày thế nào?

Lựa chọnHành độngAccuracySpeedData Quality
ADùng hàm =DATEVALUE(A2) cho tất cả → tự động chuyển thành ngày+2+1~5+1
BDùng Text to Columns → chọn date format MDY+3+1~5+2
CXử lý theo từng nhóm chi nhánh: (1) Dùng =TEXT(A2,"YYYY-MM-DD") cho row đã là date. (2) Dùng =DATE(MID(...),LEFT(...),...) kết hợp MID/LEFT/RIGHT để tách ngày/tháng/năm cho row text. (3) Dùng SUBSTITUTE để chuẩn hóa tên tháng Indonesia → số. (4) Quy về 1 format chuẩn ISO: YYYY-MM-DD cho toàn bộ file+10+1~5+5

🧹 Vòng 6: Dữ liệu "xấu xí" — vi phạm Tidy Data

Độ khó: ⭐⭐⭐ Khó

📄 Bối cảnh:

Phòng Marketing của hãng mỹ phẩm BeautyVN gửi bạn file báo cáo doanh thu Q4 để làm Pivot Table phân tích theo sản phẩm × kênh bán. Nhưng file được trình bày đẹp cho người đọc, không phải cho phân tích.

📊 Dữ liệu gốc (format "báo cáo đẹp"):

┌─────────────┬────────────────────────────────────┐
│             │         Doanh thu (triệu VNĐ)     │
│  Sản phẩm   ├──────────┬───────────┬─────────────┤
│             │ Shopee   │  Lazada   │  Cửa hàng   │
├─────────────┼──────────┼───────────┼─────────────┤
│ Kem chống   │   120    │    95     │    200      │
│ nắng        │          │           │             │
├─────────────┼──────────┼───────────┼─────────────┤
│ Son môi     │   180    │   150     │    300      │
├─────────────┼──────────┼───────────┼─────────────┤
│ Serum       │    85    │    70     │    150      │
└─────────────┴──────────┴───────────┴─────────────┘

Ghi chú: * Đã bao gồm VAT | Đơn vị: triệu VNĐ
Merged cells: Dòng header "Doanh thu" merge 3 cột

Vấn đề: Merged cells, multi-level header, ghi chú rải rác → Pivot Table không thể đọc được file này.

🧹 Câu hỏi: Chuyển đổi dữ liệu theo nguyên tắc nào?

Lựa chọnHành độngAccuracySpeedData Quality
AUnmerge cells + xóa ghi chú → giữ nguyên format bảng ngang+3+1~5+2
BCopy-paste values vào sheet mới, sửa header+4+1~5+2
CChuyển sang Tidy Data format — 3 nguyên tắc: (1) Mỗi biến = 1 cột, (2) Mỗi quan sát = 1 dòng, (3) Mỗi giá trị = 1 ô. Kết quả: 3 cột [Sản phẩm, Kênh bán, Doanh thu] × 9 dòng. Unmerge cells, xóa ghi chú, unpivot bảng ngang thành bảng dọc+10+1~5+5

Tidy Data format đúng (9 dòng × 3 cột):

Sản phẩmKênh bánDoanh thu (triệu)
Kem chống nắngShopee120
Kem chống nắngLazada95
Kem chống nắngCửa hàng200
Son môiShopee180
Son môiLazada150
Son môiCửa hàng300
SerumShopee85
SerumLazada70
SerumCửa hàng150

🧹 Vòng 7: Pivot Table — phân tích sau cleaning

Độ khó: ⭐⭐⭐⭐ Rất khó — Boss Round 🏴‍☠️

📄 Bối cảnh:

Bạn đã clean xong bộ dữ liệu bán hàng 50,000 đơn của chuỗi điện máy ĐiệnMáyVN (Q4/2025). Sếp yêu cầu tạo Pivot Table trả lời 3 câu hỏi kinh doanh quan trọng:

  1. Top 5 sản phẩm doanh thu cao nhất theo từng khu vực?
  2. Chi nhánh nào có tỷ lệ trả hàng (return rate) cao bất thường?
  3. Xu hướng doanh thu tháng 10 → 11 → 12: tăng hay giảm theo category?

📊 Dữ liệu đã clean (Tidy format):

CộtKiểuVí dụ
Mã ĐHTextĐH-50001
NgàyDate (YYYY-MM-DD)2025-10-15
Chi nhánhText (chuẩn hóa)CN Quận 1 - HCM
Khu vựcTextMiền Nam
CategoryTextĐiện thoại
Sản phẩmTextiPhone 16 Pro
Doanh thuNumber28,990,000
Trạng tháiTextHoàn thành / Trả hàng

Bạn tạo Pivot Table. Nhưng kết quả ban đầu trông kỳ lạ: "Miền nam" và "Miền Nam" tách riêng, một số chi nhánh có return rate = 45% (quá cao), tháng 12 doanh thu hiển thị thấp bất thường.

🧹 Câu hỏi: Nguyên nhân và cách xử lý?

Lựa chọnHành độngAccuracySpeedData Quality
APivot Table bị lỗi — xóa tạo lại, chọn đúng range+2+1~5+1
BSửa trực tiếp trong Pivot Table: group "Miền nam" + "Miền Nam" lại+4+1~5+2
CQuay lại source data fix gốc: (1) =TRIM(PROPER(Khu vực)) để chuẩn hóa "Miền nam" → "Miền Nam". (2) Filter chi nhánh return rate >30% → kiểm tra dữ liệu gốc — phát hiện 1 chi nhánh bị nhập trạng thái "trả hàng" cho đơn đang giao (data entry error). (3) Kiểm tra T12 — phát hiện 500 đơn ngày 2025-12-xx bị lưu text thay vì date → Pivot Table không group được theo tháng. Fix bằng DATEVALUE + refresh Pivot+15+1~5+5

⚡ Sự kiện ngẫu nhiên (Random Events)

Mỗi vòng có 20% xác suất kích hoạt 1 sự kiện ngẫu nhiên. Sự kiện có thể giúp hoặc cản trở Data Fixer!

#Sự kiệnXác suấtẢnh hưởng
1📂 File bị corrupt — Excel crash giữa chừng, bạn mất tiến độ nếu chưa save!20%Thời gian vòng này giảm còn 45 giây. Bài học: Ctrl+S thường xuyên!
2🤝 Senior hint — Senior DA nhắn Teams: "Em thử check TRIM xem, anh gặp case tương tự tuần trước"15%Loại bỏ 1 đáp án sai → còn 2 lựa chọn. Data Quality +2 bonus
3📊 Data Dump thêm — Phòng kế toán gửi thêm 1 file bổ sung, giúp cross-check10%Hiển thị thêm bảng dữ liệu gợi ý → dễ nhận lỗi hơn. +3 Accuracy bonus nếu đúng
4Họp gấp — Sếp kéo bạn vào họp đột xuất 15 phút, quay lại phải làm nhanh!20%Thời gian giảm còn 60 giây, nhưng nếu đúng: Speed ×2
5💀 Macro virus — File có macro lạ, bạn phải tắt macro và xử lý manual10%Tất cả lựa chọn liên quan đến tự động hóa bị khóa → phải chọn cách thủ công hơn. +5 XP bonus nếu vẫn đúng
6Coffee boost — Đồng nghiệp mời cà phê, tinh thần lên cao!15%+3 XP bonus cho câu tiếp theo bất kể đúng sai. Motivation matters!

🏆 Hệ thống xếp hạng

RankĐiều kiệnMô tả
🥇 Gold≥ 85 XP"Senior Data Cleaner! Garbage in → Gold out. Bạn đã master Data Cleaning."
🥈 Silver≥ 60 XP"Solid Analyst — biết cách sửa nhưng đôi lúc chưa triệt để. Ôn thêm Tidy Data!"
🥉 Bronze≥ 40 XP"Junior Cleaner — nắm được basic nhưng cần luyện tập với dữ liệu thực tế hơn."
Fail< 40 XP"Dữ liệu bẩn vẫn lọt qua... Garbage in, garbage out! Đọc lại Buổi 3 rồi quay lại nhé!"

🎖️ Badge đặc biệt

BadgeĐiều kiệnMô tả
🏅 Perfect Cleaner7/7 câu đúng (chọn đáp án tốt nhất)Không một dòng dirty data nào lọt qua tay bạn
Speed DemonTổng thời gian ≤ 3 phút 30 giây (cả 7 vòng)Clean data nhanh như flash
🧹 TRIM MasterĐúng Vòng 1 + 2 (whitespace + inconsistency)Chuyên gia TRIM/CLEAN/SUBSTITUTE
🔍 Duplicate HunterĐúng Vòng 3 + timeout < 30sPhát hiện trùng lặp nhanh hơn Remove Duplicates
📐 Tidy EvangelistĐúng Vòng 6 (Tidy Data) + giải thích 3 nguyên tắcHadley Wickham sẽ tự hào về bạn
📊 Pivot ProĐúng Vòng 7 (Boss Round)Pivot Table không còn bí mật nào với bạn
🛡️ SurvivorGặp ≥ 3 sự kiện ngẫu nhiên bất lợi mà vẫn đạt GoldĐiềm tĩnh dưới áp lực — tố chất Senior DA
💎 Flawless≥ 85 XP + không bị event nào trừ điểmHoàn hảo trong mọi tình huống

💡 Giải thích đáp án

Vòng 1 — Khoảng trắng thừa & TRIM/CLEAN

Lỗi: Dữ liệu chứa trailing/leading spaceský tự ẩn (non-printing characters) → VLOOKUP thất bại.

  • TRIM loại bỏ space thừa đầu/cuối và space đôi giữa chữ → nhưng KHÔNG xóa ký tự ẩn (line break, tab)
  • CLEAN loại bỏ ký tự ẩn (ASCII 0–31) mà mắt thường không thấy
  • Kết hợp TRIM(CLEAN(...))best practice cho mọi dữ liệu text import từ hệ thống
  • Với mã SP không nên có space giữa → thêm SUBSTITUTE(...," ","") để xóa hẳn
  • Find & Replace (A) có thể xóa cả space hợp lệ (ví dụ: "Kem Chống Nắng" → "KemChốngNắng"). Gõ lại tay (C) không scalable cho 15,000 dòng
  • Kiến thức: TRIM, CLEAN, SUBSTITUTE — Phần 2: Công cụ Data Cleaning

Vòng 2 — Inconsistency & Chuẩn hóa Text

Lỗi: Cùng thành phố "Hà Nội" nhưng có 7 cách viết khác nhau → Pivot Table tách thành 7 nhóm.

  • Nguyên nhân gốc: Dữ liệu nhập tay (manual input) từ nhiều người/chi nhánh, không có validation rule
  • PROPER() chuyển "hà nội" → "Hà Nội" nhưng không fix "Hanoi" hay "Ha Noi"
  • UPPER() chỉ đồng nhất case nhưng không fix viết không dấu
  • Mapping table là giải pháp triệt để nhất: liệt kê tất cả biến thể → map về giá trị chuẩn. Có thể tái sử dụng cho các file sau
  • Data Validation (dropdown list) ở đầu vào giúp ngăn lỗi tái phát
  • Kiến thức: 6 loại Dirty Data — Inconsistency — Phần 1: Nhận diện dữ liệu bẩn

Vòng 3 — Duplicate Detection & Removal

Lỗi: Dữ liệu import từ 3 hệ thống → trùng lặp từ nguồn (source-level duplication).

  • Remove Duplicates (Data tab) là nhanh nhưng nguy hiểm nếu áp dụng mù quáng — có thể xóa nhầm dòng hợp lệ (ví dụ: Row 4–5 cùng mã ĐH nhưng khác giá trị → có thể 1 đơn bị sửa giá)
  • Best practice: Tạo composite key (Mã ĐH + Ngày) → COUNTIF để đánh dấu → review trước khi xóa
  • Luôn backup data gốc trước khi remove duplicates
  • Kiến thức: 6 loại Dirty Data — Duplicate — Phần 1

Vòng 4 — Missing Values Strategy

Lỗi: Xử lý missing values một cách đồng loạt thay vì phân loại nguyên nhân.

  • Điền 0: Sai nguy hiểm — 0 triệu ≠ không có data. AVERAGE sẽ bị kéo xuống
  • Xóa dòng: Mất dữ liệu hợp lệ của các tháng có data
  • Best practice: Phân 3 loại:
    • MCAR (Missing Completely At Random): điền bằng trung bình/median
    • MAR (Missing At Random): điền theo nhóm tương tự
    • MNAR (Missing Not At Random): không điền — đánh dấu N/A, ghi chú lý do
  • IFERROR(AVERAGE(...),"N/A") là công thức an toàn để tránh lỗi #DIV/0!
  • Kiến thức: 6 loại Dirty Data — Missing — Phần 1

Vòng 5 — Date Format Standardization

Lỗi: Dữ liệu ngày tháng từ nhiều quốc gia → format không thống nhất, Excel lưu dạng text.

  • DATEVALUE chỉ hoạt động tốt với format Excel nhận diện được — text thuần (e.g., "Jan 15, 2026") có thể chuyển, nhưng "15 Januari 2026" thì không
  • Text to Columns chỉ chuẩn hóa 1 format tại 1 thời điểm — không xử lý được file đa dạng format
  • Best practice: Tách xử lý theo nhóm chi nhánh → dùng MID/LEFT/RIGHT + DATE() cho text → quy về 1 format chuẩn ISO (YYYY-MM-DD)
  • Tip nâng cao: =DATE(MID(A2,7,4), MID(A2,4,2), LEFT(A2,2)) cho DD/MM/YYYY → Date
  • Kiến thức: 6 loại Dirty Data — Formatting Errors — Phần 2

Vòng 6 — Tidy Data Principles

Lỗi: Dữ liệu trình bày dạng cross-tab (bảng ngang) → vi phạm Tidy Data → Pivot Table không đọc được.

  • 3 nguyên tắc Tidy Data (Hadley Wickham, 2014):
    1. Mỗi biến (variable) = 1 cột
    2. Mỗi quan sát (observation) = 1 dòng
    3. Mỗi giá trị (value) = 1 ô
  • Bảng gốc vi phạm: "Shopee", "Lazada", "Cửa hàng" là giá trị của biến "Kênh bán", nhưng bị đặt thành tên cột
  • Unpivot (chuyển ngang → dọc): 3 cột giá trị → 1 cột "Kênh bán" + 1 cột "Doanh thu" → 9 dòng
  • Merged cells + ghi chú rải rác → phải xóa trước khi chuyển đổi
  • Excel Power Query có tính năng Unpivot Columns cực tiện cho việc này
  • Kiến thức: Tidy Data — Phần 3: Tidy Data

Vòng 7 — Pivot Table & Data Quality Audit

Lỗi: Pivot Table cho kết quả kỳ lạ vì source data chưa clean triệt để — 3 lỗi ẩn.

  • Lỗi 1 — Inconsistency: "Miền nam" vs "Miền Nam" → 2 nhóm trong Pivot. Fix: chuẩn hóa source data, không sửa trong Pivot (vì Pivot refresh sẽ mất)
  • Lỗi 2 — Data Entry Error: Return rate 45% là bất thường (trung bình ngành 5–10%). Kiểm tra source → phát hiện nhầm trạng thái
  • Lỗi 3 — Date stored as Text: 500 đơn T12 lưu dạng text → Pivot Table group by month bỏ sót → doanh thu T12 thấp giả tạo. Fix: DATEVALUE → format Date → refresh Pivot
  • Bài học lớn: Pivot Table chỉ tốt bằng source data. Luôn kiểm tra kết quả Pivot bằng cách cross-check với tổng số dòng, tổng giá trị gốc
  • Kiến thức: Pivot Table — Phần 4: Pivot Table

📚 Kiến thức liên quan

VòngChủ đề chínhKỹ năng Data Cleaning
1Whitespace, TRIM, CLEANXử lý ký tự ẩn trước khi VLOOKUP
2Inconsistency, SUBSTITUTEChuẩn hóa text bằng mapping table
3Duplicate detectionCOUNTIF + composite key + review
4Missing valuesPhân loại nguyên nhân → xử lý phù hợp
5Date formattingMID/LEFT/RIGHT + DATE → ISO format
6Tidy Data3 nguyên tắc: biến = cột, quan sát = dòng, giá trị = ô
7Pivot Table auditSource data quality → Pivot accuracy

Chuỗi tư duy Data Cleaner chuyên nghiệp:

Nhận file → Check structure (Tidy?) → Scan lỗi (6 loại dirty data)
    → Xử lý whitespace (TRIM/CLEAN) → Chuẩn hóa text (mapping)
    → Remove duplicates (COUNTIF + review) → Handle missing (phân loại)
    → Fix date format (ISO) → Tạo Pivot Table → Cross-check kết quả

🔗 Xem thêm Buổi 3

📘 Nội dung chính📝 Blog🧠 Case Study🏆 Tiêu chuẩn🛠 Workshop