Google BigQuery — Export Table Metadata to Git Repository
Selamlar, bu yazımda Google BigQuery’deki projelerinizde bulunan tablolarınızın metadata bilgilerini json file olarak export edeceğiz. Oluşan json dosyalarını da bir Git Repository’sine göndereceğiz.
Bu şekilde BigQuery’de bulunan tablolarınızdaki metadata bazlı değişiklikleri versiyonlanabilir hale getireceğiz.
Öncelikle metadata bilgilerini alabilmemiz için Google BigQuery API çağırmamız gerekiyor. Örnek Get Request URL’i aşağıdaki gibidir.
https://bigquery.googleapis.com/bigquery/v2/projects/“YOUR_PROJECT_NAME”/datasets/“YOUR_DATASET”/tables/“YOUR_TABLE_NAME”?key=”YOUR_API_KEY”
Body Params:
- Accept: application/json
- Authorization: Bearer “YOUR_ACCESS_TOKEN”
Servisi yukarıdaki bilgileri doldurarak GET olarak çağırdınızda aşağıdaki gibi bir json sonuç dönecektir.
Bu json dosyasında tablonun kolon isimleri, kolon tipleri, tablo büyüklüğü, kayıt sayısı, oluşturulma tarihi, değişiklik tarihi, tipi ve lokasyonunu görebiliyoruz.
Artık metadata bilgilerini json olarak alabildiğimize göre bir python kodu yardımı ile tüm projelerimizdeki tablolarımızın metadata verilerini toplayalım.
Topladığımız json dosyalarından project -> dataset -> table_name.json şeklinde bir dosya hiyerarşisi oluşturalım. Bu hiyerarşik dizinleri de git repo’suna push edelim.
Yukarıdaki kodun detaylarına inmek gerekirse;
- #1 adımlarında;
cred.json dosyamız yani Google BigQuery credential dosyamızın konumunu belirtiyoruz. Bu cred.json ile kodun çalıştığı makinede google cloud’da auth işlemini gerçekleştiriyoruz.
API’de kullanacağımız access_token için “gcloud auth print-access-token” komutunu çalıştırıyoruz. Dönen token değerini token değişkenine alıyoruz.
- #2 adımlarında;
Kodun çalıştığı dizinde oluşturduğumuz git repo’sunu indiriyoruz ve içindeki objeleri siliyoruz.
- #3 adımında;
BigQuery API’ye gidip tablo metadatalarını getirecek fonksiyonu yazıyoruz. Fonksiyon aynı zamanda istediğimiz hiyerarşik dosya yapısını da oluşturuyor.
- #4 adımında;
BigQuery Python api’si ile bağlantı açıyoruz. projects değişkenine tüm projeleri atıyoruz.
- #5 . adımında;
#4 adımındaki atama sonrası for loop’lar yardımı ile her bir projeyi ve içindeki dataset’leri alıyoruz. Dataset’lerden de her bir tabloya erişiyoruz. Eriştiğimiz her bir tablo içinde #3 adımındaki curling fonksiyonunu kullanarak json dosyalarını oluşturuyoruz.
- #6 adımında;
Git commit’inde kullanacağımız YYYYMMDDHHMISS (Örnek: 20201011221033) today değişkenine atama yapıyoruz.
- #7 adımlarında;
Oluşan dosya hiyerarşisini repoya gönderecek komutları çalıştırıyoruz. En son olarak da repoya gönderilen dosyaları siliyoruz.
Artık BigQuery’deki tablolarımızın metadata’sını bir Git Repo’da tutuyor olduk.
Sorularınız olursa sormaktan çekinmeyiniz. İyi kodlamalar :)