dbt (data build tool), modern veri yığını içinde verileri dönüştürmek, test etmek ve belgelendirmek için veri analistleri ve mühendisleri tarafından kullanılan güçlü bir araçtır.
Modelleme yetenekleriyle geniş çapta tanınsa da, bir diğer kritik özellik de veri ambarınızdaki yavaş değişen boyutları (SCD) yakalamanızı sağlayan dbt snapshot’tır.
Bu eğitim, dbt snapshot’larına, kullanım senaryolarına ve uygulamasına derinlemesine bir açıklama sunacaktır. Şunları yapacağım:
dbt snapshot’ların ne olduğunu tanımlamak.
Snapshot’ların ne zaman ve neden kullanılacağını açıklamak.
Bir dbt snapshot, özellikle geçmiş değişikliklerin varsayılan olarak tutulmadığı tablolarda, kayıtlar üzerindeki değişiklikleri zaman içinde izlemek için kullanılan bir mekanizmadır. Snapshot’lar başlıca Yavaş Değişen Boyutlar (SCD) Tip 2 uygulamak için kullanılır. İzlenen sütunlar değiştiğinde satırların sürümlerini saklarlar.
Kullanım örnekleri şunları içerir:
Müşteri profillerindeki değişiklikleri zaman içinde izlemek.
Operasyonel verilerdeki durum değişikliklerini izlemek.
Doğru tarihsel raporlama için boyut özniteliklerinin evrimini kaydetmek.
Neden dbt Snapshot kullanmalısınız? Faydalar ve Kullanım Alanları
dbt snapshot’lar, veri değişikliklerinin zaman içindeki bir kaydı gibi çalıştıkları için değerlidir; bu da tarihsel analiz ve uyumluluk raporlamasını mümkün kılar.
Faydalar
Snapshot kullanmanın size sağlayacağı bazı faydalar şunlardır:
Trend analizi: Müşteri davranışı, öznitelikleri veya durumlarının nasıl evrildiğini anlayın.
Denetim ve uyumluluk: Denetçilere veya düzenleyicilere tarihsel veri durumlarını gösterin.
Veri hattı hata ayıklama: Beklenmedik bir zamanda bir kaydın ne zaman değiştiğini tespit ederek sorunların izini sürün.
Yaygın Kullanım Alanları
Snapshot’lar bazı özel durumlarda faydalı olabilir, örneğin:
Snapshot’lar, dbt ekosistemiyle sorunsuz entegre olur; yapılandırmasını ve çalıştırma yönetimini kullanarak tarihsel tabloları verimli şekilde oluşturur.
Örnek olarak veride kullanılan model türlerine bakalım.
Veri için iki model kullanılır:
Standart modeller: Mevcut durum tablolarını oluşturmak için veriyi dönüştürür.
Snapshot modelleri: Tarihsel değişiklikleri izlemek için sürümlü tablolar oluşturur.
Bu iki model amaç, depolama yöntemleri ve uygulamalar açısından farklıdır.
İşte farklılıklarının bir özeti:
Özellik
Standart Modeller
Snapshot’lar
Amaç
Mevcut durum dönüşümleri
Tarihsel izleme
Depolama
Mevcut veriye sahip tablo veya görünüm
Yalnızca eklemeli geçmiş tablosu
En Uygun
Olgu/boyut modelleri
Yavaş değişen boyutlar
dbt Snapshot’lar Nasıl Çalışır
Snapshot’lar, tüm değişikliklerin sistematik olarak yakalanmasını sağlayan yapılandırılmış bir iş akışını genellikle şu adımlarla izler:
Yapılandırma: Snapshot stratejisini, benzersiz anahtarları ve değişiklik algılama sütunlarını tanımlayın.
Yürütme: Mevcut verileri var olan snapshot’larla karşılaştırmak için dbt snapshot çalıştırın.
Depolama: dbt, tespit edilen değişiklikler için yeni kayıtlar ekler ve geçerlilik zaman damgalarını günceller.
Peki değişiklikler dbt’de nasıl izlenir?
Tüm değişiklikler, çıktı Snapshot tablosunda kaydedilir.
Bir değişiklik algılanırsa, dbt önceki sürüm için dbt_valid_to alanını mevcut zaman damgasına günceller ve dbt_valid_from alanı mevcut zaman damgası olan yeni bir satır ekler.
dbt’de Snapshot Stratejileri
Snapshot’lar değişiklikleri algılamak için iki temel strateji kullanır.
1. Zaman damgası (timestamp) stratejisi
Tanım: Değişiklikleri algılamak için bir zaman damgası alanını kullanır.
Ne zaman kullanılır: Kaynak tabloda güvenilir updated_at zaman damgaları olduğunda.
2. Kontrol (check) stratejisi
Tanım: Belirtilen sütunları doğrudan karşılaştırır.
Ne zaman kullanılır: Kaynak tabloda güvenilir zaman damgaları yoktur ancak öznitelik değişikliklerinin izlenmesi gerekir.
Strateji
Algılama Yöntemi
En Uygun
Timestamp
Güncellenen zaman damgası sütunu
Güvenilir son-değiştirilme zaman damgaları olan tablolar
Check
Sütunların doğrudan karşılaştırılması
Zaman damgası sütunları olmayan tablolar
Kalıcı Silmeler (Hard Deletes)
Silme gibi veri değişiklikleri de izlenebilir, ancak varsayılan olarak değil. Yine de bu tür kalıcı silme değişikliklerini izlemek için bunu değiştirmenin bir yolu vardır.
Sorun: Snapshot’lar varsayılan olarak silinen satırları izlemez.
Çözüm: Silinen satırları bir dbt_valid_to değeriyle işaretlemek için invalidate_hard_deletes=True ayarlayın ve son durumlarını koruyun.
İşte kalıcı silmeleri hesaba katarak bir kontrol stratejisinin uygulanmasına bir örnek:
Artık dbt Snapshot’ların nasıl çalıştığını bildiğimize göre, bunları nasıl uygulayacağımıza bakalım
1. Snapshot eğitimi için örnek veri kümesi
Snapshot pratiği yapmak için, gerçek dünyadaki bir üyelik sistemini taklit eden örnek bir customers tablosu oluşturacağız. Bu, yaygın snapshot stratejilerini test etmek için somut veriler sağlar.
import csv
from datetime import datetime
# Define the data
customers_data =[["customer_id","name","tier","updated_at"],# header row[1,"Alice Tan","Silver","2025-07-01 10:00:00"],[2,"Bob Lee","Gold","2025-07-01 10:00:00"],[3,"Cheryl Lim","Silver","2025-07-01 10:00:00"]]# Write data to customers.csvwithopen("customers.csv", mode="w", newline="", encoding="utf-8")asfile:
writer = csv.writer(file)
writer.writerows(customers_data)Altyapı:
2. dbt projenizi kurma
Snapshot’ları uygulamadan önce, dbt projenizi doğru bir şekilde kurmak esastır. Bu, ortamınızın modelleri, snapshot’ları, testleri ve dokümantasyonu yapılandırılmış ve ölçeklenebilir bir şekilde yönetmek için yapılandırılmasını sağlar.
Bu komutta, tablo mevcut değilse dbt snapshot tablosunu oluşturur. Ayrıca tespit edilen değişiklikler için yeni satırlar ekler.
Komutun çıktısı şöyle olmalıdır:
5. Snapshot Tablolarını Kontrol Etme
Artık snapshot’ınızı gerçekleştirdiğinize göre, proje dosyası dizininizde yeni bir snapshot.db dosyası oluşturulmuş olmalıdır.
Bu dosyanın nasıl göründüğünü görüntülemek için VSCode’da açtım:
Gördüğünüz gibi, dbt_updated_at gibi ek sütunlar içeriyor. Bunlar, verilerde değişiklik yapılıp yapılmadığını ve ne zaman yapıldığını belirlemede kritik öneme sahiptir.
dbt üzerine daha fazla uygulamalı rehber için, dbt ile Semantik Katman rehberimize göz atın.
Örnek: dbt Snapshot’larla Veri Değişikliklerini İzleme
Snapshot’lar, bir tablo içindeki herhangi bir öznitelikteki değişikliklerin tam bir denetim izini ekiplerin zaman içinde yakalamasını sağlar; bu da onları uyumluluk, hata ayıklama ve analitik için güçlü kılar.
İlgili alanlara sahip örnek bir customers tablosu oluşturun. Buna, değişikliklerin ne zaman gerçekleştiğini izlemek için müşteri kimliği, ad, e-posta ve updated_at zaman damgası dahildir.
Verilere yapılan farkları ve değişiklikleri görüntülemek için snapshot tablosunu sorgulamanız gerekir. Tablo, ilgili geçerlilik aralıklarıyla birlikte e-posta adresinin her iki sürümünü de göstermelidir:
SELECT customer_id, email, dbt_valid_from, dbt_valid_to
FROM snapshots.customers_email_snapshot
ORDERBY customer_id, dbt_valid_from;Altyapı:
Bu süreç, GDPR denetimleri, iletişim geçmişi takibi veya müşteri destek analitiği için kritik olan e-posta güncellemeleri için tam bir değişiklik geçmişini korumanızı sağlar.
Gelişmiş Yapılandırma ve Yönetim
Etkili yapılandırma yönetimi, ekiplerin snapshot uygulamalarını projeler ve ortamlar arasında sorunsuz bir şekilde ölçeklendirmesini sağlar.
1. Proje düzeyi ve kaynak düzeyi yapılandırma
Proje düzeyi yapılandırma: Tüm snapshot’lara uygulanacak hedef şema veya gerçekleştirmeler gibi varsayılan snapshot yapılandırmalarını ayarlamak için dbt_project.yml kullanın.
Kaynak düzeyi yapılandırma: Belirli gereksinimler için bireysel snapshot SQL dosyaları içinde ayarları geçersiz kılarak esneklik sağlayın.
2. Meta veri alanlarını özelleştirme
Varsayılan olarak, dbt dbt_valid_from ve dbt_valid_to alanlarını oluşturur. Ekip standartlarınız BI veya veri yönetişim araçlarında farklı adlandırma gerektiriyorsa, bunları valid_from ve valid_to yapılandırma seçeneklerini kullanarak yeniden adlandırabilirsiniz.
3. Eski Snapshot yapılandırmalarını taşımak
Geçişler, doğru yönetilmezse bazı tutarsızlıklara neden olabilir. Snapshot yapılandırmalarınızı taşırken dikkat etmeniz gereken bazı alanlar şunlardır:
Kullanımdan kaldırılmış yapılandırma blok tarzlarını kullanan eski snapshot tanımlarını belirleyin.
Modern dbt sürümleri kullanılıyorsa tutarlılık için YAML tabanlı yapılandırmalara yeniden düzenleyin.
Doğruluğu doğrulayın:
Snapshot’ları test ortamlarında çalıştırın.
Eski snapshot’ları devreden çıkarmadan önce çıktıları karşılaştırın.
Devreden çıkarma: Eski snapshot dosyalarını kaldırın ve dokümantasyonu buna göre güncelleyin.
4. Diğer araçlarla entegrasyon
Veri değişiklikleri, dbt snapshot’larıyla birlikte eşgüdüm içinde izlenebilir.
Örneğin:
BI araçları (örn. Power BI, Tableau): Zaman içinde öznitelik değişimlerini gösteren zamansal görselleştirmeler oluşturun.
Gözlemlenebilirlik platformları (örn. Monte Carlo, Datafold): Veri tazeliğini ve tarihsel bütünlüğü izleyin.
Veri katalogları (örn,. Alation, Collibra): Uyumluluk için belgelendirilmiş soyağacı yapıtları olarak snapshot geçmiş tablolarını dahil edin.
Üretim Ortamında Uygulama için En İyi Uygulamalar
Üretimde dbt snapshot’ları uygulamak, performans, sürdürülebilirlik ve iş değeri sağlamak için dikkatli bir tasarım gerektirir.
Şunlara uymak en iyisidir:
1. En uygun kullanım alanları ve tablo seçimi
Müşteri profilleri, ürün ana verisi ve tedarikçi sözleşmeleri gibi yavaş değişen özniteliklere sahip boyut tablolarını önceliklendirin.
Hızlı depolama artışı endişeleri olmadıkça, yüksek frekanslı ekleme ve güncellemelere sahip işlem (transactional) tablolarından (örn. sipariş kalemleri) kaçının.
2. Performans optimizasyon teknikleri
Üretimde, ürününüzü etkilemeden veri değişikliklerinin verimli şekilde izlenebilmesi için verinizi optimize etmek istersiniz.
İşte bazı ipuçları:
İndeksleme: Daha hızlı sorgular için unique_key ve geçerlilik sütunlarına indeks ekleyin.
Bölümlendirme: Tarama performansını optimize etmek için snapshot tablolarını tarihe göre bölümleyin.
Kümelendirme (ambar özelinde): Filtreleme sorgu hızlarını artırmak için (örn. BigQuery’de) yüksek kardinaliteli alanlar üzerinde kümelendirme anahtarları kullanın.
3. Bakım ve izleme uygulamaları
Zamanlama: Bilgi işlem maliyeti etkilerini en aza indirmek için snapshot’ları yoğun olmayan saatlerde çalıştırın.
İzleme: dbt Cloud veya orkestrasyon aracınızda snapshot hataları için uyarılar ayarlayın.
Veri tazeliği kontrolleri: Snapshot veri tazeliğini doğrulamak için dbt testleri veya gözlemlenebilirlik araçları kullanın.
Depolama analizi: İş izin veriyorsa snapshot tablo boyutlarını periyodik olarak gözden geçirin ve tarihsel verileri budayın.
4. Yaygın tuzaklar
Benzersiz olmayan bir unique_key kullanmak, yanlış satır sürümlemeye yol açar. Dağıtımdan önce her zaman benzersizlik mantığını test edin.
Snapshot şişmesi ayrıca gereksiz tarihsel değişiklikler saklandığında (örn. sık zaman damgası güncellemesi olan sütunlar) depolama maliyetlerinin hızla artmasına neden olabilir.
Yaygın Zorluklar ve Çözümler
dbt’de Snapshot kullanmak bazı özel teknik zorluklarla gelebilir:
1. Benzersiz anahtar çakışmaları
Sorun: Zayıf tanımlanmış benzersiz anahtarlar nedeniyle snapshot’ta yinelenen satırlar.
Çözüm:
Snapshot dağıtımından önce dbt testleriyle benzersizliği doğrulayın.
Gerektiğinde bileşik benzersizlik sağlamak için birden fazla alanı birleştirin.
2. Zamansal sorgu performansı
Sorun: Tarihsel verileri analiz ederken yavaş sorgular.
Çözüm:
Depo bölümleme ve kümelendirmeyi etkili şekilde kullanın.
Taranan veri hacmini azaltmak için sorguları her zaman dbt_valid_from veya tarih aralıklarıyla filtreleyin.
dbt debug kullanarak bağlantı ve yapılandırmayı doğrulayın.
Dağıtımdan önce hataları yakalamak için dbt’de CI testleri uygulayın.
Ayrıntılı hata mesajları için dbt çalışma günlüklerini inceleyin.
Sonuç
dbt snapshot’lar, analitik ekiplerinin asgari mühendislik yüküyle sağlam tarihsel veri kümeleri oluşturmasını sağlayarak uyumluluk analitiğini mümkün kılar. dbt hakkında daha fazla bilgi edinmek isterseniz, dbt’ye Giriş kursumuza göz atın. Okumalar ve daha fazla rehber için dbt-utils Paketine Giriş ve dbt Eğitimi içeriklerimize göz atın.
dbt Snapshot SSS
Farklı veri stratejileri için dbt snapshot’larını nasıl yapılandırırım?⌄
Farklı veri stratejileri için dbt snapshot’ları yapılandırmak üzere, snapshot yapılandırmanızda timestamp ve check stratejileri arasında seçim yaparsınız. Timestamp stratejisi için strategy='timestamp' belirtin ve herhangi bir değişiklikte güvenilir şekilde güncellenen bir updated_at sütunu sağlayın. Check stratejisi için strategy='check' kullanın ve değişiklikleri izlemek üzere check_cols içinde izlenecek sütunları tanımlayın.
dbt snapshot’larını zamanlamanın en iyi uygulamaları nelerdir?⌄
Snapshot’ları yoğun olmayan saatlerde zamanlayın, sıklıklarını veri değişim oranlarıyla hizalayın, Airflow veya dbt Cloud gibi orkestratörler kullanın, ağır dönüşümlerden ayrı çalıştırın ve hatalar için düzenli olarak izleyin.
dbt snapshot’larda meta veri alanlarını nasıl özelleştirebilirim?⌄
dbt_valid_from ve dbt_valid_to gibi varsayılan meta veri alanlarını snapshot yapılandırmasında yeniden adlandırabilir ve YAML’deki meta yapılandırmasıyla veri standartlarınıza uyacak özel meta veriler ekleyebilirsiniz.
dbt snapshot’larda timestamp ve check stratejileri arasındaki farklar nelerdir?⌄
Timestamp, herhangi bir değişikliği algılamak için bir updated_at sütunu kullanırken; check, belirli sütunlardaki farklılıkları karşılaştırır. Timestamp daha basitken, güvenilir bir zaman damgası olmadığında check daha fazla kontrol sağlar.
dbt snapshot’larda silinen kayıtları nasıl ele alırım?⌄
invalidate_hard_deletes=True kullanın; böylece dbt, snapshot geçmişinizde silmeleri etkili şekilde yakalayarak eksik kayıtları geçerlilik dönemlerinde bir bitiş tarihiyle işaretler.
Ben Austin, sağlık sektöründe veri bilimci ve veri analisti olarak yıllara dayanan deneyime sahip bir blogger ve teknoloji yazarıyım. Biyoloji geçmişiyle başladığım teknoloji yolculuğumda, şimdi teknoloji blogum aracılığıyla başkalarının da aynı geçişi yapmasına yardımcı oluyorum. Teknolojiye olan tutkum, onlarca SaaS şirketine yazılı katkılar sunmama, başkalarına ilham vermeme ve deneyimlerimi paylaşmama vesile oldu.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Veri analistleri, veri mühendisleri ve analitik mühendisleri için tasarlanmış uygulamalı bir kurs olan dbt Fundamentals ile güvenilir, ölçeklenebilir veri işlem hatları oluşturun.
dbt (data build tool), modern veri yığını içinde verileri dönüştürmek, test etmek ve belgelendirmek için veri analistleri ve mühendisleri tarafından kullanılan güçlü bir araçtır.
Modelleme yetenekleriyle geniş çapta tanınsa da, bir diğer kritik özellik de veri ambarınızdaki yavaş değişen boyutları (SCD) yakalamanızı sağlayan dbt snapshot’tır.
Bu eğitim, dbt snapshot’larına, kullanım senaryolarına ve uygulamasına derinlemesine bir açıklama sunacaktır. Şunları yapacağım:
dbt hakkında daha fazla bilgi edinmek için mutlaka şu rehberimize göz atın: dbt nedir? Veri Mühendisleri için Uygulamalı Bir Giriş ve dbt’ye Giriş kursumuz.
dbt Snapshot’lar nedir?
Bir dbt snapshot, özellikle geçmiş değişikliklerin varsayılan olarak tutulmadığı tablolarda, kayıtlar üzerindeki değişiklikleri zaman içinde izlemek için kullanılan bir mekanizmadır. Snapshot’lar başlıca Yavaş Değişen Boyutlar (SCD) Tip 2 uygulamak için kullanılır. İzlenen sütunlar değiştiğinde satırların sürümlerini saklarlar.
Kullanım örnekleri şunları içerir:
Neden dbt Snapshot kullanmalısınız? Faydalar ve Kullanım Alanları
dbt snapshot’lar, veri değişikliklerinin zaman içindeki bir kaydı gibi çalıştıkları için değerlidir; bu da tarihsel analiz ve uyumluluk raporlamasını mümkün kılar.
Faydalar
Snapshot kullanmanın size sağlayacağı bazı faydalar şunlardır:
Yaygın Kullanım Alanları
Snapshot’lar bazı özel durumlarda faydalı olabilir, örneğin:
Mimari Temeller
Snapshot’lar, dbt ekosistemiyle sorunsuz entegre olur; yapılandırmasını ve çalıştırma yönetimini kullanarak tarihsel tabloları verimli şekilde oluşturur.
Örnek olarak veride kullanılan model türlerine bakalım.
Veri için iki model kullanılır:
Bu iki model amaç, depolama yöntemleri ve uygulamalar açısından farklıdır.
İşte farklılıklarının bir özeti:
Özellik
Standart Modeller
Snapshot’lar
Amaç
Mevcut durum dönüşümleri
Tarihsel izleme
Depolama
Mevcut veriye sahip tablo veya görünüm
Yalnızca eklemeli geçmiş tablosu
En Uygun
Olgu/boyut modelleri
Yavaş değişen boyutlar
dbt Snapshot’lar Nasıl Çalışır
Snapshot’lar, tüm değişikliklerin sistematik olarak yakalanmasını sağlayan yapılandırılmış bir iş akışını genellikle şu adımlarla izler:
dbt snapshotçalıştırın.Peki değişiklikler dbt’de nasıl izlenir?
Tüm değişiklikler, çıktı Snapshot tablosunda kaydedilir.
Bir değişiklik algılanırsa, dbt önceki sürüm için
dbt_valid_toalanını mevcut zaman damgasına günceller vedbt_valid_fromalanı mevcut zaman damgası olan yeni bir satır ekler.dbt’de Snapshot Stratejileri
Snapshot’lar değişiklikleri algılamak için iki temel strateji kullanır.
1. Zaman damgası (timestamp) stratejisi
updated_atzaman damgaları olduğunda.2. Kontrol (check) stratejisi
Strateji
Algılama Yöntemi
En Uygun
Timestamp
Güncellenen zaman damgası sütunu
Güvenilir son-değiştirilme zaman damgaları olan tablolar
Check
Sütunların doğrudan karşılaştırılması
Zaman damgası sütunları olmayan tablolar
Kalıcı Silmeler (Hard Deletes)
Silme gibi veri değişiklikleri de izlenebilir, ancak varsayılan olarak değil. Yine de bu tür kalıcı silme değişikliklerini izlemek için bunu değiştirmenin bir yolu vardır.
dbt_valid_todeğeriyle işaretlemek içininvalidate_hard_deletes=Trueayarlayın ve son durumlarını koruyun.İşte kalıcı silmeleri hesaba katarak bir kontrol stratejisinin uygulanmasına bir örnek:
dbt Snapshot’lar için Uygulama Rehberi
Artık dbt Snapshot’ların nasıl çalıştığını bildiğimize göre, bunları nasıl uygulayacağımıza bakalım
1. Snapshot eğitimi için örnek veri kümesi
Snapshot pratiği yapmak için, gerçek dünyadaki bir üyelik sistemini taklit eden örnek bir customers tablosu oluşturacağız. Bu, yaygın snapshot stratejilerini test etmek için somut veriler sağlar.
2. dbt projenizi kurma
Snapshot’ları uygulamadan önce, dbt projenizi doğru bir şekilde kurmak esastır. Bu, ortamınızın modelleri, snapshot’ları, testleri ve dokümantasyonu yapılandırılmış ve ölçeklenebilir bir şekilde yönetmek için yapılandırılmasını sağlar.
Önkoşullar
Ortamınıza göre dbt-postgres’i, ör. dbt-snowflake veya dbt-bigquery ile değiştirin.
Adım adım kurulum talimatları
1. İstediğiniz projeler dizinine gidin.
Analitik veya ELT projelerinizi burada saklayacaksınız. Bu durumda, ilgili tüm dosyaları bu dbt proje klasöründe saklayacağız.
2. Yeni bir dbt projesi başlatın.
dbt_project.yml adlı bir yapılandırma dosyası oluşturun:
Aşağıdakileri proje dosyanıza yapıştırın:
3. Bağlantınızı test edin.
Komutun çıktısı şöyle olmalıdır:
4. Tohumları (seeds) yerel bir veritabanına yükleyin.
Aşağıdaki komutu çalıştırın:
Komutun çıktısı şöyle olmalıdır:
5. Veritabanı bağlantı ayarlarınızı yapılandırın
Genellikle ~/.dbt/profiles.yml konumunda bulunan profiles.yml dosyasında.
Profil dosyamın içeriği şöyle:
Benim gibi SQLite veritabanı kullanıyorsanız, SQLean uzantısını da kurmanız gerekir.
6. Verinizi dbt sahneleme (staging) modellerine alın:
models adlı yeni bir klasör oluşturun. Bu klasörde
stg_customers.sqladlı bir dosya oluşturun.Aşağıdaki kodu dosyaya yapıştırın:
7. Aşağıdaki komutla sahneleme modellerini oluşturun.
Komutun çıktısı şöyle olmalıdır:
3. dbt Snapshot’ı yapılandırma
Bu örnek için, zaman damgası stratejisi snapshot’ı gerçekleştirmek üzere aşağıdaki kodu kullanabilirsiniz.
4. dbt Snapshot çalıştırma
Çalıştırın:
Bu komutta, tablo mevcut değilse dbt snapshot tablosunu oluşturur. Ayrıca tespit edilen değişiklikler için yeni satırlar ekler.
Komutun çıktısı şöyle olmalıdır:
5. Snapshot Tablolarını Kontrol Etme
Artık snapshot’ınızı gerçekleştirdiğinize göre, proje dosyası dizininizde yeni bir
snapshot.dbdosyası oluşturulmuş olmalıdır.Bu dosyanın nasıl göründüğünü görüntülemek için VSCode’da açtım:
Gördüğünüz gibi,
dbt_updated_atgibi ek sütunlar içeriyor. Bunlar, verilerde değişiklik yapılıp yapılmadığını ve ne zaman yapıldığını belirlemede kritik öneme sahiptir.dbt üzerine daha fazla uygulamalı rehber için, dbt ile Semantik Katman rehberimize göz atın.
Örnek: dbt Snapshot’larla Veri Değişikliklerini İzleme
Snapshot’lar, bir tablo içindeki herhangi bir öznitelikteki değişikliklerin tam bir denetim izini ekiplerin zaman içinde yakalamasını sağlar; bu da onları uyumluluk, hata ayıklama ve analitik için güçlü kılar.
customerstablosu oluşturun. Buna, değişikliklerin ne zaman gerçekleştiğini izlemek için müşteri kimliği, ad, e-posta ve updated_at zaman damgası dahildir.Tabloya veri eklemek için aşağıdaki kodu kullanın. Bu veriler, değişiklikten önceki orijinal veri olarak kullanılacaktır.
dbt snapshotçalıştırın.Sonraki adımda, bir veri değişikliğini simüle etmek için bir müşterinin bilgisini değiştirerek orijinal tablomuzu güncelleyeceğiz.
dbt snapshotkomutunu tekrar çalıştırın.Verilere yapılan farkları ve değişiklikleri görüntülemek için snapshot tablosunu sorgulamanız gerekir. Tablo, ilgili geçerlilik aralıklarıyla birlikte e-posta adresinin her iki sürümünü de göstermelidir:
Bu süreç, GDPR denetimleri, iletişim geçmişi takibi veya müşteri destek analitiği için kritik olan e-posta güncellemeleri için tam bir değişiklik geçmişini korumanızı sağlar.
Gelişmiş Yapılandırma ve Yönetim
Etkili yapılandırma yönetimi, ekiplerin snapshot uygulamalarını projeler ve ortamlar arasında sorunsuz bir şekilde ölçeklendirmesini sağlar.
1. Proje düzeyi ve kaynak düzeyi yapılandırma
dbt_project.ymlkullanın.2. Meta veri alanlarını özelleştirme
Varsayılan olarak, dbt
dbt_valid_fromvedbt_valid_toalanlarını oluşturur. Ekip standartlarınız BI veya veri yönetişim araçlarında farklı adlandırma gerektiriyorsa, bunlarıvalid_fromvevalid_toyapılandırma seçeneklerini kullanarak yeniden adlandırabilirsiniz.3. Eski Snapshot yapılandırmalarını taşımak
Geçişler, doğru yönetilmezse bazı tutarsızlıklara neden olabilir. Snapshot yapılandırmalarınızı taşırken dikkat etmeniz gereken bazı alanlar şunlardır:
4. Diğer araçlarla entegrasyon
Veri değişiklikleri, dbt snapshot’larıyla birlikte eşgüdüm içinde izlenebilir.
Örneğin:
Üretim Ortamında Uygulama için En İyi Uygulamalar
Üretimde dbt snapshot’ları uygulamak, performans, sürdürülebilirlik ve iş değeri sağlamak için dikkatli bir tasarım gerektirir.
Şunlara uymak en iyisidir:
1. En uygun kullanım alanları ve tablo seçimi
2. Performans optimizasyon teknikleri
Üretimde, ürününüzü etkilemeden veri değişikliklerinin verimli şekilde izlenebilmesi için verinizi optimize etmek istersiniz.
İşte bazı ipuçları:
unique_keyve geçerlilik sütunlarına indeks ekleyin.3. Bakım ve izleme uygulamaları
4. Yaygın tuzaklar
Benzersiz olmayan bir
unique_keykullanmak, yanlış satır sürümlemeye yol açar. Dağıtımdan önce her zaman benzersizlik mantığını test edin.Snapshot şişmesi ayrıca gereksiz tarihsel değişiklikler saklandığında (örn. sık zaman damgası güncellemesi olan sütunlar) depolama maliyetlerinin hızla artmasına neden olabilir.
Yaygın Zorluklar ve Çözümler
dbt’de Snapshot kullanmak bazı özel teknik zorluklarla gelebilir:
1. Benzersiz anahtar çakışmaları
Sorun: Zayıf tanımlanmış benzersiz anahtarlar nedeniyle snapshot’ta yinelenen satırlar.
Çözüm:
2. Zamansal sorgu performansı
Sorun: Tarihsel verileri analiz ederken yavaş sorgular.
Çözüm:
dbt_valid_fromveya tarih aralıklarıyla filtreleyin.3. Snapshot yürütme hatalarını giderme
Yaygın sorunlar şunları içerir:
SELECTifadelerini bozması.Çözümler:
dbt debugkullanarak bağlantı ve yapılandırmayı doğrulayın.Sonuç
dbt snapshot’lar, analitik ekiplerinin asgari mühendislik yüküyle sağlam tarihsel veri kümeleri oluşturmasını sağlayarak uyumluluk analitiğini mümkün kılar. dbt hakkında daha fazla bilgi edinmek isterseniz, dbt’ye Giriş kursumuza göz atın. Okumalar ve daha fazla rehber için dbt-utils Paketine Giriş ve dbt Eğitimi içeriklerimize göz atın.