Modül 3 · Atölye: Veri Alımı · ⏱ 7 dk

dlt ile ilk ingestion: 5 dakikada API'den tabloya

dlt first ingestion

Bu derste neler öğreneceksin

  • dlt init dlthub:open_library duckdb çalıştırır
  • Open Library API den veri çeker
  • Normalize edilmiş tabloyu inceler

Hayalindeki Bir Gün

Bir kütüphanede oturduğunu düşün. Duvarda 1 milyon kitap var. Sen “Harry Potter” diyorsun, kütüphaneci 3 saniyede raftan 7 kitap getiriyor, hepsini masaya düzgünce diziyor. Adı, yazarı, sayfa sayısı, basım yılı — her şey etiketli.

İşte dlt, senin kütüphaneci asistanın. Sen sadece “şu kaynaktan veri al” diyorsun, o gidip getiriyor, düzenliyor, tablona koyuyor.

Bugün biz de kütüphanemizi kuracağız: Open Library adlı dev bir açık kitap veritabanından veri çekeceğiz. Üstelik Python kütüphanesi gibi tek satır kurulumla!

Kütüphaneyi Kur

Terminal aç ve şu sihirli komutu yaz:

pip install dlt[duckdb]

Bu komut dlt adlı kütüphaneciyi ve DuckDB adlı veritabanını (senin defterinin dijital hali) kurar. Kurulum birkaç saniye sürer.

Kütüphanecine Görev Ver

Şimdi kütüphanecimize ilk görevi verelim: Open Library’den belirli bir kitabın bilgilerini getir.

Bir klasör aç ve içine get_books.py adlı dosya koy. İçine şunu yaz:

import dlt
from dlt.sources.helpers.rest_client import RESTClient
from dlt.sources.helpers.rest_client.paginators import PageNumberPaginator

# Kütüphanecimiz — Open Library'ye bağlanan bir "istemci"
client = RESTClient(base_url="https://openlibrary.org")

@dlt.resource(table_name="books", write_disposition="replace")
def get_books():
    """Open Library'den 'harry potter' kitaplarını çek."""
    for page in client.paginate(
        "/search.json",
        params={"q": "harry potter"},
        paginator=PageNumberPaginator(base_page=1, total_path=None),
    ):
        yield page  # her sayfayı olduğu gibi bırak, dlt düzenlesin

# Pipeline'ı kur (kütüphanecinin tam adı)
pipeline = dlt.pipeline(
    pipeline_name="open_library_demo",
    destination="duckdb",
    dataset_name="books_data",
)

# Kütüphaneciyi çalıştır!
load_info = pipeline.run(get_books())
print(load_info)

Bunu kaydet, terminalde python get_books.py yaz. Birkaç saniye bekle. Ekranda neler olduğunu göreceksin: hangi tablo oluştu, kaç satır geldi, hata var mı.

Kütüphanecinin Sihirli Düzenlemesi

Open Library’den gelen veri iç içe geçmiş bir JSON. Örneğin bir kitap kaydı şöyle:

{
  "title": "Harry Potter and the Philosopher's Stone",
  "author_name": ["J.K. Rowling"],
  "first_publish_year": 1997,
  "isbn": ["9780747532699"],
  "subject": ["fantasy", "magic", "wizards"]
}

Ama gerçekte iç içe çok daha derin: yazarlar ayrı listede, konular ayrı, basım yılları vs. İnsan elle bu karmaşayı tabloya dökerken saatler harcar.

dlt bunu otomatik yapar. Şemayı (sütun isimlerini) kendi çıkarır, iç içe listeleri ayrı tablolara böler, aralarına ID’ler koyar. Buna normalizasyon denir.

Kütüphanecinin ne yaptığını görmek için terminalde:

dlt pipeline open_library_demo show

Bir browser penceresi açılacak. İçinde göreceksin:

  • books tablosu — ana kitap bilgileri
  • books__author_name — yazarlar ayrı tabloda
  • books__isbn — ISBN’ler ayrı
  • books__subject — konular ayrı

Her birinin kaç satır olduğu, örnek satırlar, sütun tipleri hepsi orada. Hiçbir şey yazmadan, kütüphaneci her şeyi anlaşılır hale getirdi.

Kendi Denemen

Şimdi sen dene! Kodu kopyala, sonra q="harry potter" yerine sevdiğin başka bir şey yaz: q="dune", q="lotr", q="rick riordan". Her seferinde çalıştır, yeni tablolar oluşacak. Browser’da aç, sütunları incele.

Eğer “connection error” alırsan internetini kontrol et. Eğer “permission denied” alırsan, klasörü başka yere taşı (bazen Windows’ta C:\ altında sorun çıkıyor).

Neden Önemli?

Gerçek dünyada veri neredeyse hiç düz tablo halinde gelmez. API’ler JSON verir, web siteleri HTML, log dosyaları yarı yapılandırılmış metin. Bunları elle temizlemek saatler sürer. dlt gibi araçlar bize “veriyi al, ben düzenlerim” deme şansı veriyor — biz sadece iş sorularına odaklanıyoruz.

Kütüphaneden ödünç aldığımız bu yaklaşım, modern veri mühendisliğinin temel taşı.

Sıradaki

Kütüphaneci tabloları kurdu. Şimdi kalite kontrolü öğrenelim →