fbpx

dbt – ứng dụng của dbt trong data platform hiện đại

Gioi thieu ve DBT trong Data Platform hien dai
Giới thiệu ứng dụng của dbt trong các nền tảng dữ liệu hiện đại
Chia sẻ bài viết này

Mục lục bài viết

1. Giới thiệu về dbt

Trong quá trình xây dựng và vận hành hệ thống Data Warehouse, việc thu thập, lưu trữ và xử lý dữ liệu luôn là những công đoạn quan trọng. Tuy nhiên, khi quy mô dữ liệu ngày càng lớn, số lượng nguồn dữ liệu ngày càng đa dạng và nhu cầu khai thác dữ liệu ngày càng phức tạp, việc quản lý các câu lệnh SQL phục vụ chuyển đổi dữ liệu (Data Transformation) trở thành một thách thức không nhỏ.

Các tổ chức thường phải đối mặt với những vấn đề như:

  • Các câu lệnh SQL được xây dựng rời rạc, khó quản lý và bảo trì.

  • Logic xử lý dữ liệu bị lặp lại giữa nhiều bảng hoặc nhiều quy trình ETL.

  • Khó kiểm soát sự phụ thuộc giữa các bảng dữ liệu.

  • Thiếu cơ chế kiểm thử chất lượng dữ liệu tự động.

  • Khó theo dõi lịch sử thay đổi và xác định nguyên nhân khi dữ liệu phát sinh sai lệch.

  • Việc triển khai SQL từ môi trường Development sang Production chưa được chuẩn hóa.

Để giải quyết những vấn đề này, dbt (Data Build Tool) ra đời như một công cụ hỗ trợ xây dựng, quản lý và triển khai các quy trình chuyển đổi dữ liệu dựa trên SQL.

DBT giúp các kỹ sư dữ liệu áp dụng những phương pháp phát triển phần mềm hiện đại vào quá trình xử lý dữ liệu, bao gồm quản lý mã nguồn, tái sử dụng logic, kiểm thử tự động, quản lý phụ thuộc và tài liệu hóa hệ thống dữ liệu.

Thay vì xây dựng các quy trình ETL truyền thống với nhiều công cụ và thành phần xử lý phức tạp, dbt tập trung vào một công đoạn cốt lõi: Transform – Chuyển đổi dữ liệu.

dbt_01_Gioi thieu ve dbt

2. dbt hoạt động như thế nào

dbt là một công cụ hỗ trợ Data Transformation, cho phép kỹ sư dữ liệu sử dụng SQL để định nghĩa các mô hình dữ liệu (Data Models), tổ chức chúng thành những quy trình xử lý có cấu trúc và triển khai trực tiếp trên nền tảng dữ liệu.

Một điểm đặc biệt của dbt là không thực hiện việc di chuyển dữ liệu từ nguồn này sang nguồn khác. Thay vào đó, dbt gửi các câu lệnh SQL đến hệ quản trị cơ sở dữ liệu hoặc nền tảng Data Warehouse để thực thi quá trình chuyển đổi dữ liệu.

Đây là cách tiếp cận thường được gọi là ELT (Extract – Load – Transform).

Mô hình ELT với dbt:

  1. Extract: Thu thập dữ liệu từ các hệ thống nguồn.

  2. Load: Đưa dữ liệu vào Data Warehouse hoặc Data Lakehouse.

  3. Transform: Sử dụng dbt để chuyển đổi dữ liệu thành các bảng phục vụ báo cáo, phân tích và khai thác nghiệp vụ.

Ví dụ, một ngân hàng có thể thu thập dữ liệu giao dịch từ hệ thống Core Banking, dữ liệu khách hàng từ CRM và dữ liệu khoản vay từ hệ thống Lending. Sau khi dữ liệu được đưa vào Data Warehouse, dbt sẽ thực hiện các bước xử lý:

  • Chuẩn hóa dữ liệu giao dịch.

  • Tổng hợp số dư theo khách hàng và chi nhánh.

  • Xây dựng dữ liệu dư nợ theo ngày.

  • Kết hợp dữ liệu khách hàng, tài khoản và khoản vay.

  • Tạo các bảng dữ liệu phục vụ báo cáo quản trị.

3. Những thành phần quan trọng trong dbt

dbt_02_Gioi thieu ve dbt

Để hiểu và sử dụng dbt hiệu quả, chúng ta cần nắm được một số thành phần cốt lõi.

3.1. Models – Mô hình dữ liệu

Model là thành phần trung tâm của một dự án dbt.

Mỗi model thường tương ứng với một file SQL, trong đó chứa logic chuyển đổi dữ liệu. dbt sẽ sử dụng nội dung SQL này để tạo hoặc cập nhật bảng, view hoặc các đối tượng dữ liệu khác trong Data Warehouse.

Ví dụ:

-- models/staging/stg_customer.sql

SELECT
    customer_id,
    customer_name,
    customer_type,
    created_date
FROM {{ source('core_banking', 'customer') }}

Thay vì tham chiếu trực tiếp đến bảng nguồn bằng tên vật lý, dbt cung cấp các hàm như source() và ref() để quản lý sự phụ thuộc giữa các đối tượng dữ liệu.

3.2. Sources – Khai báo nguồn dữ liệu

Source giúp khai báo các bảng dữ liệu đầu vào của dự án dbt.

Ví dụ:

version: 2

sources:
  - name: core_banking
    schema: raw
    tables:
      - name: customer
      - name: account
      - name: transaction

Sau khi khai báo, chúng ta có thể tham chiếu đến bảng nguồn bằng:

SELECT *
FROM {{ source('core_banking', 'customer') }}

Ưu điểm của cách tiếp cận này là tập trung hóa thông tin nguồn dữ liệu, hỗ trợ quản lý lineage và kiểm thử dữ liệu đầu vào.

3.3. Ref – Quản lý sự phụ thuộc giữa các Models

Hàm ref() cho phép một model tham chiếu đến model khác trong cùng dự án dbt.

Ví dụ:

-- models/marts/dim_customer.sql

SELECT
    customer_id,
    customer_name,
    customer_type
FROM {{ ref('stg_customer') }}

dbt sẽ tự động nhận diện mối quan hệ giữa hai model và xây dựng thứ tự thực thi phù hợp.

Đây chính là nền tảng để dbt tạo ra DAG (Directed Acyclic Graph), thể hiện luồng phụ thuộc giữa các đối tượng dữ liệu.

3.4. Materializations – Cách lưu trữ kết quả

dbt hỗ trợ nhiều phương thức materialization để xác định cách kết quả của một model được lưu trữ trong Data Warehouse.

Các loại phổ biến gồm:

MaterializationMô tả
ViewTạo View trong Data Warehouse
TableTạo bảng vật lý
IncrementalChỉ xử lý và cập nhật phần dữ liệu cần thiết
EphemeralKhông tạo đối tượng vật lý, SQL được nhúng vào model phụ thuộc

Ví dụ cấu hình:

{{ config(
    materialized='incremental',
    unique_key='transaction_id'
) }}

SELECT
    transaction_id,
    customer_id,
    transaction_date,
    amount
FROM {{ ref('stg_transaction') }}

{% if is_incremental() %}
WHERE transaction_date > (
    SELECT MAX(transaction_date)
    FROM {{ this }}
)
{% endif %}

Incremental Model đặc biệt hữu ích đối với các bảng giao dịch có khối lượng dữ liệu lớn, giúp giảm thời gian xử lý và tài nguyên tính toán.

3.5. Tests – Kiểm thử chất lượng dữ liệu

Một trong những ưu điểm nổi bật của dbt là khả năng tích hợp kiểm thử dữ liệu trực tiếp vào quy trình phát triển.

dbt cung cấp các generic tests phổ biến:

  • unique: Kiểm tra tính duy nhất.

  • not_null: Kiểm tra giá trị không được NULL.

  • accepted_values: Kiểm tra giá trị thuộc danh sách cho phép.

  • relationships: Kiểm tra tính toàn vẹn tham chiếu giữa các bảng.

Ví dụ khai báo trong file schema.yml:

models:
  - name: dim_customer
    columns:
      - name: customer_id
        data_tests:
          - unique
          - not_null

Ngoài các kiểm thử có sẵn, dbt còn cho phép người dùng xây dựng Custom Generic Tests và Singular Tests để kiểm tra các quy tắc nghiệp vụ phức tạp.

Ví dụ, một ngân hàng có thể xây dựng các kiểm thử:

  • Mỗi giao dịch phải có mã giao dịch duy nhất.

  • Số dư tài khoản không được âm trong những trường hợp nghiệp vụ không cho phép.

  • Dữ liệu giao dịch phải có business_date hợp lệ.

  • Tổng số dư giữa các bảng tổng hợp phải khớp với bảng nguồn.

Nhờ đó, kiểm soát chất lượng dữ liệu không còn là một công đoạn thực hiện thủ công mà có thể được tích hợp trực tiếp vào quy trình triển khai dữ liệu.

 

3.6. Macros – Tái sử dụng logic SQL

Macros là một trong những tính năng mạnh mẽ của dbt, cho phép xây dựng các đoạn logic SQL có khả năng tái sử dụng.

dbt sử dụng Jinja làm template engine để hỗ trợ biến, điều kiện, vòng lặp và các hàm tùy chỉnh.

Ví dụ:

{% macro get_current_business_date() %}

    CURRENT_DATE

{% endmacro %}

Sau đó có thể sử dụng macro trong nhiều model:

SELECT
    customer_id,
    account_no,
    {{ get_current_business_date() }} AS business_date
FROM {{ ref('stg_account') }}

Macros giúp chuẩn hóa logic xử lý, giảm trùng lặp code và đơn giản hóa quá trình bảo trì hệ thống.

3.7. Documentation và Data Lineage

dbt hỗ trợ tự động tạo tài liệu mô tả các models, columns, sources và tests.

Thông qua lệnh:

dbt docs generate
dbt docs serve

Người dùng có thể truy cập giao diện tài liệu để tìm hiểu cấu trúc dữ liệu và xem mối quan hệ phụ thuộc giữa các models.

Đây là tính năng rất hữu ích đối với Data Governance, bởi nó hỗ trợ:

  • Xây dựng tài liệu kỹ thuật cho Data Warehouse.

  • Theo dõi nguồn gốc và luồng di chuyển dữ liệu.

  • Xác định các bảng bị ảnh hưởng khi thay đổi một model.

  • Hỗ trợ kỹ sư dữ liệu và người khai thác dữ liệu hiểu rõ hơn về hệ thống.

4. dbt và những lợi ích đối với doanh nghiệpt

Việc ứng dụng dbt không chỉ giúp cải thiện cách viết và quản lý SQL mà còn mang lại nhiều lợi ích trong vận hành hệ thống dữ liệu.

Thứ nhất, chuẩn hóa quy trình phát triển dữ liệu.

Toàn bộ logic chuyển đổi dữ liệu được tổ chức thành các models có cấu trúc rõ ràng. Việc quản lý source code thông qua Git giúp kiểm soát lịch sử thay đổi, review và triển khai giữa các môi trường.

Thứ hai, tăng khả năng tái sử dụng logic.

Thông qua ref(), macros và các models trung gian, logic xử lý có thể được chia nhỏ và tái sử dụng thay vì phải viết lại nhiều lần.

Thứ ba, tự động hóa kiểm soát chất lượng dữ liệu.

Các tests có thể được thực thi tự động sau khi xây dựng hoặc cập nhật dữ liệu. Điều này giúp phát hiện sớm những sai lệch trước khi dữ liệu được sử dụng cho báo cáo và phân tích.

Thứ tư, minh bạch hóa luồng dữ liệu.

DAG và Documentation giúp người quản trị hiểu được mối quan hệ giữa các bảng, xác định nguồn gốc dữ liệu và đánh giá tác động của những thay đổi.

Thứ năm, dễ dàng tích hợp với các công cụ orchestration.

dbt có thể kết hợp với Apache Airflow để lập lịch, điều phối và giám sát các quy trình xử lý dữ liệu theo thời gian hoặc theo điều kiện nghiệp vụ.

5. dbt trong hệ sinh thái Data Engineering

dbt không thay thế hoàn toàn các công cụ ETL hay công cụ điều phối dữ liệu. Thay vào đó, nó đảm nhiệm một vai trò chuyên biệt trong kiến trúc Data Engineering.

Một số công cụ có thể kết hợp với dbt:

Công cụVai trò
Apache AirflowĐiều phối và lập lịch workflow
AWS GlueData Integration và xử lý dữ liệu
Amazon RedshiftData Warehouse
Amazon S3Lưu trữ dữ liệu
PostgreSQLDatabase và Data Warehouse
GitQuản lý mã nguồn
Power BIBáo cáo và trực quan hóa dữ liệu
Great ExpectationsKiểm thử và xác thực chất lượng dữ liệu

Ví dụ, trong một kiến trúc sử dụng Amazon S3 và Amazon Redshift, dữ liệu có thể được thu thập và lưu trữ trên S3, sau đó nạp vào Redshift. dbt thực hiện các bước chuyển đổi dữ liệu trong Redshift, còn Airflow đảm nhiệm việc điều phối toàn bộ quy trình.

Cách phân chia trách nhiệm này giúp hệ thống có kiến trúc rõ ràng, dễ mở rộng và thuận tiện trong vận hành.

6. dbt có những phiên bản nào?

Hiện nay, dbt có hai hướng triển khai chính:

dbt Core

Đây là phiên bản mã nguồn mở, cho phép người dùng cài đặt và chạy dbt trên máy tính cá nhân hoặc máy chủ riêng.

Một số ưu điểm:

  • Miễn phí sử dụng theo giấy phép mã nguồn mở.

  • Chủ động quản lý môi trường thực thi.

  • Dễ dàng tích hợp với Git và các công cụ CI/CD.

  • Phù hợp với việc xây dựng các pipeline dữ liệu tùy chỉnh.

dbt Cloud

Đây là nền tảng thương mại cung cấp môi trường phát triển và vận hành dbt trên cloud.

Ngoài những chức năng cốt lõi của dbt, nền tảng này cung cấp thêm các khả năng hỗ trợ phát triển, lập lịch, triển khai, quản lý và cộng tác trong các dự án dữ liệu.

Việc lựa chọn dbt Core hay dbt Cloud phụ thuộc vào kiến trúc hạ tầng, ngân sách, yêu cầu quản trị và mô hình vận hành của từng tổ chức.

7. Một số lệnh dbt thường sử dụng

Đối với những người mới bắt đầu, có thể làm quen với dbt thông qua các lệnh cơ bản sau:

LệnhChức năng
dbt initKhởi tạo dự án dbt
dbt debugKiểm tra cấu hình và kết nối
dbt depsCài đặt các packages
dbt compileBiên dịch SQL từ models
dbt runThực thi models
dbt testChạy các tests
dbt buildXây dựng và kiểm thử các resources được lựa chọn
dbt seedNạp dữ liệu từ file CSV
dbt snapshotTheo dõi sự thay đổi dữ liệu theo thời gian
dbt docs generateSinh tài liệu dự án

Đặc biệt, dbt build là lệnh hữu ích trong quy trình triển khai vì có thể kết hợp thực thi models, tests và các resources liên quan theo thứ tự phụ thuộc.

dbt_03_Gioi thieu ve dbt

8. Kết luận

Trong bối cảnh dữ liệu ngày càng trở thành tài sản quan trọng của doanh nghiệp, việc xây dựng một hệ thống Data Warehouse không chỉ dừng lại ở khả năng lưu trữ và xử lý dữ liệu. Các tổ chức còn cần một phương pháp phát triển dữ liệu có tính chuẩn hóa, minh bạch, dễ kiểm soát và có khả năng mở rộng.

dbt mang đến một cách tiếp cận mới cho công đoạn Data Transformation bằng cách kết hợp sức mạnh của SQL với những phương pháp phát triển phần mềm hiện đại.

Thông qua Models, Sources, Tests, Macros, Documentation và Data Lineage, dbt giúp đội ngũ Data Engineering xây dựng những quy trình chuyển đổi dữ liệu có cấu trúc, dễ bảo trì và đáng tin cậy hơn.

Đặc biệt, khi kết hợp dbt với các nền tảng như Amazon Redshift, PostgreSQL, Apache Airflow và các dịch vụ AWS, doanh nghiệp có thể xây dựng một hệ sinh thái Data Engineering hiện đại, đáp ứng tốt hơn nhu cầu khai thác và quản trị dữ liệu.

dbt không đơn thuần là một công cụ chạy SQL. Đó là một phương pháp tiếp cận giúp đưa tư duy Software Engineering vào thế giới Data Engineering.

Cảm ơn bạn đã đọc bài viết từ Blog của Nguyễn Ngọc Chiến.

Ngoài các bài viết chia sẻ kiến thức, mình có tạo một số khóa học để giúp bạn làm chủ các kỹ năng Xử lý, phân tích dữ liệu, chi tiết bạn có thể xem tại mục Khóa học của Website này hoặc tại Hệ thống học trực tuyến https://lms.ptdl.vn

Ngọc Chiến – PTDL.VN – Chia sẻ kiến thức về phân tích dữ liệu

Tác giả: Nguyễn Ngọc Chiến

Nguyễn Ngọc Chiến là chuyên gia Phân tích dữ liệu và Tin học ứng dụng với các chứng chỉ Microsoft Technology Associate (về SQL Server/Python), Microsoft Data Analyst Associate (về Power BI), Microsoft Office Master, Microsoft Excel Expert của Microsoft. Chi tiết chứng chỉ của anh tại https://ptdl.vn/ccgv

Anh có nhiều năm kinh nghiệm trong lĩnh vực Card Product, Digital Banking, Management Information System (MIS) – Business Intelligence (BI) – Data Analytics (DA) tại các ngân hàng, công ty hàng đầu Việt Nam.

Anh có kinh nghiệm đào tạo tại nhiều ngân hàng, công ty tài chính, chứng khoán, viễn thông lớn nhất Việt Nam. Các đơn vị tiêu biểu anh đã đào tạo: các ngân hàng VCB, MBB, BIDV, VIB, TPB, PVCombank, LPBank, NCB, MBV, công ty viễn thông Viettel Hà Nội, công ty tài chính MCredit, công ty chứng khoán SSI, MBS, công ty bảo hiểm MB Ageas Life, MIC, công ty Viettel Commerce, công ty chuỗi thực phẩm TH, công ty dược phẩm Delta, đào tạo cho các ngân hàng thành viên của Hiệp hội ngân hàng Việt Nam VNBA.

Anh dày công xây dựng các khóa đào tạo để biến kiến thức tin học có tính kỹ thuật cao trở nên dễ tiếp thu. Anh được biết đến với các bài giảng dễ hiểu, dễ học và áp dụng được ngay.

Chia sẻ kiến thức về phân tích dữ liệu là mục tiêu các khóa học của Nguyễn Ngọc Chiến mang tới cho các học viên.

ĐĂNG KÝ NHẬN THỦ THUẬT TIN HỌC
Chúng tôi sẽ gửi bạn Kiến thức cập nhật hàng tuần qua EMAIL/ZALO
Các bài viết liên quan

Cảm ơn bạn đã ghé thăm Website MasterMOS Education. Chúng tôi có quà tặng cho bạn, hãy đăng ký nhận nếu bạn thấy phù hợp nhé :)