Selam.
Bu yazımda, command line üzerinde çalışacabileceğimiz dbt-core ortamının kurulumunu ve bağlantı kontrollerini ele alacağım.
Her şeye sıfırdan, temiz bir environment ile başlayalım 🙂 Package Management olarak Anaconda kullanıyorum ve Python 3.8 ile yeni bir environment oluşturuyorum.
Environment oluştuktan sonra dbt core kurulumuna geçelim. dbt’yi BigQuery ile kullanacağım için BigQuery paketini yükleyeceğim, kendisi dbt-core’u da yanında kuracak.
pip install dbt-bigquery
⚠️ 2023.03.07 itibariyle kurulumu yaptığımda güncel versiyonlarım aşağıdaki şekilde.
dbt --version
Core:
- installed: 1.4.4
- latest: 1.4.4 – Up to date!
Plugins:
- bigquery: 1.4.1 – Up to date!
Authentication Methods
dbt ve BigQuery ile 4 çeşit authentication yapabiliyoruz.
BigQuery setup | dbt Developer Hub
Biz service account file ile authentication işlemini yapacağız.
Bir yaml dosyasında BigQuery üzerinde çalışacağımız projede ya da projelerde dbt için gerekli bir service account dosyasını tanıtacağız.
dbt’yi bulunduğumuz projede initialize etmek için:
dbt init proje_adı
İlk olarak bize kullanacağımız data platformunu soruyor. Sadece BigQuery yüklediğimiz için seçeneklerde o mevcut.
1 Yazarak devam ediyorum.
Daha sonra hangi Authentication Metodu tercih ettiğimi soruyor. Service Accountumuz ile bir authentication işlemi yapacağımız için 2. seçenek ile devam ediyorum.
Sırada, kullanacağımız projedeki yetkilendirmeleri dbt için yapılmış Service Account dosyamızın lokasyonunu girmemiz isteniyor. İndirdiğiniz service account dosyasının adresini vermelisiniz.
Ben indirdiğim service account dosyasını proje dizinine taşıdığım için onun adresini veriyorum.
Çok sağlıklı bir yöntem olmasa da bu dosyayı daha sonra gitignore içerisine ekleyerek uzak repoya erişimini engelleyeceğim.
Daha sonrasında kullanacağımız GCP project id’yi sormakta. GCP üzerinden ana karşılama ekranında aşağıdaki şekilde bu ID’ye erişebilirsiniz.
Ya da BigQuery bölümünde ana proje id’sini alabilirsiniz.
Proje ID’sini de dbt’ye aşağıdaki şekilde tanıtıyorum.
Sonrasında kullanacağımız dataset ismini sormakta. Henüz bir dataset oluşturmadık. BigQuery üzerinde bir dataset oluşturalım.
Bunun için BigQuery üzerinde kullanacağım dataset üzerinde Create dataset seçiyoruz.
Açılan sayfada bir dataset ismi belirtip, Multi Region olarak da US seçebiliriz. (Eğitim için olan tutorial verisi ile devam etmek istiyorsanız US seçmeniz önemli)
dataset ismi olarak ben dbt_tutorial yazdım.
Oluşturduğumuz dataset’in bilgileri:
Bu dataseti dbt’ye tanıtalım.
Bir sonraki adımda threats ve job_execution_timeout_seconds değerlerini isteyecek. Default değerler olan 1 ve 300 diyerek devam edebilirsiniz.
Sonrasında oluşturduğumuz datasetin lokasyon bilgisini girelim. US açtığım için onu seçiyorum
dbt bizden aldığı inputlar ile kök dizinde .dbt klasörü oluşturarak profiles.yml dosyası generate ediyor ve güzel modelleme dileklerini sunuyor.
Oluşan yml dosyasına göz atalım:
cat ~/.dbt/profiles.yml
dbt_tutorial: outputs: dev: dataset: dbt_tutorial job_execution_timeout_seconds: 300 job_retries: 1 keyfile: /Users/oguz/dbt_tutorial/dbt-sa-key-file.json location: US method: service-account priority: interactive project: dbt-tutorial-379917 threads: 1 type: bigquery target: dev
Daha sonra BigQuery üzerinde değişiklikler yaptığımız zaman değişen bilgileri bu dosyadan da değiştirebiliriz.
💡dbt default olarak connection bilgilerini bu dizinde ve bu yml dosyasında aradığı için başlangıçta bu dosyayının yerini değiştirmemeniz iyi olacaktır.
İşlemler sonrasında proje dizinimizde aşağıdaki klasör ve dosyaların oluştuğunu göreceğiz.
Bunların hepsinin üzerinden geçeceğiz, şimdilik bir bağlantı kontrolü yapalım.
Oluşturduğum dbt_tutorial klasörünün içerisine girerek aşağıdaki komutu çalıştırıyorum.
dbt debug
dbt debug ile az önce bahsettiğimiz lokasyondaki yml dosyasındaki bilgiler ile BigQuery’deki bağlantımızda bir hata olup olmadığını kontrol ediyoruz.
Her şeyin yolunda olduğundan emin olmak için aşağıdaki şekilde boş yeşilli bir çıktı almalısınız.
💡Burada yapılan en sık hata oluşturduğunuz model klasörünün içerisinde değil de projenin kök dizininde bu komutu çalıştırmanız. Aşağıdaki şekilde bir hata alırsanız eğer oluşturduğunuz model dizininde bu komutu tekrar deneyiniz. (cd dbt_tutorial
)
Kaynaklar:
https://docs.getdbt.com/reference/warehouse-setups/bigquery-setup#authentication-methods
Son cümleyi yazarken çalıyordu: