Veri Analitiğinde Modernleşme: dbt Veri Oluşturma Aracı

Yusuf Gözübüyük
İstanbul Data Science Academy
4 min readApr 24, 2024

--

Günümüzde veri analitiği, karmaşıklığı ve hızlı değişen iş gereksinimlerini göz önünde bulundurarak sürekli evrim geçiriyor. Büyük veri setleri, farklı kaynaklardan gelen veri çeşitliliği ve değişen iş akışları, veri analistlerini ve mühendislerini zorlayıcı bir ortamda çalışmaya zorluyor. Geleneksel veri yapıları ve analitik yöntemler, bu hızlı değişime ayak uydurmakta zorlanırken, süreçler zaman alıcı ve karmaşık hale geliyor. Bu zorluklarla başa çıkmak ve veri analitiği süreçlerini modernleştirmek için tasarlanmış olan dbt (Data Build Tool), bu alanda dikkate değer bir çözüm sunuyor.

DBT Extract, Transform, Load (ETL) süreçlerin de Transform aşamasını hızlandırmak ve kolaylaştırmak için tasarlanmış bir veri analitiği aracıdır.

dbt bu süreçleri kullandığımız data warehouse’ı (BigQuery, Redshift, Snowflake, etc.) kullanarak yapar. dbt, SQL sorgularını ve Jinja şablonlarını kullanarak veri modelleri oluşturur ve yönetir.

Aslında basitce yazdığımız sql leri kullandığımız platformlarda çalıştırır ve sonuçları veri warehouse’ımıza yazar.

Peki bunu neden data warehouselar üzerinde yaparız ?

Bu işlem için python, spark gibi tooları kullanmadan sadece sql ile yapmamızın sebebi, moden data warehouseların bu işlemleri yapmaya uygun olmasıdır. Bu işlemleri yaparken veri warehouse’ımızın sağladığı performans, güvenlik, ölçeklenebilirlik gibi avantajlarından faydalanabiliriz.

dbt Nedir ve Nasıl Çalışır?

dbt, veri analistlerine ve mühendislerine veri setlerini hazırlama, işleme ve belirli analitik sorulara cevap bulma konusunda yazılım mühendisliğinin pratiklerini sunarak yardımcı olan bir araçtır. dbt’nin özellikleri arasında şunlar bulunur:

  1. Veri Modelleri ve İş Birliği: dbt, veri modelleri üzerinde iş birliği yapmayı sağlar. Analistler, modelleri select ifadeleri olarak yazabilir ve .sql olarak kaydedebilirler. Bu sayede, ekip içinde işbirliği yapmak ve modelleri kolayca güncellemek mümkün olur.
  2. Sürümlendirme ve Kontrol: dbt, geliştirme sürecinin kontrolü için sürümlendirmeyi sağlar. Proje, git/github VCS ile entegre edilebilir, bu da kod değişikliklerinin takibini ve geri alınmasını kolaylaştırır.
  3. Güvenli Dağıtım ve Test: dbt, sorguları güvenli bir şekilde canlı ortama dağıtmadan önce test etmeyi sağlar. Ayrıca, sorguları belgelemek için de kullanılabilir.

Yukarıda belirtilen özellikleri özetlemek gerekirse kod yazarken yaptığımız modüler yapıyı versiyonlamayı ve test etmeyi sağlayan bir araç diyebiliriz.

dbt’nin Yapısı ve İşlevleri

dbt projesi, projenin bağlamını ve verilerin dönüştürülme şeklini belirtir. Temel bileşenler şunlardır:

  • Models : dbt projesinde geliştiricilerin zamanlarının çoğunu geçirdiği yerdir. Modeller, select ifadeleri olarak yazılır ve .sql olarak kaydedilir.
  • Seeds : dbt projenizdeki CSV dosyalarıdır ve dbt, “dbt seed” komutunu kullanarak veri ambarınıza yükleyebilir.
  • Tests : dbt projenizdeki modelleriniz ve diğer kaynaklarınız hakkında yaptığınız iddialardır. dbt testini çalıştırdığınızda, projenizdeki her testin başarılı mı yoksa başarısız mı olduğunu söyler.
  • Macros : Birden çok kez yeniden kullanılabilen kod parçalarıdır.

dbt’nin Faydaları ve Etkisi

dbt, veri analisti ve mühendislerin işlerini kolaylaştırırken, aynı zamanda veri tabanlarının performansını artırır. Veri dönüşüm işlemlerini veri ambarının içinde gerçekleştirerek, işlemleri hızlandırır ve daha verimli hale getirir. Ayrıca, dbt’nin sağladığı programlama unsurları ve paket yöneticisi ile SQL’i bir araya getirerek, veri tabanları için üst düzey bir programlama ortamı oluşturur.

Örnek bir yapı:

dbt Projesi Yapısı

dbt projesi, veri analitiği süreçlerini düzenlemek ve yönetmek için önemli bir yapı sağlar. Bu yapı, genellikle belirli bir düzen içinde organize edilir ve farklı dosya ve klasörlerin rollerini içerir. Aşağıda, tipik bir dbt projesinin yapısı ve bileşenleri hakkında daha detaylı bir açıklama bulunmaktadır:

  1. dbt_project.yml: Bu dosya, dbt projesinin temel yapılandırma ayarlarını içerir. Proje adı, veri ambarı bağlantı bilgileri ve diğer önemli yapılandırma ayarları bu dosyada belirtilir.
  2. models/ (Modeller): Bu klasör, dbt projesinin ana işlem alanını oluşturur. Modeller, genellikle .sql uzantılı dosyalarda saklanır ve veri setlerini işlemek için SQL sorgularını içerir. Örneğin, müşteri boyut tablosunu oluşturan bir modelin SQL kodu bu klasörde bulunabilir.
my_dbt_project/
├── dbt_project.yml
├── models/
│ ├── customer_dim.sql
│ ├── sales_fact.sql
│ └── schema.yml
├── macros/
├── analysis/
├── seeds/
├── snapshots/
└── test/

customer_dim.sql

-- Müşteri boyut tablosu modeli
{{ config(materialized='table') }}

-- Müşteri boyut tablosunu oluşturma sorgusu
SELECT
customer_id,
first_name,
last_name,
email,
phone,
address,
city,
state,
country
FROM
{{ ref('source_customer_table') }}

sales_fact.sql

-- Satış faktör tablosu modeli
{{ config(materialized='table') }}

-- Satış faktör tablosunu oluşturma sorgusu
SELECT
sale_id,
customer_id,
product_id,
sale_date,
sale_amount
FROM
{{ ref('source_sales_table') }}

schema.yml

version: 2

models:
- name: customer_dim
description: Müşteri boyut tablosu
columns:
- name: customer_id
description: Müşteri kimlik numarası
tests:
- unique
- not_null
- name: first_name
description: Müşterinin adı
tests:
- not_null
- name: last_name
description: Müşterinin soyadı
tests:
- not_null
- name: email
description: Müşterinin e-posta adresi
tests:
- not_null
- email_format
- name: phone
description: Müşterinin telefon numarası
tests:
- phone_number_format
- name: address
description: Müşterinin adresi
tests:
- not_null
- name: city
description: Müşterinin şehri
tests:
- not_null
- name: state
description: Müşterinin eyaleti
tests:
- not_null
- name: country
description: Müşterinin ülkesi
tests:
- not_null

- name: sales_fact
description: Satış faktör tablosu
columns:
- name: sale_id
description: Satış kimlik numarası
tests:
- unique
- not_null
- name: customer_id
description: Müşteri kimlik numarası
tests:
- not_null
- name: product_id
description: Ürün kimlik numarası
tests:
- not_null
- name: sale_date
description: Satış tarihi
tests:
- not_null
- date_format
- name: sale_amount
description: Satış tutarı
tests:
- not_null
- numeric_format

Sonuç

dbt, veri analitiği süreçlerini modernleştiren ve veri ekiplerine daha etkili bir çalışma ortamı sunan önemli bir araçtır. Veri analistlerine ve mühendislerine, veri setlerini hazırlama, işleme ve analitik sorulara cevap bulma konusunda yazılım mühendisliği pratiklerini sunarak yardımcı olur. Bu sayede, veri analitiği süreçleri daha verimli hale gelir ve işletmelerin rekabet avantajını artırır.

--

--