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

DBT là gì? Mấy thứ nhỏ nhặt mình lụm lặt về DBT

0 0 22

Người đăng: Myzu

Theo Viblo Asia

DBT LÀ GÌ ?


DBT là viết tắt cho Data Build Tool , là công cụ hỗ trợ quá trình transform data trở nên nhanh và trở nên dễ dàng hơn .

Tại sao lại là DBT?


Một vài câu hỏi mà chúng ta thường gặp là

  • Vì sao lại phải sử dụng DBT, tụi teo đang xài SQL ngon lành phở mà ?
  • hay là Ủa? sao kỳ dị? đang quen thuộc với SQL tự dưng cái phải học thêm DBT ha?
    Thì dị nè , nhìn cái tên mình cũng thấy sương sương đó , DBT được thiết kế để giải quyết phần T trong ELT , nó sẽ làm với raw data trong quá trình Transform. DBT cung cấp ít chức năng trong quá trình transform hơn các cái OSS(open-source) ETL tool khác như Airflow, Luigi,... Bù lại nó được cái là dễ hỉu, dễ xài cho mấy má non-engineer.

    image.png
    Nguồn: copy

    Mấy năm gần đây thì DW nó mạnh mẽ và linh hoạt, nó có thể tách biệt phần lưu trữ và phần xử lý, elastic scale (kiểu linh hoạt trong việc scale ) và áp dụng Machine Learning. Xong cái nhiều công ty xài , mà nhiều công ty xài dẫn tới nhu cầu , càng dễ xài càng tốt
    Nói chung về lợi ích thì kha khá, chủ yếu là dễ học, dễ xài, dễ dàng sử dụng lại (dễ dàng chuyển đổi giữa các loại sql với nhau , dí dụ đang xài SQL , cái muốn đổi sang bigquery thì cũng k mất nhiều công sức), đơn giản hóa cái việc coding của mình( dí dụ như sql cần create table , insert data into table đó thì dbt chỉ cần viết select là nó tự tạo model, tự insert )
    Mấy cái xịn xò hơn thì như dependency( kiểu sắp xếp table nào chạy rùi tới table nào chạy chẳng hạn ) hay là tự tạo document , xài jinja template , version control hay cho phép kiểm tra chất lượng dữ liệu đầu vào( đại khái là kiểm tra xem raw đúng chưa , raw như nào, test data đó ) gòi hỗ trợ vài automation test case...

Cấu trúc của DBT


Chời má, mỗi lần ngồi đọc mấy cái document là mệt xỉu , còn không hình dung được nó như nào nên phải take note ra nè mấy má

Thì tùy mấy má tổ chức folder như nào thui , cơ mà trên cơ bản nó dị:

image.png
Nguồn: copy


Cấu trúc nó sẽ là :

  • 1 folder (tên qq dì cũng được , tên project mình chẳng hạn)

    • folder analyses: folder này chứa mấy script sql mà analytic cần á, cơ mà nó chỉ compile chứ k có excute
      Theo như mìn thì tác dụng lớn nhất của nó là ò , teo có cái model sql đó , cơ mà nó xài jinja template ( mấy cái {{ table.name}} dị nè) rùi sao teo biết là code teo viết ra sql như naò chẳng hạn , thì bỏ cái script đó dô folder này nó sẽ generate ra format sql vào 1 cái folder gọi là target-> analyse 9 (dô đó check code chạy). Rùi đó thỉnh thoảng m cần phân tích khác chút xíu so với model , thêm cột , hay sửa metric dì chẳng hạn , script chạy 1 ,2 lần mà cái sửa model thì k được, viết lại thì mắc công , bỏ dô đây, bỏ dô đây generate code cho lẹ nha má
    • folder macro: này quan trọng ,này quan trọng , này quan trọng, điều quan trọng nhắc lại 3 lần
      Thì nãy có nói đó , ưu điểm nó là dễ sử dụng lại , dị sử dụng lại sao , thì chỗ này nó làm nè
      Folder này sẽ chứa toàn bộ macro của project , macro thì như sql hiểu là mấy cái store procedure hay là mấy cái function á. Viết lần gọi chục lần. Macro thì nó nhiều tính năng lắm, mình thấy team mình dùng macro để tiện convert giữa các SQL khác nhau thấy cũng hay ho( chủ yếu là do mình k nắm được Jinja nhiều, ai hứng thú thì tìm hiểu thêm nhe
    • folder models: macro quan trọng thì naỳ đặc biệt quan trọng, 1 project có thể thiếu tất cả folder khác nhưng k thể thiếu folder này
      Dì sao ư? dì cái này tạo model chớ sao nữa, hong có model, hong có data rùi lấy cái dì xử lý . Trong này chứa mấy file .sql mà 1 file là 1 models( có thể là bảng, bảng tạm ,..) chạy cái này thì nó generate model + insert data cho mình nè.
    • folder seeds: folder này chứa mấy file csv. mỗi file csv khi chạy thì tạo thành 1 table á. Này để mình import data từ file dô table đỡ lằng nhằng hơn nè
    • folder snapshots: nghe đồn nó để snapshot data của một table tại 1 thời điểm nào đó , này chưa xài chưa biết nha mấy pa.
    • folder tests: chòi má, tác dụng y như tên, viết test cái dì thì quăng dô đây, chạy nó sẽ test hộ cho, thường thì mình viết unit test mấy cái hàm nè , fake data test cho mấy table nè
    • gitignore: ai xài git thì biết he , cái dì k muốn push lên git thì quăng đây
    • dbt_project.yml : này quan trọng nè , má nói hồi cái dì cũng quan trọng chơn, cơ mà này k phải là folder, này là file =))
      Thì tại bất cứ cái dbt project nào cũng có nó mới chạy được chớ sao. Trong này chứ mấy cái mô tả về project như là tên , version , xài những biến nào ( global variable : kiểu dị á ) , xong chứa những folder dì , config các kiểu ...
    • readme.md : này thì chỗ viết doc, chỗ đầu tiên phải đọc khi đọc source nào, biết đâu dễ hỉu hơn .

Bình luận

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

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

Tổng quát về Data warehouse

Bạn có bao giờ thắc mắc một doanh nghiệp làm sao có thể lưu được tất cả các dữ liệu khổng lồ tới từ các quy trình kinh doanh của mình để phục vụ cho nghiệp vụ phân tích thị trường, hoạch định chiến lư

0 0 76

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

Bypassing Network Filters

Network Filters. Khi một malware được cài đặt vào máy của nạn nhân, nó sẽ cố gắng kết nối tới C2 thông qua các giao thức mạng được thiết lập từ trước.

0 0 26

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

What are the healthcare app development requirements

If you look at various industries, they are evolving and expanding one after the other with the help of mobile technologies. The healthcare industry is also reducing the technological gap in the era o

0 0 21

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

How to Choose the Best IT Consulting Service Provider?

Your business tools do an astral job, but if they are old or not working well, this can lead to a negative impact. . Ways to Get the Right IT Consulting Service Provider Company. 1.

0 0 21

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

PepsiCo partners with NTSC (Petromin) to launch and pilot the first EV Delivery truck in the Kingdom

RIYADH, Saudi Arabia: February 15 –. In a joint effort to develop a full decarbonization roadmap for PepsiCo’s fleet in the MENA Region, PepsiCo, a globally leading food and beverage manufacturer, and

0 0 23

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

A. STRUCTURAL PATTERNS: 1.Adapter

Adapter Design Pattern. Mục đích chính. . Chuyển đổi interface của 1 class thành 1 interface khác mà clients mong muốn.

0 0 12