RobustX / Chương trình học / Vị trí công việc / Data Engineer / Chuyển đổi Dữ liệu với Data Build Tool

Chuyển đổi Dữ liệu với Data Build Tool

Trong kiến trúc dữ liệu hiện đại, cuộc chơi đã thay đổi từ ETL (Extract, Transform, Load) sang ELT (Extract, Load, Transform). Sự thay đổi này đã đặt quá trình biến đổi dữ liệu (Transformation) vào vị trí trung tâm, ngay bên trong Data Warehouse, đồng thời tạo ra một thách thức lớn về quản lý và độ tin cậy. dbt (data build tool) ra đời như một cuộc cách mạng để giải quyết thách thức này, khai sinh ra vai trò mới đầy hấp dẫn: Analytics Engineer – người mang tư duy kỹ thuật phần mềm vào thế giới dữ liệu.

Khóa học này sẽ trang bị cho bạn một phương pháp làm việc hoàn toàn mới với SQL. Thay vì viết những kịch bản SQL dài và khó bảo trì, bạn sẽ học cách xây dựng các mô hình dữ liệu dưới dạng các module có tính kế thừa, được quản lý phiên bản chặt chẽ với Git. Bạn sẽ làm chủ các kỹ thuật kiểm thử dữ liệu tự động để đảm bảo chất lượng và độ chính xác của mọi con số. Toàn bộ quy trình làm việc của bạn sẽ được tài liệu hóa một cách tự động, tạo ra sự minh bạch tuyệt đối về dòng chảy dữ liệu (data lineage).

Thời lượng: 24h

KẾT QUẢ ĐẠT ĐƯỢC

Yêu cầu tiên quyết:

    • Hoàn thành kiến thức của các khóa học trước trong lộ trình.
    • Kỹ năng SQL vững vàng là yêu cầu bắt buộc.
    • Sử dụng thành thạo Git và có tư duy về quản lý phiên bản.

Nội dung khóa học

 1. Giới thiệu về hệ lưu trữ dữ liệu lớn và Data Lake
  • Tư duy ELT và Analytics Engineering:
    • Vì sao quá trình biến đổi dữ liệu giờ diễn ra sau khi “load vào kho”, không phải ETL truyền thống.
    • Vai trò mới: Analytics Engineer – giao thoa giữa Data Engineer và BI, tập trung modeling và automation bằng code.
  • Tổng quan về dbt:
    • dbt là gì? Vì sao dbt định hình lại quy trình xây dựng kho dữ liệu phân tích.
    • Vị trí của dbt trong Modern Data Stack.
    • Phân biệt dbt Core (cài đặt local, open-source) với dbt Cloud (managed, tích hợp tiện ích, collaboration).
  • Cấu trúc dự án dbt:
    • Khái quát các thành phần: models, sources, seeds, tests, macros, snapshots.
    • Quy trình chạy lệnh dbt: build, run, test, docs – luồng xử lý tự động và minh bạch.
 2. Xây dựng mô hình dữ liệu với dbt
  • Làm việc với models:
    • Tạo và quản lý các model dạng table, view, incremental (chạy bổ sung từng batch).
    • Cách viết SQL kết hợp Jinja để tự động hóa, tái sử dụng logic trong project lớn.

 

  • Quản lý nguồn dữ liệu với sources:
    • Định nghĩa các bảng thô (sources) làm điểm bắt đầu cho pipeline chuyển đổi.
    • Quản lý metadata, phát hiện thay đổi schema dữ liệu gốc.
  • Sử dụng seeds để import dữ liệu tĩnh:
    • Làm việc với file CSV để nhập dữ liệu lookup, dữ liệu tham chiếu hoặc dữ liệu mẫu.
  • Hàm ref() và lineage:
    • Sử dụng hàm ref() để thiết lập mối quan hệ phụ thuộc giữa các model, đảm bảo dbt tự động sắp xếp thứ tự build.
    • Truy vết lineage dữ liệu, phát hiện các phụ thuộc khi project phức tạp.
  • Tổ chức dự án theo best practice:
    • Chia tầng dữ liệu: staging (làm sạch dữ liệu gốc), intermediate (biến đổi/chuẩn hóa trung gian), marts (bảng phân tích cuối cùng).
    • Đặt tên, cấu trúc thư mục, tách biệt logic giúp bảo trì và mở rộng dễ dàng.
 3. Data Testing – Kiểm thử dữ liệu tự động
  • Test mặc định của dbt:
    • Định nghĩa và gắn test unique, not null, accepted values, relationships cho cột/field quan trọng.
    • Phát hiện sớm lỗi data (null, duplicate, mismatch) khi pipeline chạy tự động.
  • Custom test với SQL:
    • Viết các bài kiểm thử đặc thù cho từng nghiệp vụ bằng SQL.
    • Áp dụng test logic phức tạp (ví dụ: kiểm tra tính toàn vẹn dữ liệu, phát hiện trường hợp outlier hoặc số liệu bất thường).
  • Tích hợp kiểm thử vào pipeline:
    • Gắn test vào workflow CI/CD để tự động kiểm tra mọi thay đổi (trước khi merge code lên môi trường production).
    • Hiểu và xử lý báo cáo lỗi test, fix lỗi theo best practice.
 4. Tài liệu hóa dữ liệu (Documentation)
  • Viết mô tả cho models, columns, tests:
    • Gắn description chi tiết cho từng bảng, cột, test – trực tiếp trong code SQL hoặc file schema YAML.
  • Sinh tài liệu với dbt docs:
    • Sử dụng lệnh dbt docs generate/build để tự động tạo trang web tài liệu chi tiết, đầy đủ lineage.
    • Giải thích từng trường dữ liệu, từng pipeline một cách minh bạch.
  • Host tài liệu docs cho team:
    • Cách triển khai dbt docs lên server hoặc dbt Cloud, chia sẻ cho toàn team cùng sử dụng.
 5. Quản lý dự án dbt & Best Practices
  • Quản lý version với Git: Tích hợp dbt project, xây dựng workflow teamwork chuẩn
  • Sử dụng Jinja và macro:
    • Viết macro để tránh lặp lại code, tăng khả năng tự động hóa khi xử lý nhiều bảng, nhiều trường hợp.
    • Thực hành tạo biến, tham số hóa model để mở rộng linh hoạt.
  • Dbt packages:  thêm các function, macro hữu ích
  • Cấu hình môi trường: Phân biệt dev, staging, production
 6. Triển khai dbt trong môi trường thực tế
  • Kết nối dbt với DWH phổ biến:
    • Thực hành cấu hình kết nối với BigQuery, Snowflake hoặc Redshift.
    • Hiểu quyền truy cập, bảo mật, tối ưu pipeline kết nối dữ liệu.
  • Lập lịch chạy dbt:
    • Thiết lập schedule chạy tự động qua dbt Cloud hoặc tích hợp với Airflow.
    • Theo dõi trạng thái, retry khi thất bại, gửi thông báo lỗi cho team.
  • Tích hợp CI/CD:
    • Kết nối dbt với GitHub Actions: tự động chạy test, build mỗi khi có code mới/PR.
    • Best practices khi xây dựng pipeline production: rollback khi lỗi, log, cảnh báo.
 7. BÀI THỰC HÀNH CUỐI KHÓA: Xây dựng hệ thống Data Mart cho phân tích người dùng
  • Yêu cầu:
    • Thiết lập Project: Tạo một dbt project mới kết nối với BigQuery. Định nghĩa các bảng dữ liệu thô làm sources.
    • Xây dựng Models: Xây dựng các model theo các tầng:
      • Staging: Làm sạch và chuẩn hóa dữ liệu từ sources.
      • Marts: Tạo một bảng dim_users (thông tin người dùng) và một bảng fct_user_activity (hành vi người dùng) bằng cách join các model staging.
    • Áp dụng Testing: Viết các bài test để đảm bảo user_id trong bảng fct luôn tồn tại trong bảng dim.
    • Tài liệu hóa: Viết mô tả chi tiết cho tất cả các model và các cột quan trọng.
    • Trình bày: Tạo trang web tài liệu và trình bày về biểu đồ lineage cũng như kết quả của các bài data test.

Bài viết liên quan