dbt docs: kendi data kataloğunu yayınla
dbt docs
Bu derste neler öğreneceksin
- dbt docs generate çalıştırır
- Public URL yayınlar (GitHub Pages)
- Portfolyo parçası olarak paylaşır
Kendi Veri Kataloğunu Yayınla
Yazılımcılar GitHub profilini portfolyo olarak gösterir. Analytics mühendisleri için dbt docs sitesi aynı şey: yazdığın modelleri, tabloları, lineage’ı görsel olarak sunan bir HTML site. İşe alım sürecinde “LinkedIn’e koy, mülakatta göster” seviyesinde değer.
Üretim
dbt docs generate # manifest.json + catalog.json + index.html üretir
dbt docs serve # http://localhost:8080'de açar
target/ klasöründe:
manifest.json: her modelin, her macro’nun, her testin metadata’sı.catalog.json: her sütunun veri tipi, yorumu, istatistikleri.index.html: UI bundle.
Site Özellikleri
localhost:8080’de gezerken:
- Sol ağaç: tüm modeller (marts, staging, intermediate), source’lar, seed’ler, testler, macro’lar.
- Model sayfası: açıklama, sütunlar, DAG (lineage) görselleştirmesi — hangi modelden doğmuş, hangi modele akmış.
- Sütun açıklamaları: docblock’ta yazdığın
descriptiongörünür. - Search: herhangi bir sütun adını arat, hangi modelde geçiyor bul.
- Test durumu: kaç test geçti, kaç kaldı.
Lineage (Soy Ağacı) Grafiği
En güçlü özellik: DAG görselleştirmesi. Bir modelin hangi source’lardan geldiğini, hangi downstream modellere aktığını görürsün. Impact analysis için kritik: “Şu source’u değiştirsem hangi tablolar etkilenir?” sorusunun cevabı.
Public Yayınlama: GitHub Pages
serve sadece local çalışır. Siteyi herkes görebilsin diye GitHub Pages’e koy. CI workflow ile otomatik.
.github/workflows/dbt-docs.yml:
name: Publish dbt docs
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dbt
run: pip install dbt-core dbt-bigquery
- name: dbt deps
run: dbt deps
- name: dbt docs generate
run: dbt docs generate
env:
BIGQUERY_KEYFILE_JSON: ${{ secrets.GCP_SA_KEY }}
DBT_PROFILES_DIR: ${{ github.workspace }}
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: target
- id: deployment
uses: actions/deploy-pages@v4
git push origin main → Actions çalışır → site https://<user>.github.io/<repo>/ adresinde yayınlanır.
Secrets: BigQuery service account JSON’u GitHub Secrets’a koy (GCP_SA_KEY). Workflow BIGQUERY_KEYFILE_JSON env’ine yaz, profiles.yml’de oku.
dbt Cloud ile Ücretsiz Hosted Docs
GitHub Pages ile uğraşmak istemezsen dbt Cloud ücretsiz tier:
- Repo’yu dbt Cloud’a bağla.
- Production environment’ta “Generate docs on schedule” aç.
- dbt Cloud
cloud.getdbt.com/discover/<account>/<project>adresinde docs’u host eder.
Custom domain de bağlanabilir.
Portfolyo Hikayesi
LinkedIn’de “Data Engineer” diyen 1000 kişi var. Hangi biri gerçekten üretim kalitesinde SQL yazıyor belli değil. Senin public dbt docs siten fark yaratır:
- “NYC taksi verisi üzerine 12 dbt modeli, 8 test, lineage grafiği: [link]”
- “Snowflake üzerinde 50 model, incremental strateji, CI/CD: [link]”
Mülakatta “bu modeli neden böyle yazdın?” sorusuna cevap — siteye bakarak gösterirsin.
Ne Öğrendik?
dbt docs generate+dbt docs serveile lokal katalog sitesi.- Lineage DAG görselleştirmesi upstream/downstream analizi sağlar.
- GitHub Pages + workflow ile ücretsiz public hosting.
- dbt Cloud ücretsiz tier alternatif hosting sağlar.
- Docs sitesi portfolyo olarak iş başvurusunda fark yaratır.
Küçük Ödev
- Tüm model ve sütunlara açıklayıcı
descriptionyaz. dbt docs generate && dbt docs serveçalıştır, lineage grafiğini incele..github/workflows/dbt-docs.ymlekle, push’la, sitenin*.github.ioURL’inde açıldığını doğrula.- Siteyi LinkedIn profiline “Featured” bölümüne ekle.