Ana içeriğe geç
Kesit SQL
Orta · Veri Ambarı

Fact türleri: işlem, periyodik, biriken; factless ve uyumlu boyut

Yanlış fact türü toplamları bozar. Üç tür, toplanabilirlik, kapsam tablosu ve iki fact tablosunu güvenle birleştirmek.

Uygulamada aç, 9 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Üç fact türü

Yıldız şema ve tanecik için Veri ambarı temelleri dersine bak. Burada fact'in kendisi: aynı iş sürecinden üç farklı tablo çıkar.

TürBir satırÖrnekSatır değişir mi?
İşlem (transaction)Bir olaybank_txns: bir hareketHayır, yalnız eklenir
Periyodik anlık görüntüDönem sonunda durumHesabın ay sonu bakiyesiHayır, her dönem yeni satır
Biriken anlık görüntüBir sürecin yaşamıBir siparişin alınma, yola çıkma, teslim zamanıEvet, adım tamamlandıkça güncellenir

Toplanabilirlik

ÖlçüNe üzerinden toplanırÖrnek
ToplanabilirHer boyutTutar, adet
Yarı toplanabilirZaman hariçBakiye: şubeler toplanır, aylar toplanmaz
ToplanamazHiçbiriOran, birim fiyat: payı ve paydayı sakla

Factless, degenerate, junk, köprü

Uyumlu boyut ve çapraz inceleme

İki süreç (satış ve web ziyareti) aynı uyumlu tarih ve ürün boyutunu kullanırsa karşılaştırılabilir. Fact'ler doğrudan birleştirilmez, satırlar katlanır. Her biri aynı boyut düzeyine toplanır, sonra birleştirilir.

WITH satis AS (
  SELECT strftime('%Y-%m', o.order_date) AS ay, SUM(i.quantity * i.unit_price * (1 - i.discount)) AS ciro
  FROM orders o JOIN order_items i ON i.order_id = o.order_id
  WHERE o.status <> 'cancelled'
  GROUP BY strftime('%Y-%m', o.order_date)
), ziyaret AS (
  SELECT strftime('%Y-%m', event_time) AS ay, COUNT(*) AS olay
  FROM web_events
  GROUP BY strftime('%Y-%m', event_time)
)
SELECT s.ay, ROUND(s.ciro, 2) AS ciro, z.olay
FROM satis s JOIN ziyaret z ON z.ay = s.ay
ORDER BY s.ay;

Role-playing boyut

Aynı boyut bir fact'te iki rol oynar: uçuşun kalkış ve varış havalimanı. Tek tablo, iki takma ad.

Alıştırmalara geç (9)