Üç 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ür | Bir satır | Örnek | Satır değişir mi? |
|---|---|---|---|
| İşlem (transaction) | Bir olay | bank_txns: bir hareket | Hayır, yalnız eklenir |
| Periyodik anlık görüntü | Dönem sonunda durum | Hesabın ay sonu bakiyesi | Hayı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 |
|---|---|---|
| Toplanabilir | Her boyut | Tutar, adet |
| Yarı toplanabilir | Zaman hariç | Bakiye: şubeler toplanır, aylar toplanmaz |
| Toplanamaz | Hiçbiri | Oran, birim fiyat: payı ve paydayı sakla |
Factless, degenerate, junk, köprü
- Factless: ölçüsü olmayan fact. "Bu çalışan bu eğitimi aldı" gibi yalnız olayı kaydeder.
COUNT(*)ölçüdür; olmamış şeyi bulmak için kapsam tablosuyla karşılaştırılır. - Degenerate boyut: fact içinde duran, ayrı tablosu olmayan kimlik: fiş no.
- Junk boyut: düşük çeşitli bayrakların (ödeme türü, kanal, iade mi) tek küçük boyutta birleştirilmesi.
- Köprü tablosu: çoka çok ilişki: bir hesabın birden çok sahibi. Toplamı katlamamak için ağırlık tutulabilir.
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.