DuckDB ile analitik SQL
Sunucu gerektirmeyen DuckDB ile CSV, JSON ve Parquet dosyalarını doğrudan sorgular; pencere fonksiyonları, CTE ve zaman gruplamasıyla log analizi yaparsın.
Seviye 201 · 19 ders · 18 pratik lab
Dersler
Başlangıç
- Analitik veritabanı nedir, neden DuckDB
- DuckDB komut satırı ve ilk sorgu
- Dosyaları doğrudan sorgulamak: CSV, JSON, Parquet
- Şema çıkarımı ve veri türleri
- Kısa görev: erişim kaydını SQL ile sorgula
Analitik sorgular
- Gruplama, HAVING ve koşullu sayım
- Zamanı dilimlemek: saatlik ve günlük özet
- CTE ile sorguyu adımlara bölmek
- Pencere fonksiyonları: sıra, önceki değer, kayan ortalama
- Birleştirmelerle zenginleştirmek
- Kısa görev: her IP’nin ilk ve son görülme zamanı
İleri teknikler
- İç içe JSON ve UNNEST
- SQL’de metin ve düzenli ifade
- PIVOT ve UNPIVOT
- Sonucu bölümlü Parquet olarak yazmak
- Python’dan DuckDB kullanmak
- Kısa görev: düzenli aralıklı bağlantıları SQL ile bul
Performans ve rapor
- EXPLAIN ve sorgu performansı
- Bitirme görevi: bir haftalık web saldırısı analizi
Pratik lablar
- Parquet dosyasını doğrudan sorgula: DuckDB ile bir Parquet olay dosyasını içe aktarmadan sorgulayıp en çok olay üreten beş ana makineyi bul.
- Joker karakterle çok dosya oku: Günlere bölünmüş yüzlerce CSV dosyasını tek sorguda okuyup dosya adını sütun olarak ekle ve gün başına satır sayısını çıkar.
- Yanlış tür çıkarımını düzelt: DuckDB'nin yanlış tür çıkardığı bir dosyada sütun türlerini açıkça tanımlayıp hatalı okunan satırları ayrı bir tabloya aktar.
- Koşullu sayımla durum özeti: Tek bir sorguda uç nokta başına toplam, başarılı ve başarısız istek sayısını FILTER ifadesiyle hesapla.
- Beş dakikalık zaman kovaları: time_bucket ile e-posta gönderimlerini beş dakikalık kovalara bölüp HAVING ile olağandışı yüksek kovaları süz.
- CTE ile adım adım analiz: Tek parça okunmaz bir sorguyu CTE'lerle adımlara bölüp her adımın ara sonucunu doğrulayarak aynı sonucu ürettiğini kanıtla.
- Kullanıcı başına ilk ve son giriş: Pencere işlevleriyle her kullanıcının ilk ve son giriş zamanını ve aradaki gün sayısını hesapla.
- LAG ile oturum arası boşluk: LAG ile ardışık bağlantılar arasındaki süreyi hesaplayıp aralığı neredeyse sabit olan kaynak-hedef çiftlerini bul.
- Kayan ortalamadan sapma: Her ana makine için yedi günlük kayan ortalamayı hesaplayıp günlük trafiği ortalamanın üç katını aşan günleri sıralı listele.
- JSON listesini UNNEST ile aç: Etiket listesi içeren uyarı kayıtlarını UNNEST ile açıp etiket başına uyarı sayısını çıkar.
- Düzenli ifadeyle URL parçala: regexp_extract ile istek URL'lerinden alan adı, yol ve sorgu parametrelerini ayırıp en çok parametre taşıyan uç noktayı bul.
- PIVOT ile gün-saat matrisi: PIVOT ile şube×saat olay matrisi üretip UNPIVOT ile geri döndürerek toplamın korunduğunu göster.
- Bölümlü Parquet olarak yaz: Sorgu sonucunu gün bölümlü Parquet olarak dışa aktarıp oluşan klasör yapısını ve dosya sayısını yaz.
- Python'dan DuckDB ve DataFrame: Python betiğinde bir pandas DataFrame'i DuckDB ile sorgulayıp sonucu yeniden DataFrame olarak alan ve CSV'ye yazan bir akış kur.
- EXPLAIN ile yavaş sorguyu hızlandır: EXPLAIN ANALYZE çıktısından yavaş bir sorgunun darboğazını bulup sorguyu yeniden yazarak süreyi en az yarıya indir.
- Olayları varlık listesiyle birleştir: Uyarı tablosunu varlık CSV'siyle birleştirip her uyarıya sahip ve konum bilgisini ekle.
- Aralık birleştirmesiyle IP'den ağa: Kaynak IP'leri ağ bölgesi tablosundaki adres aralıklarıyla eşleyip bölge başına engellenen bağlantı sayısını çıkar.
- Zamana göre en yakın kayıtla eşle: ASOF JOIN ile her ağ olayını o andaki DHCP kirasıyla eşleyip IP'nin o sırada hangi cihaza ait olduğunu bul.
Kurs hakkında
Sunucu gerektirmeyen DuckDB ile CSV, JSON ve Parquet dosyalarını doğrudan sorgular; pencere fonksiyonları, CTE ve zaman gruplamasıyla log analizi yaparsın.
Ne öğreneceksin
- Başlangıç
- Analitik sorgular
- İleri teknikler
- Performans ve rapor
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.