Luồng phân vùng Dữ liệu Sạch & Rác
Khi thực thi lọc chất lượng dữ liệu, các bản ghi được chia thành hai bảng riêng biệt:
1. Bảng Dữ Liệu Sạch (Clean Table)
Chứa toàn bộ các dòng thỏa mãn 100% các quy tắc kiểm tra. Giữ nguyên định dạng schema gốc.
2. Bảng Dữ Liệu Rác (Trash Table)
Chứa tất cả các bản ghi vi phạm ít nhất 1 quy tắc, được tự động bổ sung các cột kiểm toán:
- audit_error_code (UInt64): Mã bitmask trong đó bit thứ $i$ bật lên $1$ nếu quy tắc $i$ bị vi phạm (64 quy tắc đầu tiên).
- audit_violated_rules (List<UInt32>, chỉ xuất hiện khi dùng >64 quy tắc): danh sách đầy đủ các chỉ số quy tắc bị vi phạm.
Chi tiết mã hóa: Mã lỗi & Cột kiểm toán.
Ghi cây Sạch/Rác ra đĩa
br.lake.process_and_write_lake tách mọi tệp Parquet trong thư mục thành hai cây Parquet đối xứng theo ngưỡng tĩnh của engine (không phải quy tắc tùy chỉnh):
stats = br.lake.process_and_write_lake(
"input_dir", "output/clean/", "output/trash/",
partition_filter=None, batch_size=65536,
)
# → (tổng_tệp, tổng_dòng, dòng_sạch, dòng_rác)
Tệp Trash mang cột audit_error_code tĩnh; kết quả nén ZSTD và giữ nguyên cấu trúc thư mục tương đối.