Enable Load, Include In Refresh

Güncelleme: 17.03.2018 "Include in report refresh" özelliği tablo tek başına kullanıldığında sorunsuz çalışıyor. Fakat "refresh etme" dediğiniz tabloyu, Power Query tarafında bir başka sorguda "refere ediyorsanız" -örneğin bir başka tabloyla Append ya da Merge etmek gibi- verisini güncellemeye devam ediyor. Sadece değişen verileri çekmek amacıyla bu tekniği kullanıyorsanız bu yazıya bir göz atın.

Hazır Power Query'den devam ediyorken, performansı etkileyebilecek önemli konulardan birini daha açalım.

Normal durumda, Power Query tarafına çektiğiniz, üzerinde işlem yaptığınız her sorgu Power BI tarafına aktarılır. Oysa bazı sorguları sadece ara işlemler yapmak,  transformasyonu kolaylaştırmak, ya da yeni sorgular üretmek için bir "ara aşama sorgusu" olarak kullanırız.

Örneğin, farklı para birimlerinde olabilecek bir fatura veya sipariş satırının TL değerini bulmak için, "Kur" tablosundan ilgili günün kurunu bulup çarptığımızda artık "Kur" tablosuna ihtiyacımız kalmaz. Bize lazım olanı bulmuşuzdur, "Kur" tablosu ile işimiz bitmiştir.

Ya da, statik bir tarih tablosu kullanıyorsak bir kez tabloyu aldıktan sonra tekrar tekrar okuyup "refresh" etmemize gerek yoktur. Bir kez okumak yeterlidir.

Power BI tarafına aktarılan her tablo/sorgu, hafızadan yer! Tabloyu gizleseniz de -"Hide" etseniz de- bu değişmez. PQ tarafında kullandığımız ama PBI tarafında bize lazım olmayan tabloları "load" etmemeliyiz! Yani yüklememeliyiz. Güncellenmesine gerek olmayan tabloları da "Refresh" etmemeliyiz!

Bir örnek yapalım: Meetup grubumuzla bugüne kadar üç kez toplandık. Her toplantıya gelen arkadaşlar olduğu gibi, sadece birine veya ikisine gelenler de vardı. Katılan arkadaşlarla ilgili basit bir model yapmak istiyoruz diyelim.

Katılımcı listesi üç farklı Excel dosyasında. Her bir  dosyayı "Get Data–>Excel" diyerek çekiyorum.

Her üç dosyanın da formatı aynı.

Bu üç tabloyu birleştirip tek bir katılımcı tablosu oluşturalım;

Home tabındayken "Append Queries"  buton listesinden "Append Queries As New" seçiyorum.

"Add" butonunu kullanarak üç tabloyu da "Tables to append" bölümüne taşıyorum.


Üç tablonun birleşiminden oluşan yeni tabloyu "Tüm Katılımcılar" olarak isimlendirip "Close & Apply" diyorum, yani PBI tarafına aktarıyorum.

Yazının başında da belirttiğim gibi,  "by default", PQ tarafına çektiğiniz, işlediğiniz her sorgu PBI tarafına aktarılır. Bize şu an lazım olan tek tablo aslında sadece "Tüm Katılımcılar" tablosu. Diğerlerine ihtiyacımız yok. Gereksiz tabloları sağ tıklayıp gizleyebiliriz (Hide in Report View). Fakat bu hafızada yer kaplamalarını engellemez. Bu tabloları "yüklemiyor" olmamız lazım. Çünkü artık ihtiyacımız yok!

PQ tarafında her üç tabloyu da sağ tıklayıp " Enable Load" opsiyonlarını kaldırıyorum.

Artık PBI tarafında tek tablomuz var.

PQ tarafında ara aşamalarda kullandığınız tabloları/sorguları PBI tarafına yüklemeyin, hem gereksiz hafıza işgal etmiş oluruz, hem de model tarafında gereksiz bir karmaşa yaratırız.

İkinci olarak modele statik bir Tarih tablosu ekliyorum. Ekledikten sonra ise "Include in Report Refresh" opsiyonunu kaldırıyorum.

"Tarih" tablosu lazım, dolayısıyla yükleyeceğiz, ama bir kez okuduktan sonra sürekli "Refresh" etmeye gerek yok, tarihler değişmiyor!

Artık modelimizi kurabiliriz!

PQ tarafında, veri modelinin gereksinimlerine göre bazı sorgular/tablolar bir ara aşama olarak kullanılır, tabloları birleştirir, "join" eder, bir başka tablodan ilgili değeri bulup nümerik hesaplama yaparsınız, yeni tablolar/sorgular üretirsiniz.

Bunların tamamı "View" tabından "Query Dependencies" seçtiğinizde karşınıza çıkar. Hangi sorgular, hangi diğer sorguların işlenmesiyle oluşturuldu, hangilerini yüklüyorsunuz / yüklemiyorsunuz görebilirsiniz.

Yaklaşan Power BI Eğitimleri

Uçtan Uca Power BI,  17-18 Aralık
DAX ve Veri Modelleme, 24-25 Aralık