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.

Enable Load, Include In Refresh” üzerine 6 yorum

  1. Merhaba,
    Aylık verileri içeren excel dosyalarım var. Bunları ayrı ayrı PBI'a yükleyip bu yazıda gösterdiğiniz yöntemle "Append Queries" butonuyla dosyaları birleştiriyorum. Burada yapmak istediğim şöyle bir şey var: içinde bulunduğumuz ayın dosyası ay bitene kadar güncelleniyor ama eski aylar artık güncellenmiyor. Önceki aylara ait dosyalardan hem "enable load", hem de “Include in Report Refresh" özelliklerini kaldırıyorum; daha sonra güncel ay dosyası güncellensin diye all refresh butonuna basıyorum; ancak bu eski aylara ait dosyalar güncellenemediği için hata veriyor.
    Nerede hata yapıyor olabilir acaba?

    Teşekkürler

  2. Önceki Ay 1 + ÖA 2 + ÖA 3 + Güncel Ay –> Append Queries As New dediniz. Yeni bir sorgu oluştu.

    ÖA 1, ÖA 2 ve ÖA3 : Enable Load + Include in Report Refresh seçenekleri işaretlenmemiş.
    Güncel Ay: Refresh işaretli, Enable Load işaretsiz.

    Yeni sorgunun da her iki opsiyonu işaretli.

    Bunun çalışması lazım. Hata mesajı başka bir şeyle ilintili olmalı. Yazarsanız yorum yapmaya çalışırım.

    Kolay gelsin.

  3. Dediğiniz gibi yaptım. ÖA1 datasında artık işim olmadığını düşünerek o datayı çektiğim alan olan bilgisayarımın masaüstünden sildim.
    Daha sonra PBI'da refresh yaptığımda şöyle hata alıyorum:

    Refresh
    YeniSorguAdı
    Cound not find file 'ÖA1 dosyasının yolu'

  4. PowerQuery çalıştığı veri kaynaklarını "karşısında görmek" ister, load/refresh etsin ya da etmesin periyodik bağlantısını kontrol eder. Özellikle birleştirdiğiniz yeni sorgu üzerinde işlem yapıyorsanız, sorgunun kaynağı olan diğer alt veri kaynaklarını görmek zorunda mutlaka.

    Dosyayı tekrar tanıtırsanız sorun çözülür gibi görünüyor.

    Bu yazıya da bir göz atın lütfen.

  5. Bağlantısını verdiğiniz yazıyı okudum, her şey aydınlandı 🙂

    Çok teşekkür ederim, siteniz alanında eşsiz bir kaynak.

Yorum yapın

Yaklaşan Power BI Eğitimleri

Uçtan Uca Power BI, 14-15 Nisan

DAX ve Veri Modelleme, 28-29 Nisan