Bảng dữ liệu gọn là bảng tuân theo ba nguyên tắc: mỗi cột là một thuộc tính (một biến), mỗi dòng là một bản ghi (một lần quan sát), và mỗi loại đối tượng nằm trong một bảng riêng. Khái niệm này được nhà thống kê Hadley Wickham hệ thống hoá trong bài báo "Tidy Data" đăng năm 2014, dưới tên gọi tidy data, và từ đó trở thành chuẩn chung của dân làm dữ liệu.
Với người làm văn phòng, ba nguyên tắc này trả lời một câu hỏi rất thực tế: vì sao bảng của mình nhìn thì rõ ràng mà lọc không ra, cộng không đúng, gửi cho AI thì AI hiểu nhầm. Thường là vì bảng được sắp để người đọc in ra, không phải để máy tính. Bài này giải thích từng nguyên tắc bằng ví dụ giả định ở văn phòng Việt Nam, chỉ ra năm kiểu bảng lộn xộn phổ biến và cách xoay chúng về dạng gọn.
Ba nguyên tắc, giải thích bằng bảng chấm công
Mỗi cột là một thuộc tính. Thuộc tính là một loại thông tin được ghi cho mọi bản ghi: mã nhân viên, ngày, giờ vào, giờ ra. Cột "Giờ vào/ra" chứa "7:55 - 17:10" là gộp hai thuộc tính vào một cột, muốn tính số giờ làm phải tách ra trước. Ngược lại, có các cột "Ngày 1", "Ngày 2" đến "Ngày 31" là rải một thuộc tính (ngày) ra ba mươi mốt cột.
Mỗi dòng là một bản ghi. Bản ghi là một lần quan sát của một đối tượng. Với bảng chấm công, một bản ghi hợp lý là "một nhân viên trong một ngày". Như vậy tháng có 22 ngày công và 15 nhân viên thì bảng gọn có khoảng 330 dòng, không phải 15 dòng dài ngoằng.
Mỗi loại đối tượng một bảng. Thông tin về nhân viên (họ tên, phòng ban, ngày vào làm) không đổi theo ngày nên không nên lặp lại ở mỗi dòng chấm công. Đặt chúng ở bảng nhân viên riêng, bảng chấm công chỉ cần mã nhân viên để tra sang. Đây cũng là cửa ngõ dẫn tới thiết kế cơ sở dữ liệu nhiều bảng, đề tài có danh mục riêng trên trang.
Một ô chỉ chứa một giá trị. Đây là hệ quả tự nhiên của hai nguyên tắc đầu, nhưng đáng nhắc riêng vì hay bị vi phạm: ô ghi "2 thùng + 5 hộp", "đã trả 3 triệu, còn nợ 1 triệu" hay "Hà Nội; Hải Phòng" đều khiến máy không cộng, không lọc được.
Dạng rộng và dạng dài: cùng dữ liệu, hai cách bày
Ví dụ giả định: doanh số ba chi nhánh trong ba tháng. Bên trái là cách quen thuộc khi làm báo cáo, bên phải là dạng gọn. Bảng dưới mô tả hai cách sắp xếp đó.
| Tiêu chí | Dạng rộng (bảng báo cáo) | Dạng dài (bảng gọn) |
|---|---|---|
| Cột | Chi nhánh, Tháng 7, Tháng 8, Tháng 9 | Chi nhánh, Tháng, Doanh số |
| Số dòng | 3 dòng, mỗi chi nhánh một dòng | 9 dòng, mỗi cặp chi nhánh và tháng một dòng |
| Thêm tháng mới | Phải chèn cột, sửa lại mọi công thức | Chỉ thêm dòng, công thức giữ nguyên |
| Lọc "tháng 8 của mọi chi nhánh" | Phải nhìn đúng cột, khó lọc tự động | Lọc cột Tháng là xong |
| Đọc bằng mắt | Dễ, gọn trên một trang in | Dài, kém trực quan |
| Dùng cho bảng tổng hợp, AI, phần mềm | Phải xoay lại trước | Dùng thẳng |
Điều quan trọng là không phải chọn một trong hai. Lưu dữ liệu ở dạng dài, rồi khi cần trình bày thì dùng bảng tổng hợp (PivotTable) để bày ra dạng rộng. Bảng tổng hợp chính là công cụ chuyển dạng dài sang dạng rộng tự động, còn chiều ngược lại gọi là "unpivot", có sẵn trong Power Query của Excel. Phần đọc và trình bày báo cáo thuộc về trang AI Phân Tích; ở đây chỉ cần bảng gốc đúng dạng.
Năm kiểu bảng lộn xộn hay gặp ở văn phòng
Wickham mô tả một số kiểu bảng "bẩn" thường gặp; dưới đây là cách chúng hiện ra trong công việc hằng ngày ở công ty Việt Nam, kèm hướng sửa.
- Tên cột là giá trị. Các cột "Tháng 1" đến "Tháng 12", "Size S, M, L, XL", "Ca sáng, ca chiều". Sửa bằng cách xoay về hai cột: một cột tên thuộc tính (Tháng, Size, Ca) và một cột giá trị.
- Nhiều thuộc tính dồn vào một cột. Mã hàng kiểu "AO-TRANG-M" mang cả loại, màu, cỡ; cột "Họ tên - SĐT"; cột địa chỉ đủ số nhà, phường, tỉnh. Sửa bằng cách tách cột, giữ cột gốc lại để đối chiếu.
- Thuộc tính nằm ở dòng thay vì cột. Bảng có dòng "Doanh thu", dòng "Chi phí", dòng "Lãi" và mỗi cột là một tháng. Đây là bảng rộng xoay ngang, phải chuyển vị rồi mới làm gọn tiếp.
- Nhiều loại đối tượng trong một bảng. Bảng đơn hàng mà mỗi dòng lặp lại đầy đủ họ tên, địa chỉ, ngày sinh khách. Khách đổi địa chỉ thì phải sửa hàng chục dòng, sửa sót là dữ liệu tự mâu thuẫn.
- Một loại đối tượng rải ở nhiều bảng. Mỗi tháng một trang tính, mỗi chi nhánh một tệp, cùng cột nhưng tách rời. Sửa bằng cách gộp về một bảng và thêm cột Tháng hoặc Chi nhánh để không mất thông tin.
Bạn sẽ nhận ra hầu hết bảng tính trong công ty dính ít nhất một kiểu. Đó không phải lỗi của người lập, vì bảng thường được làm để in và trình ký. Vấn đề chỉ xuất hiện khi dùng chính bảng in đó làm nguồn để tính.
Nhờ AI chuyển một bảng rộng thành bảng gọn
Bạn không cần tự nghĩ cách xoay bảng. Quy trình dưới đây dùng chatbot làm người hướng dẫn, còn việc chạy thật do Excel hoặc Google Sheets đảm nhận.
- Chụp khung bảng, không chụp dữ liệu thật. Chép dòng tiêu đề và hai ba dòng đầu, thay tên người, số tiền bằng giá trị giả định.
- Mô tả đích muốn có. Câu lệnh mẫu: "Bảng của mình có cột Mã NV, Họ tên, rồi 31 cột Ngày 1 đến Ngày 31, mỗi ô ghi giờ công. Mình muốn chuyển thành bảng gọn có 3 cột: Mã NV, Ngày, Giờ công. Hãy hướng dẫn từng bước bằng Power Query trong Excel, và cho cách làm thay thế nếu chỉ có Google Sheets."
- Đọc hiểu trước khi bấm. Hỏi lại AI bất kỳ bước nào chưa rõ, ví dụ "unpivot other columns" khác "unpivot columns" ở chỗ nào. Hai lựa chọn này cho kết quả khác nhau khi thêm cột mới.
- Làm trên bản sao. Nhân đôi trang tính hoặc tệp trước khi chạy. Không bao giờ xoay trực tiếp trên bảng gốc.
- Kiểm bằng số đếm và tổng. Số dòng bảng mới phải bằng số nhân viên nhân số cột ngày (trừ các ô trống nếu bạn chọn bỏ). Tổng cột Giờ công bảng mới phải bằng tổng toàn bộ các ô ngày của bảng cũ.
Phép kiểm tổng ở bước cuối là thói quen đáng giữ cho mọi lần biến đổi dữ liệu: biến đổi đúng thì tổng không đổi. Tổng lệch nghĩa là có dòng bị nhân đôi hoặc bị bỏ.
Vì sao AI làm việc tốt hơn hẳn với bảng gọn
Khi bạn dán một bảng rộng có ô gộp, tiêu đề hai tầng, dòng tổng chen giữa vào chatbot, mô hình phải đoán: ô gộp này áp cho mấy cột, dòng "Cộng" có phải là một chi nhánh không, số ở cột cuối là tháng hay là tổng. Mỗi lần đoán là một lần có thể sai, và chatbot thường không nói rằng nó đang đoán.
Với bảng gọn, không còn gì phải đoán. Mỗi cột có một tên rõ nghĩa, mỗi dòng cùng một loại sự việc. Câu hỏi "chi nhánh nào tăng doanh số liên tiếp ba tháng" trở thành phép lọc và so sánh trên ba cột. AI viết công thức hay câu truy vấn cho bảng gọn chính xác hơn rõ rệt, vì công thức chỉ cần tham chiếu tên cột chứ không phải dò vị trí ô.
Lợi ích thứ hai ít người để ý: bảng gọn dễ che thông tin. Muốn ẩn danh, bạn chỉ cần thay một cột (mã khách) chứ không phải lần từng ô rải rác. Muốn gửi mẫu cho AI, bạn chỉ cần lấy vài dòng đầu là đủ đại diện cho cả bảng.
Đặt tên cột cho bảng gọn: những quy ước nhỏ tiết kiệm nhiều công
Một dòng tiêu đề duy nhất, nằm ở dòng đầu. Không đặt tên công ty, tên báo cáo, ngày lập phía trên bảng. Những thông tin đó để ở trang khác hoặc thuộc tính tệp. Bảng bắt đầu ngay từ dòng một thì bộ lọc, bảng tổng hợp và Power Query đều tự nhận vùng dữ liệu.
Tên ngắn, không trùng, nói rõ đơn vị. Ghi "Số lượng (thùng)", "Thành tiền (đồng)" thay vì "SL" và "Tiền". Hai năm sau người khác mở bảng, hoặc AI đọc bảng, sẽ không phải đoán đơn vị. Tránh hai cột cùng tên "Ghi chú" trong một bảng.
Một khái niệm, một tên, dùng thống nhất mọi bảng. Nếu bảng đơn hàng gọi là "Mã KH" thì bảng khách hàng cũng gọi "Mã KH", không lúc "Mã khách" lúc "ID". Khi ghép bảng, cột trùng tên giúp cả người lẫn công cụ nhận ra ngay đâu là cột nối.
Không để cột trống tiêu đề, không để cột trống xen giữa. Một cột trống chen giữa bảng khiến Excel hiểu bảng kết thúc ở đó; vùng chọn tự động chỉ lấy một nửa và bạn không nhận ra cho đến khi số tổng thiếu.
Khi nào không cần ép bảng về dạng gọn
Gọn là chuẩn cho bảng gốc dùng để tính, không phải luật cho mọi bảng. Bảng trình ký giám đốc, bảng in dán lên bảng tin, biểu mẫu nộp cơ quan nhà nước theo mẫu quy định đều cần bày theo cách người đọc quen. Đừng cố bắt sếp đọc bảng dài 300 dòng.
Cách làm đúng là tách hai lớp: một trang tính dữ liệu gốc, gọn, không định dạng cầu kỳ, chỉ để nhập và tính; một hoặc nhiều trang trình bày lấy số từ trang gốc qua công thức hay bảng tổng hợp. Khi số liệu gốc thay đổi, trang trình bày tự cập nhật. Người mới hay làm ngược: nhập thẳng vào bảng trình bày, rồi mỗi tháng sao chép, sửa tay, và sau nửa năm không ai biết con số nào là gốc.
Một ngoại lệ nữa: bảng ma trận thật sự, như bảng khoảng cách giữa các tỉnh hay bảng đối chiếu cỡ giày, có thể để dạng rộng nếu chỉ dùng để tra bằng mắt. Khi cần đưa vào công thức dò tìm hai chiều, vẫn xoay về dạng dài sẽ đơn giản hơn.
Câu hỏi thường gặp
Tidy data có phải chỉ dành cho người làm thống kê, lập trình không?
Không. Khái niệm ra đời trong giới thống kê nhưng ba nguyên tắc áp dụng cho mọi bảng tính. Người làm kế toán, kho, nhân sự dùng bảng gọn sẽ thấy bộ lọc, bảng tổng hợp, công thức dò tìm chạy trơn tru hơn hẳn mà không cần học thêm công cụ.
Bảng dạng dài có làm tệp nặng và chậm hơn không?
Số dòng tăng nhưng số ô có giá trị gần như không đổi, vì bảng rộng cũng đã có ngần ấy ô. Với quy mô văn phòng, vài chục nghìn dòng Excel và Google Sheets đều xử lý bình thường. Chậm thường do công thức mảng chồng chéo, không phải do dạng dài.
Ô gộp (merge cells) có hại gì nếu chỉ để trình bày?
Ô gộp chỉ lưu giá trị ở ô đầu tiên, các ô còn lại là trống. Khi lọc, sắp xếp hay đưa vào bảng tổng hợp, các dòng thuộc ô gộp bị mất nhãn. Nếu cần căn giữa tiêu đề, dùng tuỳ chọn căn giữa qua vùng chọn thay cho gộp ô.
Unpivot trong Google Sheets làm thế nào?
Google Sheets không có nút unpivot như Power Query. Có thể dùng công thức kết hợp các hàm mảng như FLATTEN, SPLIT, hoặc với bản mới là LAMBDA và các hàm liên quan. Cách viết thay đổi theo phiên bản, nên nhờ AI viết công thức cho đúng khung bảng của bạn rồi kiểm tổng.
Có nên xoay mọi bảng cũ về dạng gọn ngay không?
Không cần làm một lần cho tất cả. Ưu tiên bảng nào đang dùng để tính hằng tháng và hay ra số sai. Bảng lưu trữ đã đóng sổ có thể giữ nguyên, chỉ xoay khi cần dùng lại. Mỗi bảng xoay xong nhớ kiểm số dòng và tổng.
Bảng gọn có cần định dạng màu, kẻ khung không?
Không cần và tốt nhất là hạn chế. Màu không phải dữ liệu: máy không đọc được ý nghĩa ô tô vàng là chưa thanh toán. Nếu màu mang thông tin, hãy thêm một cột trạng thái ghi bằng chữ, rồi dùng định dạng có điều kiện dựa trên cột đó.