Trả lời nhanh: Data lineage (dòng dõi dữ liệu) là bản ghi cho biết một con số hay một cột dữ liệu xuất phát từ nguồn nào, đi qua những bước biến đổi nào và đang được báo cáo hay mô hình nào sử dụng. Nó giúp truy lỗi ngược về gốc và đánh giá tác động trước khi sửa hệ thống.
Điểm chính
- Lineage là đồ thị phụ thuộc giữa nguồn, bước xử lý và nơi tiêu thụ dữ liệu, chứ không phải bản thân dữ liệu.
- Có lineage mức bảng và mức cột. Mức cột chi tiết hơn nhưng khó thu thập hơn.
- Công cụ tự động có thể bỏ sót khi gặp SQL động, hàm tự viết hoặc file thủ công.
- Lineage trả lời hai câu hỏi: “số này từ đâu ra” (truy ngược) và “đổi chỗ này thì ảnh hưởng ai” (truy xuôi).
Mục lục
- Data lineage là gì?
- Data lineage hoạt động thế nào?
- Có những loại data lineage nào?
- Ví dụ: số doanh thu tháng 9 lệch 2%
- Doanh nghiệp Việt Nam dùng data lineage vào việc gì?
- Data lineage khác gì với catalog, metadata, pipeline và data provenance?
- Ưu điểm và hạn chế của data lineage
- Khi nào doanh nghiệp nên và chưa nên đầu tư data lineage?
- Cách đánh giá một lineage có đáng tin không
- Câu hỏi thường gặp
Data lineage là gì?
Data lineage là việc theo dõi dữ liệu được tạo ra, biến đổi, chuyển đi và sử dụng như thế nào giữa các hệ thống theo thời gian. Nó ghi lại nguồn gốc, các phép biến đổi và đường di chuyển của dữ liệu, cho phép nhìn thấy toàn bộ vòng đời. Tiếng Việt thường gọi là “dòng dõi dữ liệu” hoặc “truy xuất nguồn gốc dữ liệu”.
Cách dễ hiểu nhất là coi lineage như một đồ thị phụ thuộc. DataHub mô tả lineage là đồ thị phụ thuộc của hệ sinh thái dữ liệu. Mỗi nút là một bảng, tệp, tác vụ xử lý hoặc báo cáo. Mỗi cạnh nói rằng “nút này được tạo từ nút kia”.
Lineage không lưu nội dung dữ liệu. Nó lưu quan hệ: bảng doanh_thu_thang được sinh từ bảng nào, bằng đoạn SQL nào, chạy lúc mấy giờ, rồi cấp dữ liệu cho dashboard nào. Vì vậy nó thuộc nhóm siêu dữ liệu (metadata), cụ thể là metadata về quan hệ giữa các tài sản dữ liệu.
Data lineage hoạt động thế nào?
Theo mô tả của Qlik, lineage được xây bằng cách thu thập metadata ở từng bước xử lý rồi lưu vào một kho metadata để phân tích. Mỗi khi dữ liệu đi qua một tiến trình, metadata lại được cập nhật. Có ba cách thu thập chính.
1. Phân tích mã nguồn (static parsing)
Công cụ đọc câu lệnh SQL và suy ra cột đầu ra lấy từ cột đầu vào nào. Với dbt, lineage mức mô hình có sẵn nhờ các hàm ref() và source(). Lineage gốc của dbt dừng ở mức bảng hoặc mô hình, nên cho biết fct_revenue phụ thuộc stg_orders nhưng không chỉ ra cột nào lấy từ cột nào. Muốn có mức cột, công cụ phải phân tích biểu thức SELECT.
Cách này có điểm yếu im lặng. Một bài phân tích kỹ thuật chỉ ra rằng SQL động, macro sinh tên cột lúc chạy hay cú pháp riêng của từng engine có thể làm parser sai mà không báo lỗi, kết quả là đồ thị thiếu chứ không có cảnh báo. Vì vậy khi nhìn một đồ thị lineage “sạch đẹp”, bạn cần hỏi nó có bỏ sót nhánh nào không.
2. Thu sự kiện lúc chạy (runtime events)
Thay vì đọc mã, hệ thống xử lý tự phát sự kiện mỗi khi một tác vụ bắt đầu, đọc bảng nào, ghi bảng nào và kết thúc. OpenLineage là đặc tả mở cho kiểu sự kiện này. Nó cho phép gom lineage từ Spark, Airflow, dbt, Flink vào một đồ thị chung. Sự kiện mang theo các “facet”, ví dụ facet schema (tên và kiểu cột), facet chất lượng (số dòng, số giá trị null) và facet mã nguồn (SQL đã biên dịch).
Với mức cột, đặc tả OpenLineage phân biệt phép biến đổi trực tiếp và gián tiếp. Trực tiếp gồm IDENTITY, TRANSFORMATION, AGGREGATION; gián tiếp gồm JOIN, GROUP_BY, FILTER, SORT, WINDOW, CONDITIONAL. Cách phân loại này có ích: một cột chỉ dùng để lọc (FILTER) vẫn ảnh hưởng đến kết quả dù không xuất hiện trong bảng đích.
3. Tích hợp sẵn trong nền tảng và khai báo thủ công
Một số nền tảng tự ghi lineage. Databricks Unity Catalog tự thu lineage cho các truy vấn chạy trên Databricks, tới mức cột, và tổng hợp qua mọi workspace gắn vào metastore. Google Cloud cũng có API Data Lineage, và với hệ thống không được tích hợp sẵn thì ghi lineage qua API, khuyến nghị dùng định dạng OpenLineage.
Tự động không có nghĩa là đầy đủ. Tài liệu của Databricks nêu rõ giới hạn: lineage mức cột không được thu nếu nguồn hoặc đích được tham chiếu bằng đường dẫn tệp, chỉ hỗ trợ khi cả hai tham chiếu theo tên bảng. Với hàm tự định nghĩa (UDF), hệ thống chỉ giữ lineage mức bảng, không có mức cột. Còn những bước chạy ngoài hệ thống như macro Excel, tệp CSV gửi tay hay script trên máy cá nhân thì không công cụ nào thấy được nếu bạn không khai báo.
Có những loại data lineage nào?
Có nhiều cách chia, tuỳ bạn nhìn theo độ chi tiết, hướng đọc hay cách thu thập.
Mức bảng và mức cột
Lineage thô (coarse-grained) cho cái nhìn tổng quát ở mức toàn bộ tập dữ liệu hoặc hệ thống. Lineage mịn (fine-grained) đi xuống từng trường. Phần lớn các nhóm bắt đầu với mức bảng để có kết quả nhanh, rồi bổ sung mức cột khi cần gỡ lỗi như mất độ chính xác số hoặc xuất hiện null bất ngờ.
Ngược, xuôi và đầu-cuối
Lineage ngược đi từ nơi dùng về nguồn, lineage xuôi đi từ nguồn đến nơi dùng, còn đầu-cuối là kết hợp cả hai. Nhân viên kế toán thấy số sai trên báo cáo sẽ dùng hướng ngược. Kỹ sư sắp đổi tên một cột sẽ dùng hướng xuôi để biết ai bị ảnh hưởng.
Lineage kỹ thuật và lineage nghiệp vụ
Lineage kỹ thuật nói về bảng, cột, job. Lineage nghiệp vụ gắn thêm ngữ cảnh: chỉ số “doanh thu thuần” do phòng nào định nghĩa, ai sở hữu. Atlan xếp hai loại này cùng với mức bảng và mức cột trong bốn nhóm chính (table-level, column-level, business lineage, technical lineage). Phần ngữ cảnh nghiệp vụ thường nằm trong danh mục dữ liệu (data catalog) chứ không nằm trong công cụ chạy job.
Ví dụ: số doanh thu tháng 9 lệch 2%
Đây là ví dụ minh hoạ, không phải số liệu của doanh nghiệp cụ thể.
Một chuỗi cửa hàng có dashboard doanh thu. Cuối tháng 9, kế toán thấy dashboard thấp hơn sổ sách khoảng 2%. Không có lineage, hai bên mất nhiều ngày hỏi qua lại: bộ phận dữ liệu nghi hệ thống bán hàng, kế toán nghi bộ phận dữ liệu.
Có lineage, người xử lý mở dashboard, chọn cột “doanh thu” rồi đi ngược. Đồ thị cho thấy cột này đến từ bảng doanh thu tổng hợp, mà bảng này ghép hai nguồn: dữ liệu giao dịch và một tệp Excel bảng giá do phòng kinh doanh cập nhật. Tệp Excel đổi định dạng cột chiết khấu từ ngày 15/9, nên phép ghép bỏ sót một số dòng. Điểm lệch xác định được trong vài phút thay vì vài ngày.
Chú ý ô viền cam: tệp Excel là loại nguồn mà parser SQL và sự kiện job không tự thấy. Muốn nó có mặt trong đồ thị, bạn phải khai báo nó như một nguồn, ghi rõ chủ sở hữu và chu kỳ cập nhật.
Doanh nghiệp Việt Nam dùng data lineage vào việc gì?
Truy lỗi báo cáo
Đây là tình huống như ở trên. Giá trị lớn nhất nằm ở chỗ biến “ai sai” thành “bước nào sai”. Nó cũng giúp xác định lỗi xuất phát từ dữ liệu nguồn hay từ phép biến đổi, và liên quan chặt với chất lượng dữ liệu: lineage chỉ ra chỗ cần kiểm tra, còn các quy tắc chất lượng cho biết kiểm tra cái gì.
Đánh giá tác động trước khi thay đổi
Khi phần mềm kế toán đổi cấu trúc bảng, hoặc bạn định bỏ một cột cũ, truy xuôi cho ra danh sách báo cáo, mô hình và tác vụ phụ thuộc. Lineage mức cột có giá trị hơn hẳn cho phân tích tác động, vì trả lời được người tiêu thụ nào bị ảnh hưởng khi một cột nguồn đổi. Cùng cơ chế này giúp chuyển hệ thống (migration) sang kho dữ liệu mới: bạn biết bảng nào còn được dùng và bảng nào có thể bỏ.
Kiểm toán và giải trình số liệu
Ngân hàng, bảo hiểm, chứng khoán thường phải giải thích một chỉ tiêu báo cáo được tính từ đâu. Lineage cung cấp đường đi có thể trình ra thay vì tài liệu viết tay. Mức cột và gắn với đoạn SQL cụ thể thường là thứ kiểm toán viên muốn thấy.
Quản lý dữ liệu cá nhân
Vận hành pipeline
Một data pipeline với hàng chục bước rất khó nhớ hết trong đầu. Khi một bước chạy chậm hoặc thất bại, lineage cho biết những bảng đích nào sẽ bị trễ, từ đó báo đúng người dùng thay vì báo cả công ty. Nếu pipeline theo mô hình ETL hoặc ELT, mỗi bước chuyển đổi là một cạnh trong đồ thị lineage.
Data lineage khác gì với catalog, metadata, pipeline và data provenance?
Các khái niệm này dễ nhầm vì cùng xoay quanh “dữ liệu về dữ liệu”. Bảng dưới tách ra theo câu hỏi mà mỗi khái niệm trả lời.
| Khái niệm | Câu hỏi trả lời | Quan hệ với lineage |
|---|---|---|
| Data lineage | Dữ liệu này đi từ đâu, qua bước nào, ai dùng? | Chính nó |
| Metadata | Dữ liệu này mô tả thế nào (tên, kiểu, chủ sở hữu)? | Lineage là một loại metadata về quan hệ |
| Data catalog | Tôi tìm tập dữ liệu nào, ở đâu, tin được không? | Catalog thường hiển thị lineage như một tab |
| Data pipeline / ETL | Dữ liệu được di chuyển và biến đổi bằng gì? | Pipeline tạo ra đường đi, lineage ghi lại nó |
| Data quality | Dữ liệu có đúng, đủ, kịp thời không? | Lineage chỉ ra nguồn của lỗi, quality đo lỗi |
| Data provenance | Lịch sử và nguồn gốc dữ liệu | Gần như đồng nghĩa; thường dùng trong nghiên cứu, lineage dùng trong doanh nghiệp |
| Data governance | Quy tắc, vai trò, trách nhiệm quản lý dữ liệu | Lineage là bằng chứng và công cụ hỗ trợ thực thi |
Về data governance, DataCamp tóm gọn: lineage lần theo hành trình của dữ liệu, còn governance là chính sách rộng hơn về chất lượng, bảo mật và tuân thủ. Lineage có thể hỗ trợ việc thực thi các chính sách governance.
Ưu điểm và hạn chế của data lineage
Ưu điểm
- Rút ngắn thời gian tìm nguyên nhân khi số liệu sai, vì đi theo đồ thị thay vì hỏi từng người.
- Cho phép đánh giá tác động trước khi đổi cấu trúc dữ liệu, giảm báo cáo vỡ bất ngờ.
- Là bằng chứng có thể trình bày khi kiểm toán hoặc khi phải giải thích số liệu.
- Giúp dọn dẹp: bảng không có đường ra nào đến báo cáo hay mô hình là ứng viên để xoá hoặc lưu trữ.
Hạn chế
- Độ phủ không đồng đều. Công cụ tự động thấy rõ SQL và job chuẩn, nhưng không thấy bước thủ công, Excel gửi qua email hay script ngoài hệ thống.
- Sai âm thầm. Như đã nêu ở phần phân tích SQL, parser có thể bỏ sót cột mà không báo lỗi.
- Quá nhiều chi tiết. Khi số nút tăng, biểu diễn trở nên khó đọc, nên công cụ tốt cần cho ẩn tạm các điểm ngoại vi.
- Không chứng minh dữ liệu đúng. Lineage nói dữ liệu đi đường nào, không nói giá trị có chính xác hay không. Việc đó thuộc về kiểm tra chất lượng.
- Cần chủ sở hữu. Một cạnh trong đồ thị không có người phụ trách thì khi lỗi xảy ra bạn vẫn không biết gọi ai.
Khi nào doanh nghiệp nên và chưa nên đầu tư data lineage?
Mức đầu tư hợp lý phụ thuộc hai yếu tố: số lượng luồng dữ liệu và mức rủi ro nếu báo cáo sai hoặc dữ liệu cá nhân đi lạc.
Nên đầu tư khi
- Cùng một chỉ số được tính ở nhiều nơi và thỉnh thoảng cho kết quả khác nhau.
- Bạn đang chuyển từ hệ thống cũ sang kho dữ liệu mới và cần biết bảng nào còn người dùng.
- Phải giải trình nguồn gốc số liệu với cơ quan quản lý, kiểm toán hoặc đối tác.
- Dữ liệu cá nhân của khách hàng được sao chép sang nhiều hệ thống.
Chưa cần công cụ lineage riêng khi
- Doanh nghiệp chỉ có một phần mềm và vài báo cáo xuất thẳng từ đó. Một bảng ghi chú nguồn của từng báo cáo đã đủ.
- Quy tắc tính chỉ số còn chưa thống nhất. Lineage ghi lại cách tính, nó không quyết định cách tính nào đúng.
- Phần lớn luồng dữ liệu chạy qua Excel và email: công cụ tự động sẽ ít thấy gì, nên cần chuẩn hoá nguồn trước.
Nếu đã dùng nền tảng có sẵn lineage, hãy tận dụng trước. Chẳng hạn dbt có lineage mức mô hình, và nhiều đội dùng dbt là nơi đầu tiên có lineage mức cột nhờ wrapper OpenLineage. Với doanh nghiệp xây hệ thống BI trên kho dữ liệu, tab lineage của công cụ BI hoặc catalog thường là điểm khởi đầu ít tốn công nhất.
Cách đánh giá một lineage có đáng tin không
Đồ thị đẹp chưa chắc đúng. Bạn có thể kiểm tra bằng bốn câu hỏi cụ thể.
- Đối chiếu một báo cáo quan trọng. Chọn một chỉ số, tự lần thủ công về nguồn rồi so với đồ thị. Nếu thiếu nhánh, ghi lại loại nguồn bị thiếu (Excel, UDF, truy cập theo đường dẫn tệp).
- Kiểm tra độ mới. Lineage được cập nhật khi nào: mỗi lần job chạy, hay chụp một lần mỗi tuần? Thay đổi mã hôm qua có xuất hiện không?
- Kiểm tra mức chi tiết. Với cột có phép tính phức tạp, đồ thị có hiện được cột đầu vào và loại biến đổi không, hay chỉ dừng ở mức bảng?
- Kiểm tra chủ sở hữu. Mỗi nút quan trọng có tên người hoặc nhóm phụ trách không?
Ghi lại kết quả của bốn câu này ngay cạnh đồ thị. Người dùng sau sẽ biết chỗ nào đáng tin và chỗ nào cần kiểm tay.
Câu hỏi thường gặp
Data lineage có phải là công cụ phần mềm không?
Không. Lineage là thông tin về đường đi của dữ liệu. Phần mềm chỉ là cách thu thập và hiển thị thông tin đó. Bạn có thể ghi lineage thủ công trong bảng tính cho hệ thống nhỏ, hoặc dùng công cụ như OpenLineage, DataHub, OpenMetadata hay tính năng có sẵn của nền tảng dữ liệu đám mây.
Data lineage khác gì data provenance?
Hai khái niệm gần nhau và nhiều tài liệu dùng thay thế được. Reltio phân biệt rằng cả hai đều nói về lịch sử và nguồn gốc dữ liệu. Trong thực tế doanh nghiệp, “lineage” thường nhấn vào dòng chảy giữa các hệ thống, còn “provenance” hay gặp trong nghiên cứu khoa học và dữ liệu huấn luyện AI.
Lineage mức cột có cần thiết không?
Không phải lúc nào cũng cần. Mức bảng đủ để biết bảng nào phụ thuộc bảng nào. Mức cột cần khi bạn phải gỡ lỗi một trường cụ thể, đánh giá tác động khi đổi một cột, hoặc theo dõi cột chứa dữ liệu cá nhân đi đến đâu.
Vì sao công cụ lineage tự động vẫn thiếu dữ liệu?
Vì nó chỉ thấy những gì đi qua hệ thống được tích hợp. Theo tài liệu Databricks, truy cập bằng đường dẫn tệp hay hàm UDF làm mất lineage mức cột. Bước thủ công như chỉnh tay trên Excel thì không có sự kiện nào để thu. Cách xử lý là khai báo các nguồn đó như nút riêng và kiểm tra đối chiếu định kỳ.
Data lineage có liên quan đến AI không?
Có. Khi một mô hình cho kết quả bất thường, bạn cần biết tập dữ liệu huấn luyện đến từ đâu và đã qua xử lý nào. Lineage cho phép truy vết từ đầu ra của mô hình về bảng nguồn, hỗ trợ giải trình và rà soát dữ liệu cá nhân trong dữ liệu huấn luyện.
Bắt đầu tìm hiểu lineage từ đâu?
Hãy hiểu trước metadata và pipeline, vì lineage được dựng từ hai thứ đó. Sau đó xem tab lineage của công cụ bạn đang dùng (kho dữ liệu, dbt, công cụ BI) để thấy một đồ thị thật với dữ liệu của chính doanh nghiệp.