พื้นฐาน DBT (เครื่องมือสร้างข้อมูล)
สร้างแบบจำลองข้อมูลคลังข้อมูลเป็นคำสั่ง SELECT ใน dbt พร้อมการอ้างอิง แหล่งข้อมูล และแบบจำลองแบบเพิ่มเฉพาะส่วน
พื้นฐาน DBT (เครื่องมือสร้างข้อมูล) เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
dbt คืออะไร
dbt คือ "T" ใน ELT โดยใช้คำสั่ง SELECT เพื่อแปลงข้อมูลภายในคลังข้อมูล คุณกำหนด โมเดล (คำสั่ง SELECT) และ dbt จะสร้างโมเดลเหล่านั้นเป็นตารางหรือ VIEW จัดการการพึ่งพากัน และเรียกใช้การทดสอบ
เหตุใดจึงต้องใช้ dbt
ก่อนมี dbt การแปลงข้อมูลจะอยู่ในสคริปต์ SQL เฉพาะกิจ กระบวนงานที่จัดเก็บไว้ หรืองาน Python dbt นำสิ่งต่อไปนี้มาให้:
- SQL แบบแยกเป็นส่วนในรูปโค้ด ซึ่งจัดเก็บเวอร์ชันไว้ใน Git
- กราฟการพึ่งพา (ref()) แทนการจัดลำดับด้วยตนเอง
- การทดสอบในฐานะองค์ประกอบหลัก
- การสร้างเอกสาร
โครงสร้างโครงการ
โครงการ dbt:
my_project/
dbt_project.yml
models/
staging/
stg_orders.sql
marts/
fct_revenue.sql
tests/
seeds/
macros/ไฟล์โมเดล
มีเพียงคำสั่ง SELECT ในไฟล์ .sql:
-- models/staging/stg_orders.sql
{{ config(materialized='view') }}
SELECT
id,
user_id,
total,
created_at
FROM {{ source('raw', 'orders') }}ประเภทการสร้างผลลัพธ์
- view — dbt สร้าง VIEW อัปเดตได้รวดเร็ว แต่คิวรีช้าลง
- table — ตารางเต็มรูปแบบ สร้างใหม่ทุกครั้งที่เรียกใช้
- incremental — เพิ่มเฉพาะแถวใหม่
- ephemeral — CTE ที่แทรกเนื้อหาไว้โดยตรง ไม่มีออบเจ็กต์ในฐานข้อมูล
ฟังก์ชันอ้างอิงและการพึ่งพา
อ้างอิงโมเดลหนึ่งจากอีกโมเดลหนึ่ง:
-- models/marts/fct_revenue.sql
SELECT
date_trunc('day', created_at) AS day,
SUM(total) AS revenue
FROM {{ ref('stg_orders') }}
GROUP BY 1เรียกใช้ dbt
สร้างทั้งโครงการ:
dbt run # build all models
dbt run --select staging # subset
dbt run --select +fct_revenue # this model and upstream
dbt build # run + testแหล่งข้อมูล
แหล่งข้อมูลใช้บันทึกและอ้างอิงตารางดิบ:
# models/sources.yml
sources:
- name: raw
database: warehouse
tables:
- name: ordersโมเดลแบบเพิ่มข้อมูลต่อเนื่อง
สำหรับตารางข้อเท็จจริงขนาดใหญ่มาก:
{{ config(materialized='incremental', unique_key='id') }}
SELECT *
FROM {{ source('raw','orders') }}
{% if is_incremental() %}
WHERE created_at > (SELECT MAX(created_at) FROM {{ this }})
{% endif %}การสร้างแม่แบบด้วย Jinja
dbt คือ SQL + Jinja ดังนั้นคุณจึงวนซ้ำและสร้าง SQL แบบมีเงื่อนไขได้:
{% set tiers = ['free','pro','enterprise'] %}
SELECT user_id,
{% for t in tiers %}
COUNT(*) FILTER (WHERE tier = '{{ t }}') AS {{ t }}_count {% if not loop.last %},{% endif %}
{% endfor %}
FROM users GROUP BY user_idสแนปชอต
บันทึกมิติที่เปลี่ยนแปลงช้าโดยอัตโนมัติ:
{% snapshot user_snapshot %}
{{ config(
target_schema='snapshots',
unique_key='id',
strategy='timestamp',
updated_at='updated_at',
) }}
SELECT * FROM {{ source('raw','users') }}
{% endsnapshot %}เอกสาร
สร้างเอกสารที่เรียกดูได้โดยอัตโนมัติจากโมเดลและคำอธิบาย YAML:
dbt docs generate
dbt docs serve # opens browserสรุปทบทวน
dbt จัดการการแปลงข้อมูลในรูปโค้ด SQL
- โมเดล = SELECT ในไฟล์ .sql
- ฟังก์ชันอ้างอิงสร้าง DAG
- รูปแบบการสร้างผลลัพธ์: view / table / incremental / ephemeral
- การทดสอบและเอกสารเป็นองค์ประกอบหลัก
ตรวจสอบอย่างรวดเร็ว
{{ ref('stg_orders') }} ของ dbt ทำหน้าที่อะไร
คำถามที่พบบ่อย
บทเรียน “พื้นฐาน DBT (เครื่องมือสร้างข้อมูล)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐาน DBT (เครื่องมือสร้างข้อมูล)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน DBT (เครื่องมือสร้างข้อมูล)”
สร้างแบบจำลองข้อมูลคลังข้อมูลเป็นคำสั่ง SELECT ใน dbt พร้อมการอ้างอิง แหล่งข้อมูล และแบบจำลองแบบเพิ่มเฉพาะส่วน คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐาน DBT (เครื่องมือสร้างข้อมูล)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน DBT (เครื่องมือสร้างข้อมูล)
- SQLFluff และการตรวจรูปแบบโค้ด
- การทดสอบ SQL: การทดสอบ dbt, Great Expectations
- CI สำหรับการเปลี่ยนแปลงโครงสร้างข้อมูล (GitHub Actions)