- Model boyutu nereden gelir
- Gereksiz sütunları ve satırları ayıklamak
- Veri tipi ve metin sütunlarını sayıya çevirmek
- Özetleyerek ve DirectQuery ile küçültmek
- Hesaplanmış sütun, yardımcı sorgu ve otomatik tarih tablosu
- Ölçmek, karşılaştırmak, hatalardan kaçınmak
- Bu beceriyi Mindset programlarında nerede çalışırsınız
- Sık sorulan sorular
Power BI Modelini Küçültmek: Sütun, Kardinalite ve Veri Tipi
Power BI dosyasının boyutu, VertiPaq'ın sütunları nasıl sıkıştırdığına bağlıdır. Gereksiz sütunu ve satırı atmak, yüksek kardinaliteyi düşürmek ve veri tiplerini düzeltmek, modeli küçülten başlıca ayarlardır.
Bir bakışta
- Boyutu belirleyen, sütunların benzersiz değer sayısıdır. Metin ve yüksek kardinaliteli sütunlar, sayısal sütunlardan daha pahalı saklanır.
- İlk adım kullanılmayan sütunu ve fazla geçmişi atmaktır. Sütun hem rapora hem model yapısına hizmet etmiyorsa kaldırılabilir.
- Özetleyerek yüklemek en etkili, ama en maliyetli yoldur. Ayrıntı düzeyi düşer; bileşik model bu kaybı azaltabilir.
- Hesabı DAX sütunu yerine Power Query'de yapın. Hesaplanmış sütunlar genellikle daha zayıf sıkıştırılır ve yenilemeyi uzatabilir.
- Önce ölçün, sonra değiştirin. Hangi sütunun bellekte ağır olduğunu analiz aracı gösterir; tahmin yanıltabilir.
Model boyutu nereden gelir
Import modunda Power BI, veriyi VertiPaq adı verilen sütun tabanlı motorla sıkıştırıp bellekte tutar. Dosyanın boyutu, ham verinin satır sayısından çok sütunların yapısına bağlıdır. Motor her sütun için ayrı bir veri yapısı kurar.
Sayısal sütunlar en verimli kodlanan türdür; Microsoft buna değer kodlaması (value encoding) der. Metin ve diğer sayısal olmayan veriler ise karma kodlaması (hash encoding) kullanır: motor sütundaki her benzersiz değere bir sayısal kimlik atar, saklanan şey o kimliktir ve her sorguda bir karşılık arama yapılır. Sütundaki benzersiz değer sayısına kardinalite denir. Kardinalite yükseldikçe bu sözlük büyür, sıkıştırma zayıflar.
Bu yüzden küçültme çalışması hep aynı soruya iner: modelde hangi sütun ve satırlara gerçekten ihtiyaç var, hangi sütunlar gereğinden fazla benzersiz değer taşıyor? Küçük model yalnızca dosya boyutunu azaltmaz; veri yenilemeyi hızlandırır, kapasite belleğine daha az yük bindirir ve hesaplanacak satır azaldığı için sorguları da çoğu zaman hızlandırır.
Çok benzersiz değer, modeli şişiren zincirin başıdır
Kardinalite etkisi
- Çok benzersiz değerSipariş numarası, zaman damgası gibi her satırda değişen sütunlar.
- Büyük sözlükMotor her benzersiz değere kimlik atar ve bunları saklar.
- Şişen modelDosya ve bellek büyür, yenileme uzar.
Gereksiz sütunları ve satırları ayıklamak
En ucuz kazanç, kullanılmayan sütunları Power Query'de kaldırmaktır. Bir sütunun modelde kalması için iki gerekçesi olabilir: raporda filtreleme, gruplama ya da özetleme için kullanılıyor olması; ya da ilişki, hesaplama veya güvenlik rolü gibi model yapısını desteklemesi. İkisi de yoksa sütun yüktür. Microsoft buna dikey filtreleme der.
Bir dikkat noktası var: sütun eklemek kolaydır, kaldırmak zordur. Sütunu silerseniz o sütuna dayanan rapor ya da ölçü bozulabilir. Bu yüzden kararı bilinen rapor gereksinimlerine göre verin, "belki lazım olur" diye sütun taşımayın.
Satırlarda da aynı mantık geçerlidir (yatay filtreleme). Zamana göre filtrelemek, olgu tablosuna yalnızca ihtiyaç duyulan veri geçmişini yüklemektir. Power Query parametreleriyle ve yenileme tarihine göre göreli dönemlerle kurulabilir; "son birkaç yıl" gibi. Geriye dönük bir zaman filtresi değişikliği raporları bozmaz, yalnızca daha az ya da daha çok geçmiş getirir.
Varlığa göre filtrelemek de mümkündür: tüm bölgelerin satışı yerine tek bir bölgenin verisini yüklemek. Bu yaklaşım daha küçük ama çok sayıda model üretir ve izinleri Power BI Service tarafında ayrıca yönetmeyi gerektirir.
Veri tipi ve metin sütunlarını sayıya çevirmek
Karma kodlaması sayısal kodlamadan pahalıdır; bu yüzden bazı metin sütunlarını sayıya çevirmek büyük tablolarda fark yaratır. Microsoft'un verdiği örnek sipariş numarasıdır: değerler tutarlı bir önekle başlıyorsa, örneğin SO ile, öneki Power Query'de kaldırıp sütunu tam sayıya çevirebilirsiniz. Benzersiz ya da yüksek kardinaliteli sütunlarda kazanç belirgindir.
Bu dönüşümde iki ek adım gerekir. Birincisi, sütunun varsayılan özetlemesini "özetleme" olmayacak şekilde ayarlamaktır (Do Not Summarize); aksi hâlde sipariş numaraları toplanabilir bir sayı gibi davranır ve anlamsız toplamlar çıkar. İkincisi, öneki başka bir sütunda ya da gösterim kuralıyla korumaktır; kullanıcı rapor ekranında yine tam numarayı görmek isteyebilir.
Aynı düşünceyle, sayısal gibi görünen ama aslında etiket olan sütunlarda da veri tipini bilinçli seçin. Telefon numarası ya da kod gibi alanları sayıya çevirmek verimlilik sağlayabilir, ama baştaki sıfırları kaybetme riskini birlikte tartın.
Özetleyerek ve DirectQuery ile küçültmek
Model boyutunu küçültmenin en etkili yollarından biri, veriyi önceden özetleyerek yüklemektir. Olgu tablosunun ayrıntı düzeyini yükseltirsiniz: sipariş satırı yerine tarih, müşteri ve ürüne göre gruplanmış toplamlar. Tarihi ayın düzeyine çıkarırsanız kazanç daha da büyür; Microsoft örneğinde çok yüksek bir azalma mümkün olduğunu belirtir.
Bunun bedeli ayrıntı kaybıdır. Özet yüklenmiş bir modelde gün düzeyinde ya da tek sipariş satırı düzeyinde raporlama artık yapılamaz. Karar, hangi sorulara cevap verilmesi gerektiğine bağlıdır.
Bedeli azaltmanın bir yolu bileşik modeldir. Büyük olgu tablosunu DirectQuery depolama moduna alırsınız, özet tabloları Import modunda tutarsınız. Özet raporlar hızlı çalışır; ayrıntıya gitme sayfası ise dar bir filtre bağlamında DirectQuery tablosundan siparişleri getirir. Ancak DirectQuery ve bileşik modellerin güvenlik ve performans sonuçları vardır; kaynağın yük kaldırıp kaldırmadığını önceden düşünmek gerekir.
Hesaplanmış sütun, yardımcı sorgu ve otomatik tarih tablosu
DAX ile yazılan hesaplanmış sütunlar, Power Query'de oluşturulan özel sütunlara göre genellikle daha zayıf sıkıştırılır ve veri yenileme sürecinde sonradan kurulur; bu da yenilemeyi uzatabilir. Mümkünse hesabı Power Query'de, kaynak veritabanıysa SQL sorgusunda ya da kaynakta bir sütun olarak üretin. Ölçüleri hesaplayan ya da yalnızca DAX'in desteklediği işlevleri gerektiren sütunlar bu kuralın istisnasıdır.
İkinci kontrol, yardımcı sorgulardır. Başka sorguları beslemek için yazdığınız ara sorguları modele yüklemeyin; Power Query'de bu sorgunun yüklemesini kapatın. Birleştirme için kullanılan arama tabloları buna tipik örnektir.
Üçüncü kontrol, otomatik tarih ve saat seçeneğidir. Açıkken Power BI Desktop, modeldeki her tarih sütunu için gizli bir tarih tablosu üretir. Bunlar aslında hesaplanmış tablolardır ve modeli büyütür. Kapatırsanız tarih hiyerarşilerini kendi tarih tablonuzla kurmanız gerekir; bunun için ayrı bir tarih tablosu oluşturmak iyi bir alışkanlıktır.
Ölçmek, karşılaştırmak, hatalardan kaçınmak
Neyi küçülteceğinizi tahminle seçmeyin. DAX Studio gibi araçlardaki VertiPaq Analyzer görünümü, tablo ve sütun bazında bellek payını gösterir; en pahalı sütunlar çoğunlukla birkaç yüksek kardinaliteli alandır. Değişiklikten önce ve sonra .pbix dosyasının boyutunu ve veri yenileme süresini kaydedin; neyin işe yaradığını böylece görürsünüz.
Sık yapılan hatalar şunlardır:
- Raporda hiç kullanılmayan kimlik ve zaman damgası sütunlarını modelde bırakmak
- Yardımcı sorguların yüklemesini kapatmayı unutmak
- Sütun silerken ona bağlı ölçü ve ilişkileri kontrol etmemek
- Özetleyip ayrıntı raporunu da özet tablodan beklemek
Bu yaklaşım görsellerin ya da DAX ölçülerinin yavaşlığını çözmez. Yavaşlık sorununda performans analizörü ile görsel bazında süre okumak gerekir; model küçültme ise bellek ve yenileme sorununun cevabıdır.
Aynı veri, daha az sütun ve daha ucuz tipler
Tipik düzeltmeler
Bu beceriyi Mindset programlarında nerede çalışırsınız
Uygulamalı Power BI programında veri modelleme ve yönetimi ile veri analizi ve işleme teknikleri ayrı başlıklardır. Model küçültme, büyük satış ya da finans verisiyle çalışan, raporu yayımladığında yenileme ve bellek sorunuyla karşılaşan analistlerin ihtiyacıdır; Power Query ve veri modelleme becerisi bu işin temelidir.
İlgili Mindset programı
Uygulamalı Power BI ile Veri Analitiği ve Görselleştirme Sertifika Programı
Sık sorulan sorular
Model küçültünce mevcut raporlar bozulur mu?
Sütun kaldırırsanız, o sütunu kullanan görsel, ölçü, ilişki ya da güvenlik rolü hata verebilir. Bu yüzden silmeden önce bağımlılıkları kontrol edin, mümkünse bir kopya üzerinde deneyin. Satır filtresi ise raporları bozmaz; yalnızca daha az geçmiş veri gösterir. Sütun eklemek kolaydır, kaldırmak zordur; kararı rapor gereksinimlerine göre verin.
Özet tabloya geçmek her zaman doğru mu?
Hayır. Özetleme modeli çok küçültebilir ama gün ya da sipariş satırı düzeyindeki analizi imkânsız kılar. Yönetim panosu için ayın toplamı yeterliyse uygundur. Ayrıntı da gerekiyorsa büyük tabloyu DirectQuery modunda tutan bileşik model ya da ayrıntıya gitme sayfası kurmak daha dengelidir.
Otomatik tarih ve saati kapatınca ne olur?
Gizli tarih tabloları modelden kalkar, model küçülür. Ancak tarih sütunlarının yıl, çeyrek, ay hiyerarşisi artık otomatik gelmez. Kendi tarih tablonuzu kurup ilişkilendirmeniz gerekir. Zaman zekası ölçüleri de bu tabloya dayanmalıdır. Zaten ortak bir tarih tablosu kullanıyorsanız kapatmak güvenli bir kazançtır.
Performans analizörü model boyutunu da gösterir mi?
Hayır. Performans analizörü, rapor sayfasındaki görsellerin yüklenme ve sorgu sürelerini ölçer; yavaş görsel ya da DAX sorununu bulmak içindir. Model boyutu için tablo ve sütunların bellek payını gösteren araçlara ihtiyaç vardır. İki sorun birbirinden bağımsızdır; küçük model de yavaş ölçüye sahip olabilir.