- vừa được xem lúc

DBT là gì vậy nhỉ? Có gì khác biệt không?

0 0 6

Người đăng: Pham Thi Hong Anh

Theo Viblo Asia

Chào mọi người, hôm nay chúng ta sẽ khám phá dbt (data build tool), một công cụ đặc biệt hữu ích cho những ai đang làm việc trong lĩnh vực dữ liệu. dbt là một quy trình biến đổi dữ liệu giúp tăng hiệu quả công việc và chất lượng kết quả thông qua việc sử dụng các phương pháp tốt nhất của kỹ thuật phần mềm, như kiểm soát phiên bản, modular hóa và CI/CD. Tuy nhiên hôm nay mình sẽ tập trung về dbt Core thui nha. Với dbt Core, bạn có thể tận dụng sức mạnh của SQL để xây dựng, kiểm tra, và tài liệu hóa các mô hình dữ liệu ngay trong kho dữ liệu của mình.

dbt Core và dbt Cloud

dbt cung cấp hai sản phẩm chính: 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 và quản lý trực tiếp trên máy cá nhân hoặc máy chủ. Nó phù hợp với những người dùng thích thiết lập và điều chỉnh mọi thứ theo ý muốn. Ngược lại, dbt Cloud cung cấp một dịch vụ được quản lý hoàn toàn, với giao diện người dùng trực tuyến để phát triển, kiểm thử, lập lịch và kiểm tra các mô hình dữ liệu.

Tính Năng Của dbt

dbt hỗ trợ biên dịch và chạy mã phân tích của bạn trên nền tảng dữ liệu, cho phép cộng tác trên một nguồn đơn lẻ cho các số liệu và thông tin doanh nghiệp. Từ việc định nghĩa các bài kiểm tra cho dữ liệu, dbt giúp giảm thiểu lỗi khi logic thay đổi và cảnh báo khi có vấn đề phát sinh. Công cụ này tương thích và làm việc cùng với các công cụ nhập dữ liệu, trực quan hóa và các công cụ dữ liệu khác, giúp bạn biến đổi dữ liệu trực tiếp trong nền tảng đám mây của mình.

dbt không chỉ giúp các nhà phân tích làm việc hiệu quả hơn mà còn thúc đẩy phong cách làm việc chuyên nghiệp hơn như các kỹ sư phần mềm, từ đó nâng cao chất lượng và sự tin cậy của dữ liệu phân tích. Hãy tham gia cộng đồng dbt để học hỏi và chia sẻ kinh nghiệm với các chuyên gia dữ liệu khác trên toàn thế giới!

Giới thiệu về dbt Core

Dbt Core là phiên bản mã nguồn mở của dbt, cho phép các đội ngũ sử dụng SQL để thực hiện các biến đổi dữ liệu một cách hiệu quả. Nó hỗ trợ tự động hóa và lập lịch các quy trình biến đổi, từ đó giúp các nhà phát triển dễ dàng quản lý và điều phối công việc.

Tích hợp GitHub và quản lý phiên bản Một trong những đặc điểm nổi bật của dbt Core là khả năng tích hợp với GitHub, điều này giúp quản lý phiên bản dễ dàng hơn và tăng cường khả năng hợp tác giữa các thành viên trong đội. Quản lý phiên bản thông qua GitHub không chỉ giúp theo dõi các thay đổi mà còn đảm bảo tính nhất quán của dữ liệu.

Jinja và phát triển macro

Dbt Core sử dụng Jinja, một ngôn ngữ tạo mẫu, để tạo ra mã SQL động. Việc này cho phép tái sử dụng mã và tối ưu hóa các truy vấn SQL. Các macro trong dbt giúp đơn giản hóa các nhiệm vụ lập trình phức tạp, từ đó giảm thiểu lỗi và nâng cao hiệu quả.

Biến đổi dữ liệu mô-đun

Dbt Core khuyến khích sự phát triển của các mô hình dữ liệu độc lập, giúp quá trình kiểm tra và tái sử dụng dễ dàng hơn. Mỗi mô hình có thể được phát triển, kiểm tra và triển khai một cách độc lập, giúp tăng tốc độ phát triển và giảm rủi ro trong các thay đổi lớn.

Trực quan hóa và hiểu biết dòng chảy dữ liệu

Một trong những tính năng nổi bật của dbt Core là khả năng tạo ra cái nhìn rõ ràng về dòng chảy dữ liệu, cho phép người dùng dễ dàng truy vấn nguồn gốc và phụ thuộc của dữ liệu. Điều này là rất quan trọng để hiểu rõ cách thức dữ liệu được biến đổi và chuẩn bị cho các báo cáo cuối cùng.

Kết luận, dbt Core là một công cụ không thể thiếu trong bộ công cụ của bất kỳ nhà phân tích hoặc nhà phát triển dữ liệu nào. Nó không chỉ giúp cải thiện hiệu suất làm việc mà còn đảm bảo dữ liệu được xử lý một cách minh bạch và hiệu quả.

Cài đặt và Sử dụng dbt Core

Fake Data

Đầu tiên mình sẽ tự code 1 file dữ liệu nha

import pandas as pd
import numpy as np
from datetime import datetime, timedelta # Set seed for reproducibility
np.random.seed(0) # Generate dates
start_date = datetime(2021, 1, 1)
end_date = datetime(2021, 12, 31)
date_range = pd.date_range(start_date, end_date, freq='D') # Generate random data
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
} # Create DataFrame
sales_data = pd.DataFrame(data) # Save to CSV
sales_data.to_csv('sales_data.csv', index=False) print("Sample data generated:")
print(sales_data.head()) 

Data kiểu này nè

Để cho bạn thấy rõ hơn cách dbt Core hoạt động, mình sẽ giới thiệu một ví dụ cụ thể về cách xây dựng một project dbt từ đầu. Giả sử bạn muốn phân tích doanh thu theo các kênh bán hàng khác nhau. Đầu tiên, bạn cần cài đặt dbt Core trên máy tính của bạn và tạo một project mới:

Install

Cài đặt dbt

pip install dbt-core
pip install --upgrade dbt-bigquery 

Init model

Sau khi cài đặt, khởi tạo project dbt mới:

dbt init my_sales_project 

sau khi chạy xong lệnh init thì cấu trúc file kiểu này nè

Tạo thêm 1 file profiles.yml nữa nha, ở đây mình test vs Bigquery nên là mình có thêm type bigquery nha mn

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 

Tạo mô hình dữ liệu

Trong thư mục models, bạn tạo một file SQL mới, ví dụ sales_analysis.sql, và viết mã SQL để biến đổi dữ liệu:

# 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 

Đoạn code trên sẽ tạo ra một mô hình phân tích doanh số từ bảng sales_data, tính tổng số giao dịch, tổng doanh thu, và doanh thu trung bình theo từng kênh bán hàng.

Chạy dbt để tạo mô hình:

Sau khi tạo xong mô hình, bạn có thể chạy dbt để xây dựng mô hình trong cơ sở dữ liệu của bạn:

dbt run 

Kiểm tra dữ liệu:

Để đảm bảo chất lượng dữ liệu, bạn có thể tạo các kiểm tra (test) trong dbt:

# 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 

Sinh tài liệu và kiểm tra:

Sau khi thiết lập các kiểm tra, bạn có thể sinh tài liệu và chạy các kiểm tra để đảm bảo dữ liệu phù hợp:

dbt test
dbt docs generate

Kết Luận

Reference

https://docs.getdbt.com/docs/introduction

https://github.com/dbt-labs/jaffle-shop-classic

Bình luận

Bài viết tương tự

- vừa được xem lúc

Descriptive Analytics - Phân tích mô tả là gì?

Phân tích dữ liệu được sử dụng để khám phá dữ liệu, trích xuất thông tin chi tiết và hành động dựa trên những thông tin chi tiết đó. Phân tích dữ liệu bao gồm nhiều hoạt động, mỗi hoạt động có trọng t

0 0 21

- vừa được xem lúc

DBT (Data Build Tool) Là Gì? Những Thứ Cơ Bản Về DBT

Lời mở đầu. .

0 0 21

- vừa được xem lúc

[DBT] Kết Nối DBT Với Big Query

Lời mở đầu. Ở bài trước - Giới thiệu DBT - mình đã đề cập đến việc dùng dbt kết nối và làm việc với các data platform khác.

0 0 25

- vừa được xem lúc

Một chút dbt

Sau gần 3 năm làm thợ gõ phím, tôi nhận ra rằng mỗi lần làm dự án là một lần để tôi nhận thấy mình code ngu như thế nào. (メ﹏メ) (メ﹏メ) (メ﹏メ).

0 0 11

- vừa được xem lúc

Turntable - Develop dbt trên VS Code thì nên dùng

Không dài dòng, bài viết này giới thiệu Turntable - một Extension Visual Studio Code rất tiện mà mình phát hiện ra khi làm project dbt core, bao gồm cả sự hỗ trợ việc dbt documentation bằng AI. Ok bắt

0 0 7

- vừa được xem lúc

DBT Công cụ giúp đơn giản hóa quá trình chuyển đổi dữ liệu (Transformation)

Trong công việc của một Data Analyst, các bước như trích xuất (extract), tải (load), chuyển đổi (transform) và phân tích dữ liệu đóng vai trò quan trọng. Hiện nay, có nhiều công cụ hỗ trợ việc trích x

0 0 1