Asosiy kontentga o‘tish
Innovialabs

dbt nima va u omborda ma’lumotlarni qanday o‘zgartiradi

Asoslar3 daq

Qisqacha

dbt — ma’lumotlarni to‘g‘ridan-to‘g‘ri omborda o‘zgartiradigan vosita: siz modellarni oddiy SELECT so‘rovlari sifatida yozasiz, dbt esa ularni to‘g‘ri tartibda quradi, tekshiradi va hujjatlashtiradi.

Qisqa javob

dbt (data build tool) ELT sxemasidagi T harfi uchun javob beradi: Extract, Load, Transform. Avval xom ma’lumotlar omborga o‘z holicha yuklanadi (CRM, ilova bazasi, to‘lov tizimlaridan), so‘ng dbt ularni hisobotlar uchun toza jadvallarga aylantiradi.

dbt ma’lumotlarni manbalardan olib kelmaydi va o‘zida saqlamaydi. U:

  • sizning SQL modellaringizni oladi — bitta SELECTdan iborat fayllar;
  • ularni omborda jadval yoki view sifatida quradi (PostgreSQL, BigQuery, Snowflake, ClickHouse va adapterlar orqali boshqalar);
  • modellar orasidagi bog‘liqliklardan qurish tartibini o‘zi aniqlaydi;
  • ma’lumotlar sifati bo‘yicha testlarni ishga tushiradi;
  • hujjatlar va ma’lumotlar kelib chiqishi grafini (lineage) yaratadi.

Aslida dbt analitik SQLga dasturlash amaliyotlarini olib kiradi: Git, code review, testlar, dev va prod muhitlari.

Modellar va ref()

Model — models/ papkasidagi .sql fayl. Fayl nomi jadval yoki view nomiga aylanadi. Jadval nomlarini qattiq yozish o‘rniga modellar bir-biriga ref() orqali murojaat qiladi:

-- models/marts/fct_orders.sql
select
    o.order_id,
    o.customer_id,
    o.created_at::date as order_date,
    sum(i.price * i.quantity) as order_total
from {{ ref('stg_orders') }} o
join {{ ref('stg_order_items') }} i on i.order_id = o.order_id
group by 1, 2, 3

ref() ikki vazifani bajaradi: joriy muhit uchun to‘g‘ri sxemani qo‘yadi va dbtga fct_orders ikkita staging modeliga bog‘liq ekanini bildiradi. Shu bog‘lanishlardan graf (DAG) tuziladi va dbt run modellarni kerakli tartibda bajaradi.

Tashqi vosita yuklagan xom jadvallar sources sifatida e’lon qilinadi va source('shop', 'orders') orqali chaqiriladi.

Qatlamlar: staging va marts

Odatiy loyiha tuzilmasi:

QatlamIchida nima borMisol
stagingHar bir xom jadvalga bitta model: ustunlarni qayta nomlash, turlarni keltirish, tozalashstg_orders, stg_payments
intermediate (ixtiyoriy)Oraliq birlashtirishlar va hisob-kitoblarint_orders_with_payments
martsBiznes uchun tayyor jadvallar: faktlar va o‘lchamlarfct_orders, dim_customers

Qoida oddiy: marts faqat staging yoki intermediate modellaridan o‘qiydi, xom jadvallardan to‘g‘ridan-to‘g‘ri emas. Shunda manba o‘zgarsa, o‘nlab hisobot emas, bitta staging modelini tuzatasiz.

Testlar va hujjatlar

Testlar modellar yonida YAML faylda yoziladi:

# models/staging/stg_orders.yml
version: 2
models:
  - name: stg_orders
    description: "Internet-do‘kon bazasidagi buyurtmalar, har buyurtmaga bitta qator"
    columns:
      - name: order_id
        tests: [unique, not_null]
      - name: status
        tests:
          - accepted_values:
              values: ['new', 'paid', 'shipped', 'cancelled']

O‘rnatilgan testlar: unique, not_null, accepted_values, relationships. O‘zingiznikini ham yozish mumkin — nol qator qaytarishi kerak bo‘lgan SQL so‘rov. dbt build buyrug‘i modellarni quradi va darhol tekshiradi.

dbt docs generate tavsiflar, ustunlar va lineage grafini hujjatlar saytiga yig‘adi. Har bir metrika qaysi manbalardan yig‘ilishi va jadval o‘zgarsa nima buzilishi ko‘rinib turadi.

Minimal loyiha

my_project/
  dbt_project.yml
  models/
    staging/
      sources.yml
      stg_orders.sql
      stg_orders.yml
    marts/
      fct_orders.sql

Omborga ulanish profiles.yml faylida beriladi. Ish sikli: modelni o‘zgartirish, dbt build --select fct_orders+ ni ishga tushirish (model va unga bog‘liq hamma narsa), natijani tekshirish, commit qilish.

Modellarni turlicha materializatsiya qilish mumkin: view, table, incremental (faqat yangi qatorlarni qo‘shish) va ephemeral (boshqa modellarga CTE sifatida qo‘yiladi).

Kichik jamoaga dbt qachon kerak

Kerak, agar:

  • sizda ombor bor va unga bir nechta manbadan muntazam ma’lumot yuklanadi;
  • hisobotlar SQL mantig‘i kattalashib ketgan va turli dashboardlar bitta metrikani turlicha hisoblaydi;
  • analitika ustida kamida ikki kishi ishlaydi va o‘zgarishlar tarixi kerak;
  • manbadagi o‘zgarishdan keyin hisobot «jimgina» buzilgan holatlar bo‘lgan.

Hali erta, agar:

  • ma’lumot bitta manbadan keladi, hisobotlar esa bir nechta;
  • analitika CRM yoki BI vositasining o‘rnatilgan hisobotlarida yashaydi va hammaga yetarli;
  • ombor yo‘q — avval ma’lumot yuklashni hal qilish kerak.

Ko‘p uchraydigan xatolar

  • Staging qatlamini o‘tkazib yuborib, marts modellarini to‘g‘ridan-to‘g‘ri xom jadvallar ustiga qurish.
  • Asosiy ustunlarda testlarsiz ishlash — aynan ular JOINdan keyingi dublikatlarni ushlaydi.
  • Birinchi kundan barcha modellarni table qilish: hajm kichik ekan, view arzonroq.
  • Biznes mantiqni bir vaqtda ham dbtda, ham BI vositasida saqlash.

Ko‘p beriladigan savollar

dbt Core — ochiq kodli CLI vosita, uni o‘z serveringizda yoki CIda bepul ishga tushirish mumkin. Veb-interfeys, rejalashtiruvchi va ishlab chiqish muhitiga ega bulutli xizmat ham bor, u obuna asosida pullik.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.