Bỏ qua để đến nội dung

Lineage cấp cột (column-level): chi tiết tới từng trường dữ liệu

Khi sếp hỏi “con số doanh thu thuần trên dashboard này lấy từ đâu ra?”, một bản đồ chỉ tới mức bảng sẽ trả lời được “từ bảng đơn hàng và bảng khuyến mãi” — nhưng vẫn chưa đủ. Câu hỏi thật sự là: đúng cột nào cộng trừ với đúng cột nào, qua công thức nào, để ra được ô số đó. Trả lời tới mức từng cột chính là việc của lineage cấp cột (column-level lineage). Trang này giải thích lineage cấp cột là gì, vì sao nó là mức mạnh nhất để phân tích tác động và truy lỗi, và cái giá phải trả khi đi sâu tới mức này.

Lineage cấp cột là dòng chảy dữ liệu được lần theo tới từng trường (cột), thay vì chỉ tới từng bảng. Nó trả lời câu hỏi rất hẹp nhưng rất quan trọng: cột đích này được sinh ra từ những cột nguồn nào, qua phép biến đổi nào?

Để thấy khác biệt, hãy đặt hai mức cạnh nhau:

  • Lineage cấp bảng (table-level) nói: “Bảng bao_cao_doanh_thu lấy dữ liệu từ bảng don_hang và bảng khuyen_mai.” Biết được hai bảng có liên quan, nhưng không biết cột nào nối với cột nào.
  • Lineage cấp cột (column-level) nói: “Cột doanh_thu_thuan = cột don_hang.thanh_tien trừ cột khuyen_mai.gia_tri_giam, sau khi cả hai được gộp theo ma_don.” Đây mới là đường đi thật của một con số.

Nói cách khác, cấp bảng cho bạn khối nhà, còn cấp cột cho bạn từng sợi dây điện chạy bên trong. Một bảng có thể có vài chục cột, mỗi cột lại có đường đi riêng — cấp cột vẽ ra toàn bộ mạng dây đó.

Mỗi mắt nối ở cấp cột thường đi kèm logic biến đổi: có thể chỉ là sao chép thẳng (cột này lấy nguyên cột kia), có thể là đổi tên, đổi kiểu dữ liệu, ghép chuỗi, hoặc một công thức tính toán (cộng, trừ, nhân, chia, hàm tổng hợp). Lineage cấp cột tốt không chỉ vẽ đường nối mà còn cho biết trên đường đó dữ liệu bị làm gì.

Mức chi tiết tới cột là thứ biến lineage từ “biết đại khái” thành “biết chính xác”. Có hai tình huống mà sự khác biệt này quyết định bạn mất 5 phút hay mất 2 ngày.

Phân tích tác động chính xác tới từng cột

Phần tiêu đề “Phân tích tác động chính xác tới từng cột”

Giả sử đội kỹ thuật cần đổi kiểu dữ liệu của cột thanh_tien trong hệ thống bán hàng, hoặc bỏ bớt một cột không dùng nữa.

  • Với lineage cấp bảng, bạn chỉ biết “bảng don_hang có liên quan tới 12 báo cáo” — nên phải đi rà cả 12 báo cáo cho chắc, dù phần lớn có thể không đụng tới cột thanh_tien.
  • Với lineage cấp cột, bạn biết chính xác cột thanh_tien chảy vào 3 báo cáo nào, nuôi những cột đích nào trong từng báo cáo. Đổi đúng 3 chỗ, kiểm thử đúng 3 chỗ, thông báo đúng 3 đội liên quan.

Đây là khác biệt giữa “đổi mà nín thở” và “đổi mà yên tâm”. Lineage cấp cột thu hẹp vùng ảnh hưởng từ cả bảng xuống đúng cột, nên đổi một cột là biết ngay báo cáo nào, cột nào sẽ bị ảnh hưởng.

Truy nguyên gốc lỗi tới đúng cột hỏng

Phần tiêu đề “Truy nguyên gốc lỗi tới đúng cột hỏng”

Chiều ngược lại cũng vậy. Một sáng, dashboard báo doanh thu thuần âm — vô lý.

  • Cấp bảng chỉ giúp bạn khoanh vùng: “số này tới từ bảng don_hang và bảng khuyen_mai, đi mò trong hai bảng đó.”
  • Cấp cột dẫn thẳng bạn tới đúng cột và đúng bước biến đổi: lần ngược từ doanh_thu_thuan, bạn thấy nó = thanh_tien trừ gia_tri_giam; kiểm tra thì phát hiện một bước nạp dữ liệu đã ghi nhầm gia_tri_giam lớn hơn thanh_tien. Đổi một cột — biết chính xác cột nào hỏng và hỏng ở mắt xích nào.

Vì soi được tới từng cột nên lineage cấp cột là nền tảng mạnh nhất cho cả phân tích tác động (impact analysis) lẫn truy nguyên gốc lỗi (root cause) — hai ứng dụng cốt lõi nhất của nguồn gốc dữ liệu.

Minh bạch cho tuân thủ và dữ liệu nhạy cảm

Phần tiêu đề “Minh bạch cho tuân thủ và dữ liệu nhạy cảm”

Có một lợi ích nữa rất hợp với góc governance: theo dõi một cột nhạy cảm cụ thể. Ví dụ cột so_cccd (số căn cước) hay so_dien_thoai của khách hàng. Với lineage cấp cột, đội bảo vệ dữ liệu trả lời được câu hỏi của kiểm toán: “số căn cước đi từ hệ thống gốc tới những báo cáo nào, bị sao chép vào những bảng nào?” — chứng minh được phạm vi lan của một trường dữ liệu cá nhân, thay vì chỉ nói chung chung “bảng khách hàng có chứa thông tin cá nhân”.

Cái giá phải trả: đánh đổi của cấp cột

Phần tiêu đề “Cái giá phải trả: đánh đổi của cấp cột”

Chi tiết hơn không bao giờ miễn phí. Hiểu rõ đánh đổi giúp bạn dùng đúng mức cho đúng việc.

  • Phức tạp hơn nhiều. Một bảng vài chục cột nối với nhiều bảng khác sẽ tạo ra đồ thị dày đặc. Nhìn toàn cảnh ở cấp cột dễ bị “rối như mạng nhện” nếu không có công cụ lọc và phóng to/thu nhỏ tốt.
  • Nặng hơn khi dựng và lưu. Để biết cột nào ra cột nào, hệ thống phải đọc và phân tích (parse) sâu từng câu lệnh SQL, từng view, từng bước ETL — tốn tài nguyên hơn nhiều so với chỉ ghi nhận “hai bảng có liên quan”.
  • Phụ thuộc vào việc đọc được logic. Nếu một đoạn biến đổi nằm trong code bên thứ ba mà hệ thống không phân tích được, mắt nối ở cấp cột có thể bị đứt hoặc thiếu, cần bổ sung lineage thủ công.
  • Không phải lúc nào cũng cần. Để lãnh đạo nắm bức tranh nghiệp vụ, lineage cấp cột thường quá chi tiết; cấp bảng hoặc cấp nghiệp vụ dễ đọc hơn. Cấp cột tỏa sáng nhất ở tay kỹ sư dữ liệu và đội vận hành khi cần sửa lỗi hay đánh giá thay đổi.

Quy tắc thực dụng: dùng cấp cột ở nơi sai một con số là tốn tiền hoặc rủi ro tuân thủ (báo cáo tài chính, số liệu gửi cơ quan quản lý, KPI điều hành), và chấp nhận cấp bảng ở những vùng dữ liệu ít quan trọng hơn để giữ bức tranh gọn gàng.

Ví dụ Việt Nam: ô “doanh thu thuần” trên dashboard điều hành

Phần tiêu đề “Ví dụ Việt Nam: ô “doanh thu thuần” trên dashboard điều hành”

Một chuỗi bán lẻ có dashboard điều hành, trong đó ô “Doanh thu thuần tháng” là con số ban giám đốc nhìn mỗi sáng. Lineage cấp cột cho ô này có thể đọc như sau:

  • doanh_thu_thuan được tính từ tong_tien_hang trừ tong_giam_gia trừ tong_tra_hang.
  • tong_tien_hang gộp (tính tổng) từ cột thanh_tien của bảng don_hang ở hệ thống POS.
  • tong_giam_gia gộp từ cột gia_tri_giam của bảng khuyen_mai.
  • tong_tra_hang gộp từ cột gia_tri của bảng phieu_tra_hang.

Nhờ tấm bản đồ tới từng cột này:

  • Khi POS đổi cách ghi thanh_tien (ví dụ tách thuế ra cột riêng), đội dữ liệu biết ngay ô “doanh thu thuần” sẽ lệch, và biết phải sửa đúng bước gộp tong_tien_hang — không phải đập cả dashboard.
  • Khi con số một ngày bỗng nhảy vọt, họ lần ngược và phát hiện bảng phieu_tra_hang hôm đó nạp thiếu, khiến tong_tra_hang bằng 0 và doanh thu thuần bị thổi phồng. Đúng một cột, đúng một nguồn.

Đó là sức mạnh của việc đi tới tận cột: mỗi con số quan trọng đều có lý lịch rõ ràng tới từng trường.

Chia sẻ: