[VELODB.IO]
DATANOMIX.PRO // ИНТЕГРАЦИЯЛАР // DBT + DORIS

dbt + Apache Doris: SQL-трансформациялар lakehouse

dbt-doris adapter орнату, materializations, incremental models, тесттер, CI/CD. Толық нұсқаулық.

Дайындаған:
Datanomix.pro
Оқу уақыты:
~12 мин

1. Аналитикалық стекте dbt не үшін керек

dbt (data build tool) — modern data stack-тегі трансформациялардың де-факто стандарты. SQL-first тәсілі: аналитиктер SELECT жазады, dbt DDL, тәуелділіктер, тесттер мен құжаттаманы басқарады.

Мәселе: dbt әдетте Snowflake, BigQuery, Redshift-пен байланыстырылады. Apache Doris-пен ресми open-source adapter арқылы толық жұмыс істейтінін аз адам біледі.

dbt-doris — dbt Core 1.7+ үшін adapter, MySQL protocol арқылы қосылу (9030 порт). Бұл не береді:

  • SQL-трансформацияларды Git-те нұсқалау.
  • Аналитикалық модельдер үшін CI/CD — әрбір PR-ды тестілеу.
  • Data lineage: модельдер арасындағы тәуелділіктердің автоматты графы.
  • Documentation-as-code: модельдер мен колонкалардың сипаттамалары SQL жанында.
  • Әрбір іске қосуда деректер сапасының автоматты тесттері.

2. Архитектура: dbt + Doris

dbt + Apache Doris типтік архитектурасы төрт деңгейден тұрады:

SQL Compilationdbt Core / dbt Cloud SQL-модельдерді компиляциялайды: ref() және source() шешеді, target SQL генерациялайды, DAG арқылы тәуелділіктерді басқарады.
TransportMySQL protocol (9030 порт). Стандартты MySQL connector, кез келген клиентпен үйлесімді. Арнайы SDK қажет емес.
Materializationstable, view, incremental, ephemeral. Incremental модельдер UPSERT-семантикасы үшін Doris Unique Key кестелерін пайдаланады.
Data ServingApache Doris SQL орындайды, кестелерді басқарады, сыртқы дереккөздерге қол жеткізу үшін Multi-Catalog қолдайды.

Негізгі артықшылық: dbt + Doris Spark, Hadoop немесе қосымша есептеу қозғалтқыштарын талап етпейді. Бүкіл pipeline — басынан аяғына дейін SQL.

3. Quick Start: орнату және конфигурация

Adapter-ді pip арқылы орнату:

// DBT-DORIS ОРНАТУ pip install dbt-doris

profiles.yml-дегі қосылу конфигурациясы:

// PROFILES.YML — DORIS-КЕ ҚОСЫЛУ 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 арқылы қосылу (9030 порт). Doris Multi-Catalog арқылы бірнеше база қолдау. Қосылуды тексеру:

// ҚОСЫЛУДЫ ТЕКСЕРУ dbt debug

4. Materializations және Doris деректер модельдері

dbt materializations Doris объектілеріне қалай маппталады:

dbt MaterializationDoris ImplementationҚашан қолдану керек
tableCREATE TABLE AS SELECTТолық қайта құру, кішкентай кестелер
viewCREATE VIEWЛогикалық деңгейлер, материализациясыз
incrementalINSERT INTO (Unique Key + UPSERT)Үлкен кестелер, күнделікті/сағаттық инкременттер
ephemeralCTE (Common Table Expression)Аралық есептеулер

Doris Unique Key кестелері үшін 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. Тесттер және деректер сапасы

dbt декларативті тесттер арқылы деректер сапасын қамтамасыз етеді:

  • Schema tests: unique, not_null, accepted_values, relationships — кіріктірілген тексерулер.
  • Custom tests: бизнес-логика үшін SQL-based assertions.
  • dbt-expectations: кеңейтілген тесттер пакеті (таралулар, форматтар, аномалиялар).
  • Freshness checks: source-деректердің өзектілігін мониторинг.
// SCHEMA TESTS: YAML models: - name: dim_customers columns: - name: customer_id tests: - unique - not_null - name: email tests: - unique

dbt test барлық тесттерді іске қосады және қателер туралы хабарлайды. CI/CD-мен интеграция: әрбір PR-ға тесттер.

6. CI/CD және production workflow

dbt + Doris үшін production best practices:

  1. Git-based workflow: әрбір модель — репозиторийдегі SQL файл. PR арқылы review.
  2. dbt build: модельдер + тесттерді тәуелділік ретімен іске қосу (DAG).
  3. Slim CI: dbt build --select state:modified+ — тек өзгертілген модельдерді жинау.
  4. Manifest comparison: production-манифестпен салыстыру, тек дельта билд.
  5. Deployment: dbt Cloud scheduled jobs немесе Airflow + dbt (BashOperator).
  6. Lineage: dbt docs generate → барлық модельдер мен тәуелділіктердің визуалды DAG-ы.
  7. Documentation: YAML-дағы модель сипаттамалары → құжаттаманың авто-генерациясы.

7. Жоба мысалы: тапсырыстар аналитикасы

Үш деңгейлі архитектураның толық мысалы:

  • Source: raw.orders, raw.customers — Flink CDC немесе Stream Load арқылы жүктелген.
  • Staging: stg_orders, stg_customers — тазалау, типизация, атауды өзгерту.
  • Mart: mart_customer_orders — агрегация, BI үшін дайын.
// MART MODEL: ТАПСЫРЫСТАР АНАЛИТИКАСЫ -- 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

Бұл модель тәуелділіктер графын автоматты құрады: алдымен stg-модельдер, содан кейін mart орындалады. dbt ref() арқылы ретті басқарады.

Дереккөздер

FAQ

dbt-нің қандай нұсқаларын adapter қолдайды?

dbt-doris dbt Core 1.7+ және Apache Doris 2.0+ қолдайды. Adapter pip install dbt-doris арқылы қолжетімді.

dbt Cloud қолдануға бола ма?

Иә, dbt Cloud custom adapters қолдайды. MySQL protocol арқылы қосылу, 9030 порт.

Incremental Unique Key-мен қалай жұмыс істейді?

dbt SELECT-тен алынған деректермен INSERT INTO орындайды. Doris Unique Key кестелері бар жолдарды primary key бойынша автоматты жаңартады (UPSERT семантикасы).

Credentials-ті қайда сақтау керек?

profiles.yml-де (жергілікті) немесе CI/CD үшін ортаның айнымалылары арқылы (DBT_DORIS_HOST, DBT_DORIS_PASSWORD).

dbt + Doris енгізуге дайынсыз ба?

./АРХИТЕКТУРА_СҰРАУ.sh
© 2026 DATANOMIX.PRO — VELODB-НЫҢ ОРТАЛЫҚ АЗИЯДА ЭКСКЛЮЗИВТІК СЕРІКТЕСІ
VeloDB — Real-Time Analytics /БАСТЫ