Phân tích CSV lớn trên máy với DuckDB và AI viết truy vấn
DuckDB cho phép truy vấn trực tiếp file CSV hoặc Parquet bằng SQL. Dùng AI để phác thảo và review truy vấn, rồi kiểm chứng schema, điều kiện lọc và kết quả trong DuckDB trước khi đưa số liệu vào dashboard.
Một file xuất từ hệ thống bán hàng vừa tới: nhiều cột, tên trường khó hiểu, deadline dashboard là cuối ngày. Nếu chưa biết cột tiền đang là số hay text, ngày có đúng định dạng hay không, việc đưa thẳng file vào báo cáo rất dễ tạo ra một con số “trông hợp lý” nhưng sai logic.
DuckDB phù hợp làm điểm kiểm tra ngay trên máy: đọc file, chạy SQL và quan sát dữ liệu nguồn. AI có thể hỗ trợ phác thảo truy vấn hoặc phản biện logic, nhưng analyst vẫn là người xác nhận kết quả.
DuckDB giúp gì khi kiểm tra dữ liệu nguồn?
DuckDB là hệ quản trị cơ sở dữ liệu phục vụ phân tích, được thiết kế để nhanh, đáng tin cậy, di động và dễ dùng. DuckDB có thể chạy dưới dạng ứng dụng dòng lệnh độc lập, đồng thời có client cho Python, R, Java và Wasm. Dự án cũng nêu các tích hợp với pandas và dplyr.
Điểm thực dụng với file dữ liệu là DuckDB cho phép tham chiếu trực tiếp CSV hoặc Parquet trong mệnh đề FROM:
sql
SELECT FROM 'myfile.csv';
SELECT FROM 'myfile.parquet';
Bạn có thể bắt đầu kiểm tra dữ liệu bằng SQL mà không cần chuẩn bị một database server riêng cho file đó.
DuckDB cũng hỗ trợ nhiều khả năng SQL ngoài truy vấn cơ bản, gồm subquery tương quan, window function, collation và các kiểu dữ liệu phức hợp như array, struct, map.
Với Excel: xác nhận định dạng trước khi bắt đầu
Tài liệu tham chiếu ở đây minh họa trực tiếp việc đọc CSV và Parquet. Phần README được cung cấp không nêu thao tác cụ thể để đọc tệp Excel .xlsx.
Vì vậy, khi nhận workbook Excel, hãy xác định rõ đầu vào thực tế của quy trình. Nếu đội dữ liệu có thể xuất CSV hoặc Parquet, đó là hai định dạng đã được mô tả trực tiếp trong tài liệu DuckDB. Không nên để AI tự khẳng định một câu lệnh đọc .xlsx khi bạn chưa kiểm tra trong môi trường đang dùng.
Quy trình 5 bước: AI viết nháp, DuckDB kiểm chứng
1. Đọc file trước, chưa vội hỏi AI về insight
Mở DuckDB CLI hoặc môi trường có DuckDB, sau đó thử đọc file:
sql
SELECT FROM 'myfile.csv';
Mục tiêu đầu tiên chưa phải là làm dashboard. Hãy kiểm tra:
File thực sự có những cột nào.
Tên cột viết hoa, viết thường hoặc chứa dấu cách ra sao.
Cột ngày, mã khách hàng và số tiền đang hiển thị như thế nào.
Có giá trị rỗng, bất thường hoặc dòng khác hẳn phần còn lại không.
Ví dụ, bạn có thể chuẩn bị một schema rút gọn để trao đổi với AI:
| Cột | Ý nghĩa kỳ vọng |
|---|---|
| orderdate | Ngày đơn hàng |
| customerid | Mã khách hàng |
| amount | Giá trị đơn |
| status | Trạng thái đơn |
Đây chỉ là mô tả kỳ vọng. Bằng chứng về tên cột và nội dung vẫn là kết quả bạn vừa kiểm tra từ file thật.
2. Gửi cho AI schema đã kiểm tra, không gửi cả file
AI hữu ích hơn khi nhận được đúng ngữ cảnh: câu hỏi cần trả lời, schema đã xác nhận và các quy tắc nghiệp vụ liên quan.
Bạn có thể dùng prompt mẫu sau:
text
Bạn là SQL reviewer cho dashboard BI.
Mục tiêu: <câu hỏi kinh doanh cần trả lời>.
Nguồn dữ liệu: CSV được truy vấn bằng DuckDB.
Schema đã kiểm tra:
<cột 1>: <ý nghĩa và kiểu dữ liệu quan sát được>
<cột 2>: <ý nghĩa và kiểu dữ liệu quan sát được>
Quy tắc nghiệp vụ:
<quy tắc lọc trạng thái>
<quy tắc xử lý NULL>
<định nghĩa chỉ số>
Hãy đề xuất logic SQL DuckDB.
Trước khi viết SQL, hãy liệt kê các giả định, cột còn thiếu
và rủi ro join hoặc filter.
Không tự tạo tên cột không có trong schema.
Cách giao việc này giảm khả năng AI phải đoán rằng “doanh thu” là revenue, salesamount hay amount.
Khi dùng công cụ AI, chỉ cung cấp phần ngữ cảnh cần thiết cho tác vụ. Schema, quy tắc nghiệp vụ và mẫu dữ liệu đã được xử lý phù hợp thường dễ review hơn việc đưa nguyên file nguồn vào prompt.
3. Yêu cầu AI nêu giả định trước khi viết SQL
Một truy vấn có thể đúng cú pháp nhưng sai định nghĩa nghiệp vụ. Trước khi nhận SQL, yêu cầu AI trả lời rõ:
text
Trước khi đưa SQL, hãy nêu:
Bạn hiểu “doanh thu” được tính từ cột nào?
Bạn đang loại hoặc giữ những trạng thái nào?
NULL ở cột số tiền và ngày được xử lý ra sao?
Nếu cần join, khóa join là gì? Join có thể làm nhân dòng không?
Điều kiện ngày có bao gồm ngày cuối của kỳ báo cáo không?
Review một danh sách giả định thường nhanh hơn dò lỗi trong một đoạn SQL dài. Đây cũng là cách buộc logic KPI được nói rõ trước khi đi vào query nguồn hoặc measure dashboard.
4. Chạy SQL AI đề xuất trên file thật
Sau khi AI đưa ra bản nháp, chạy truy vấn trong DuckDB trên file thực tế. Đối chiếu ít nhất các điểm sau:
Tên cột trong SQL có đúng với file không.
Điều kiện lọc có đúng kỳ báo cáo và trạng thái nghiệp vụ không.
Kết quả có xuất hiện NULL, giá trị lạ hoặc số dòng bất thường không.
Nếu có join, số dòng có tăng ngoài dự kiến không.
Nếu kết quả bất thường, quay lại kiểm tra file nguồn và giả định trong truy vấn trước khi sửa biểu đồ.
5. Lưu lại logic đã được xác nhận
Sau khi xác nhận query, lưu cùng:
Mục tiêu phân tích.
Định nghĩa chỉ số.
Điều kiện lọc.
Những giả định đã chấp nhận.
Phiên bản SQL dùng để tạo kết quả.
Dấu vết này giúp người khác review dashboard dễ hơn, đồng thời giúp bạn tái sử dụng logic cho kỳ báo cáo tiếp theo.
Walkthrough ngắn: từ CSV đến câu hỏi đã kiểm chứng
Giả sử bạn nhận myfile.csv và cần chuẩn bị dữ liệu cho báo cáo doanh thu.
Bắt đầu bằng:
sql
SELECT FROM 'myfile.csv';
Sau khi xem dữ liệu, bạn xác nhận tên cột thực tế rồi mới gửi schema rút gọn cho AI. Một phản hồi tốt từ AI không chỉ là SQL. Nó nên nêu rõ:
Cột được sử dụng.
Định nghĩa chỉ số đang áp dụng.
Điều kiện lọc.
Cách xử lý NULL.
Rủi ro nhân dòng nếu có join.
Điểm nào chưa thể kết luận vì schema chưa đủ.
Tiếp theo, bạn chạy SQL đó trong DuckDB và đối chiếu kết quả với dữ liệu nguồn.
Vai trò nên được phân tách rõ: DuckDB là nơi chạy và kiểm chứng; AI hỗ trợ diễn đạt, viết nháp và review; analyst xác nhận logic cuối cùng.
Checklist trước khi đưa số liệu vào dashboard
[ ] Tên cột trong SQL có tồn tại đúng như file thực tế?
[ ] Định nghĩa KPI đã được ghi rõ chưa?
[ ] Tổng số dòng hoặc tổng chỉ số đã được đối chiếu với một lát cắt dữ liệu chưa?
[ ] Có dòng trùng hoặc join làm nhân bản bản ghi không?
[ ] Giá trị NULL được xử lý theo quy tắc nghiệp vụ chưa?
[ ] Bộ lọc ngày có đúng phạm vi báo cáo không?
[ ] AI có tự thêm cột, bảng hoặc định nghĩa không có trong schema không?
[ ] Logic SQL đã được lưu lại cùng các giả định quan trọng chưa?
DuckDB giúp bạn dùng SQL để kiểm tra trực tiếp CSV hoặc Parquet. AI giúp giảm thời gian viết bản nháp và đặt câu hỏi về logic. Kết hợp đúng thứ tự, hai công cụ này tạo ra một quy trình rõ ràng hơn từ file thô đến số liệu dùng cho dashboard.