Power BI raporu iki tıkta 30 saniye bekletiyorsa kullanıcı 3 hafta sonra o raporu açmayı bırakır. Yavaşlık, sadece sabır sınavı değil; benimseme (adoption) düşmanıdır. İyi haber şu: yavaş bir raporun %80'inde 3-5 somut iyileştirme, açılış süresini yarıya indirebilir. Bu yazıda VertiPaq motorundan görsel tasarımına kadar 10 pratik optimizasyon tekniğini ele alacağız.
01. Gereksiz Sütunları Model'den Çıkarın
Modele import ettiğiniz her sütun bellekte yer kaplar ve indekslenir. "Belki lazım olur" mantığıyla eklenen sütunlar, sıkıştırılamaz sütunlar veya yüksek kardinaliteli metinlerse (müşteri adı, adres) modeli 3-5 kat şişirir.
İlke: rapor kullanmadığı sütun, model'de olmamalı. Power Query aşamasında elenmeli, hesaplanan tablolara aktarılmamalı.
02. Yüksek Kardinaliteli Sütunları Böl
Tarih-saat sütunu, mikrosaniyeye kadar tutulursa VertiPaq için felakettir. Ayrı tarih (date) ve saat (time) sütunlarına bölerseniz, her ikisi de düşük kardinaliteli olur ve sıkıştırma dramatik artar.
Aynı mantık: tam ondalıklı fiyatlar için 2-3 basamak yeterliyse fazlasını yuvarlayın. Görünmez ama kritik bir bellek kazancı.
03. Ölçü (Measure) Yerine Sütun Hesabı Kullanmayın
DAX'ta hesaplama iki yerde yapılabilir: hesaplanan sütun (calculated column) ve ölçü (measure). Kural: ölçü tercih edilmeli.
Hesaplanan sütun her satır için önden hesaplanır ve modelde tutulur (sıkıştırılamaz, bellek yer). Ölçü, sorgu anında çalışır, filtreye duyarlıdır ve model boyutu artmaz. İstisna: dimension bazlı SLICER için hesaplanan sütun gerekir.
04. IF Zincirlerini SWITCH ile Değiştirin
Ard arda IF() çağrıları hem okunması zor hem hesaplama açısından pahalıdır. SWITCH(TRUE()) yapısı hem daha okunabilirdir hem motor tarafından optimize edilir:
Kötü: IF([A]>10, "H", IF([A]>5, "M", IF([A]>1, "L", "N")))
İyi: SWITCH(TRUE(), [A]>10, "H", [A]>5, "M", [A]>1, "L", "N")
Küçük değişiklik, büyük ölçüler için ölçülebilir hızlanma sağlar.
05. FILTER Yerine KEEPFILTERS Kullanın
Ölçü içinde CALCULATE + FILTER kombinasyonu klasiktir ama FILTER, tablonun tüm satırlarını tarar. Basit karşılaştırmalar için KEEPFILTERS daha verimli:
Kötü: CALCULATE([Sales], FILTER(Products, Products[Category] = "Electronics"))
İyi: CALCULATE([Sales], KEEPFILTERS(Products[Category] = "Electronics"))
Farkı ölçmek için DAX Studio'nun Query Plan aracı kullanılabilir.
06. Yıldız Şema Kurun (Snowflake ve Flat Kaçının)
Yıldız şema, VertiPaq'ın sıkıştırma matematiği için idealdir. Snowflake yavaşlatır; flat model belleği patlatır. Model kurulumunda temel karar budur.
Detayı için Power BI Veri Modeli: Yıldız Şema yazımıza bakabilirsiniz.
07. Bidirectional İlişkilerden Kaçının
İlişkileri iki yönlü yapmak cazip görünür ama sorgu motorunu karmaşık joinlere zorlar. Tek yönlü (single) ilişki, hem daha hızlı hem daha öngörülebilirdir.
Bidirectional gerekli görünen çoğu senaryoda ölçü içinde CROSSFILTER() ile lokal olarak çift yönlü davranış tetiklenebilir; modelde kalıcı bidirectional yapmaya gerek yoktur.
08. Görsel Sayısını Sınırlayın
Bir sayfada 20+ görsel olması, kullanıcı için de sorgu motoru için de yorucudur. Her görsel ayrı bir sorguya dönüşür; ekranda görünen her şey paralel hesaplanır.
Kural: bir sayfada 8-12 görsel optimaldir. Fazlasını alt sayfalara veya drill-through'lara taşıyın.
09. Aggregations Kullanın
Milyar satırlık fact tablonuz varsa bile detay hep gerekmez. Genel görünüm çoğu zaman aylık toplamla yetinir. Aggregations özelliği, sık kullanılan toplamları önden hesaplayıp bellekte tutar; ana fact tablosu yerine bu özet tablodan yanıt üretir.
10x-100x hızlanma mümkündür ama kurulumu dikkat ister; her ölçünün her boyutta doğru şekilde delegate etmesi gerekir.
10. Incremental Refresh Kullanın
Milyonlarca satırlı bir fact tablosunu her yenilemede baştan çekmek gereksizdir. Incremental refresh, sadece son X günün verisini yeniler; eski partition'lar cache'te kalır.
Ay bazlı partition'lu bir tabloda yenileme süresi saat mertebesinden dakikaya iner. Power BI Premium (ve Pro Fabric) lisansı ile kullanılabilir; Power BI Pro'da destek sınırlıdır.
Power BI çözümümüzü inceleyin
Detaylı bilgi almak için ücretsiz danışmanlık görüşmesi rezervasyonu yapabilirsiniz.