Giới thiệu về DBT
Chào mọi người! Hôm nay, chúng ta sẽ cùng khám phá về dbt (data build tool) - một công cụ tuyệt vời dành cho những ai làm việc trong lĩnh vực dữ liệu. dbt giúp các nhà phân tích và kỹ sư dữ liệu biến đổi, kiểm tra và tài liệu hóa dữ liệu một cách dễ dàng và hiệu quả.
dbt Core và dbt Cloud
dbt cung cấp hai phiên bản: dbt Core và dbt Cloud. dbt Core là phiên bản mã nguồn mở, cho phép người dùng cài đặt trực tiếp trên máy tính hoặc máy chủ, rất phù hợp với những ai thích tùy chỉnh. Ngược lại, dbt Cloud là dịch vụ được quản lý mà bạn có thể sử dụng qua giao diện trực tuyến, giúp tối ưu hóa quy trình làm việc từ phát triển đến kiểm thử và triển khai mô hình dữ liệu.
Tính Năng Nổi Bật Của dbt
Một số tính năng chính của dbt bao gồm:
- Biến đổi và chạy mã SQL: dbt giúp bạn biên dịch và thực thi mã phân tích trên nền tảng dữ liệu, từ đó cải thiện quy trình làm việc.
- Quản lý phiên bản dễ dàng: Tích hợp với GitHub giúp theo dõi thay đổi và đảm bảo tính nhất quán.
- Tạo macro bằng Jinja: dbt sử dụng Jinja để tạo mã SQL động, giúp tối ưu hóa truy vấn và giảm thiểu lỗi.
- Mô hình hóa dữ liệu mô-đun: Khuyến khích việc phát triển các mô hình độc lập, từ đó dễ dàng kiểm tra và tái sử dụng.
- Trực quan hóa dòng chảy dữ liệu: Tạo cái nhìn rõ ràng về nguồn gốc và phụ thuộc của dữ liệu, giúp dễ dàng quản lý và phân tích.
Phần mềm dbt không chỉ tối ưu hóa công việc cho các nhà phân tích mà còn nâng cao chất lượng và tính tin cậy của dữ liệu phân tích.
Hướng Dẫn Cài Đặt và Sử Dụng dbt Core
Bước 1: Tạo Dữ Liệu Mẫu
Đầu tiên, bạn có thể tạo một bộ dữ liệu mẫu để kiểm tra:
python
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
# Tạo dữ liệu mẫu
np.random.seed(0)
start_date = datetime(2021, 1, 1)
end_date = datetime(2021, 12, 31)
date_range = pd.date_range(start_date, end_date, freq='D')
data = {
'sale_id': range(1, len(date_range) + 1),
'sales_channel': np.random.choice(['Online', 'Retail', 'Wholesale'], size=len(date_range)),
'revenue': np.random.uniform(100, 500, size=len(date_range)).round(2),
'sale_date': date_range
}
sales_data = pd.DataFrame(data)
sales_data.to_csv('sales_data.csv', index=False)
print("Sample data generated:")
print(sales_data.head())
Bước 2: Cài Đặt dbt
Cài đặt dbt Core trên máy của bạn:
bash
pip install dbt-core
pip install --upgrade dbt-bigquery
Bước 3: Khởi Tạo Dự Án dbt
Tạo dự án dbt mới:
bash
dbt init my_sales_project
Cấu trúc thư mục sẽ được thiết lập tự động.
Bước 4: Tạo File “profiles.yml”
Thiết lập file profiles.yml để kết nối với BigQuery:
yaml
my_sales_project:
target: dev
outputs:
dev:
type: bigquery
method: service-account
project: [tên-dự-án-GCP-của-bạn]
dataset: [tên-dataset-trong-BigQuery]
threads: 1
keyfile: [đường-dẫn-tới-file-key-json]
timeout_seconds: 300
Bước 5: Tạo Mô Hình Dữ Liệu
Trong thư mục models, tạo file SQL mới:
sql
# models/sales_analysis.sql
SELECT
sales_channel,
COUNT(*) as total_sales,
SUM(revenue) as total_revenue,
AVG(revenue) as average_revenue
FROM
{{ ref('sales_data') }}
GROUP BY
sales_channel
Bước 6: Chạy dbt
Thực hiện lệnh sau để xây dựng mô hình:
bash
dbt run
Bước 7: Kiểm Tra Dữ Liệu
Tạo các kiểm tra chất lượng dữ liệu:
yaml
# models/schema.yml
version: 2
models:
- name: sales_analysis
description: "Phân tích doanh thu theo kênh bán hàng"
columns:
- name: sales_channel
description: "Kênh bán hàng"
tests:
- unique
- not_null
- name: total_revenue
description: "Tổng doanh thu"
tests:
- not_null
Bước 8: Sinh Tài Liệu và Kiểm Tra
Chạy các lệnh để sinh tài liệu và kiểm tra:
bash
dbt test
dbt docs generate
Kết Luận
dbt Core là công cụ không thể thiếu cho bất kỳ nhà phân tích hoặc nhà phát triển dữ liệu nào. Nó giúp cải thiện hiệu suất làm việc và đảm bảo rằng dữ liệu luôn được xử lý một cách minh bạch và hiệu quả.
Tài Liệu Tham Khảo
- Tài liệu chính thức của dbt
- Dự án mẫu trên GitHub
source: viblo