[VELODB.IO]
DATANOMIX.PRO // INTEGRATSIYALAR // DBT + DORIS

dbt + Apache Doris: SQL transformatsiyalar lakehouse

dbt-doris adapter oʼrnatish, materializations, incremental models, testlar, CI/CD. Toʼliq qoʼllanma.

Tayyorlagan:
Datanomix.pro
Oʼqish vaqti:
~12 min

1. Analitik stekda dbt nima uchun kerak

dbt (data build tool) — modern data stack dagi transformatsiyalarning de-fakto standarti. SQL-first yondashuvi: analitiklar SELECT yozadi, dbt DDL, bogʼliqliklar, testlar va hujjatlarni boshqaradi.

Muammo: dbt odatda Snowflake, BigQuery, Redshift bilan bogʼlanadi. Apache Doris bilan rasmiy open-source adapter orqali toʼliq ishlashini kam odam biladi.

dbt-doris — dbt Core 1.7+ uchun adapter, MySQL protocol orqali ulanish (9030 port). Bu nima beradi:

  • SQL-transformatsiyalarni Git da versiyalash.
  • Analitik modellar uchun CI/CD — har bir PR ni testlash.
  • Data lineage: modellar orasidagi bogʼliqliklarning avtomatik grafi.
  • Documentation-as-code: modellar va ustunlarning tavsifi SQL yonida.
  • Har bir ishga tushirishda maʼlumotlar sifatining avtomatik testlari.

2. Arxitektura: dbt + Doris

dbt + Apache Doris tipik arxitekturasi toʼrt qatlamdan iborat:

SQL Compilationdbt Core / dbt Cloud SQL-modellarni kompilyatsiya qiladi: ref() va source() hal qiladi, target SQL generatsiya qiladi, DAG orqali bogʼliqliklarni boshqaradi.
TransportMySQL protocol (9030 port). Standart MySQL connector, har qanday klient bilan mos. Maxsus SDK talab qilinmaydi.
Materializationstable, view, incremental, ephemeral. Incremental modellar UPSERT-semantikasi uchun Doris Unique Key jadvallarini ishlatadi.
Data ServingApache Doris SQL bajaradi, jadvallarni boshqaradi, tashqi manbalarga kirish uchun Multi-Catalog qoʼllaydi.

Asosiy afzallik: dbt + Doris Spark, Hadoop yoki qoʼshimcha hisoblash dvigatellari talab qilmaydi. Butun pipeline — boshidan oxirigacha SQL.

3. Quick Start: oʼrnatish va sozlash

Adapter ni pip orqali oʼrnatish:

// DBT-DORIS OʼRNATISH pip install dbt-doris

profiles.yml dagi ulanish konfiguratsiyasi:

// PROFILES.YML — DORIS GA ULANISH my_doris_project: target: dev outputs: dev: type: doris host: 127.0.0.1 port: 9030 username: root password: "" database: analytics schema: dbt_models

MySQL protocol orqali ulanish (9030 port). Doris Multi-Catalog orqali bir nechta baza qoʼllash. Ulanishni tekshirish:

// ULANISHNI TEKSHIRISH dbt debug

4. Materializations va Doris maʼlumotlar modellari

dbt materializations Doris obyektlariga qanday moslanadi:

dbt MaterializationDoris ImplementationQachon ishlatish kerak
tableCREATE TABLE AS SELECTToʼliq qayta qurish, kichik jadvallar
viewCREATE VIEWMantiqiy qatlamlar, materializatsiyasiz
incrementalINSERT INTO (Unique Key + UPSERT)Katta jadvallar, kunlik/soatlik inkrementlar
ephemeralCTE (Common Table Expression)Oraliq hisob-kitoblar

Doris Unique Key jadvallari uchun incremental strategy:

// INCREMENTAL MODEL: DORIS UNIQUE KEY {{ config( materialized='incremental', unique_key='order_id', incremental_strategy='append' ) }} SELECT order_id, customer_id, order_total, updated_at FROM {{ source('raw', 'orders') }} {% if is_incremental() %} WHERE updated_at > (SELECT MAX(updated_at) FROM {{ this }}) {% endif %}

5. Testlar va maʼlumotlar sifati

dbt deklarativ testlar orqali maʼlumotlar sifatini taʼminlaydi:

  • Schema tests: unique, not_null, accepted_values, relationships — oʼrnatilgan tekshiruvlar.
  • Custom tests: biznes-mantiq uchun SQL-based assertions.
  • dbt-expectations: kengaytirilgan testlar paketi (taqsimotlar, formatlar, anomaliyalar).
  • Freshness checks: source-maʼlumotlarning dolzarbligini monitoring.
// SCHEMA TESTS: YAML models: - name: dim_customers columns: - name: customer_id tests: - unique - not_null - name: email tests: - unique

dbt test barcha testlarni ishga tushiradi va xatolar haqida xabar beradi. CI/CD bilan integratsiya: har bir PR ga testlar.

6. CI/CD va production workflow

dbt + Doris uchun production best practices:

  1. Git-based workflow: har bir model — repozitoriydagi SQL fayl. PR orqali review.
  2. dbt build: modellar + testlarni bogʼliqlik tartibida ishga tushirish (DAG).
  3. Slim CI: dbt build --select state:modified+ — faqat oʼzgartirilgan modellarni yigʼish.
  4. Manifest comparison: production-manifest bilan solishtirish, faqat delta build.
  5. Deployment: dbt Cloud scheduled jobs yoki Airflow + dbt (BashOperator).
  6. Lineage: dbt docs generate → barcha modellar va bogʼliqliklarning vizual DAG i.
  7. Documentation: YAML dagi model tavsiflari → hujjatlarning avto-generatsiyasi.

7. Loyiha misoli: buyurtmalar tahlili

Uch qatlamli arxitekturaning toʼliq misoli:

  • Source: raw.orders, raw.customers — Flink CDC yoki Stream Load orqali yuklangan.
  • Staging: stg_orders, stg_customers — tozalash, tipizatsiya, qayta nomlash.
  • Mart: mart_customer_orders — agregatsiya, BI uchun tayyor.
// MART MODEL: BUYURTMALAR TAHLILI -- models/marts/mart_customer_orders.sql {{ config(materialized='table') }} WITH orders AS ( SELECT * FROM {{ ref('stg_orders') }} ), customers AS ( SELECT * FROM {{ ref('stg_customers') }} ) SELECT c.customer_id, c.customer_name, c.segment, COUNT(o.order_id) AS total_orders, SUM(o.order_total) AS lifetime_value, MAX(o.order_date) AS last_order_date FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id GROUP BY c.customer_id, c.customer_name, c.segment

Bu model bogʼliqliklar grafini avtomatik quradi: avval stg-modellar, keyin mart bajariladi. dbt ref() orqali tartibni boshqaradi.

Manbalar

FAQ

dbt ning qaysi versiyalarini adapter qoʼllaydi?

dbt-doris dbt Core 1.7+ va Apache Doris 2.0+ qoʼllaydi. Adapter pip install dbt-doris orqali mavjud.

dbt Cloud ishlatish mumkinmi?

Ha, dbt Cloud custom adapters qoʼllaydi. MySQL protocol orqali ulanish, 9030 port.

Incremental Unique Key bilan qanday ishlaydi?

dbt SELECT dan olingan maʼlumotlar bilan INSERT INTO bajaradi. Doris Unique Key jadvallari mavjud qatorlarni primary key boʼyicha avtomatik yangilaydi (UPSERT semantikasi).

Credentials ni qayerda saqlash kerak?

profiles.yml da (lokal) yoki CI/CD uchun muhit oʼzgaruvchilari orqali (DBT_DORIS_HOST, DBT_DORIS_PASSWORD).

dbt + Doris joriy qilishga tayyormisiz?

./ARXITEKTURA_SOʼRASH.sh
© 2026 DATANOMIX.PRO — MARKAZIY OSIYODA VELODB EKSKLUZIV HAMKORI
VeloDB — Real-Time Analytics /BOSH SAHIFA