Refresh anındaki bu hatadan tamamen kurtulun!

Bu yazıda Power BI’da, kaynak tabloda sütun adı değişince aldığımız hatalar için kullandığım birkaç yöntemi yazacağım.

Örneğimiz için, Excel’den Satışlar tablosunu Power BI Dekstop’a çektim. İlk çekerken içerisinde Marka diye bir sütun vardı. Daha sonra Excel’e dönüp bu sütunun adını “Marka Kodu” olarak değiştirip kaydedip kapattım. Power BI’ya geçip refresh ettiğimde kaynak olarak tanımlı tablo içinde Marka Kodu sütununu bulamadığı için aşağıdaki hatayı aldım.

No alt text provided for this image

Eğer şuan olduğu gibi hangi sütunun değiştiğini biliyorsak kolayca aşağıdaki yol izlenerek mevcut hata giderilebilir;

 Home Sekmesi’nden Edit Power Queries butonuna tıklayarak Power Query penceresine geçeriz. Burada Advanced Editör butonuna tıklayıp verileri içeri çekerken Power Qouery tarafından otomatik oluşturulmuş M dili komutlarını görürüz.

No alt text provided for this image

Yukarıdaki komut dizisinde   #”Changed Type” satırında; Power Query, tablomuzdaki sütunların veri tipleri algılamaya çalışmaktadır. Burada default olarak her sütunun adı yazar. Alttaki görseldeki adım sırasıyla, Marka gördüğümüz yeri Marka Kodu olarak değiştirip kaydederek kapatırsak hatayı gidermiş oluruz. Böylece Refresh esnasında hata almayız.

No alt text provided for this image

Ek bilgi olarak; sütun adı değiştiğinde aldığımız hatayı sütun silindiğinde de alıyoruz.  Çözüm için bir üst ekrandaki “ChangedType” satırından ilgili sütunu bulup süslü parantezleriyle beraber silebiliriz.

Eğer bireysel olarak kontrol altında tutabileceğimiz bir tablo değilse ve olası hatalarda, hatanın hangi sütundaki isim değişikliğinden kaynaklandığını bulamayacaksak ne yapmalıyız?

Bu durumda,Power Query’nin sütun isimleri yerine sütun numaralarını (indeksleri) kullanmasını sağlamalıyız. Bunun için Power Query adımlarımıza, veri tipi dönüşümünden önce columnList komutunu ekleriz, böylece refresh anındaki kaynaktaki mevcut sütunların dinamik olarak listelenmesini sağlarız. 

No alt text provided for this image

Daha sonra da bu listedeki sıraya göre tiplerinin belirlenmesini sağlayabiliriz. Bunun için mevcut kodunuza bir columnList satırı ekleyip, sütun isimleri yazan yerleri de sırasıyla aşağıdaki koyu renkli alanlardaki gibi değiştirmelisiniz.

let

Source = Excel.Workbook(File.Contents(“C:\Users\Bahar DURMUŞ\Desktop\Projeler\Retail Sales.xlsx”), null, true),

Satislar_Table = Source{[Item=”Satislar”,Kind=”Table”]}[Data],

columnList=Table.ColumnNames(Satislar_Table),

#”Changed Type” = Table.TransformColumnTypes(Satislar_Table,

 {

 {columnList{0}, type text},

     {columnList{1}, type any},

     {columnList{2}, type text},

     {columnList{3}, type text},

     {columnList{4}, Int64.Type},

     {columnList{5}, Int64.Type},

     {columnList{6}, type date}

   })

  in

  #”Changed Type”

NOT: büyük küçük harf duyarlıdır. Dikkat ediniz.

Bu yöntemde, Excel’de sütun başlıkları değişse bile hata almazsınız. Çünkü Refresh esnasında sütun başlıklarını kendisi bir daha listeler ve sonra veri tipi değişimi adımına geçer. Ancak varolan bir sütun kaldırılırsa yine hata alırız. Çünkü listeden kaldırılsa bile, #”Changed Type” adımında manuelyazdığımız kısımda fazla indeks kalmış olur. (Bu kısım için önerisi olan varsa yoruma yazabilirsiniz)

Veri Tipi Dönüşümünü Tamamen Kaldırma Yöntemi

#”Changed Type” bölümünü tamamen kaldırabiliriz. Böylece yalnızca tabloyu içeri çeker, sütunların veri tipleri ile ilgilenmez. Tek tek sütun kaydı yazılmadığı için de sütun başlığı değişimi ya da sütun silinmesi gibi durumlarda bir hata ile karşılaşmayız.

Bu yöntemde, verileri içeri aldıktan sonra veri tiplerini bizim tanımlamamız gerekir.

let

 Source = Excel.Workbook(File.Contents(“C:\Users\Bahar DURMUŞ\Desktop\Projeler\Retail Sales.xlsx”), null, true),

Satislar_Table = Source{[Item=”Satislar”,Kind=”Table”]}[Data]

in

#”Satislar_Table”

Refresh anındaki tüm hataları atlatsanız bile, değişen ya da silinen sütunlarınızı Power BI Rapor ekranınızda bir grafikte kullandıysanız, artık mevcut sütun bulunamadığı için grafiğiniz de hata verecektir. Refresh anındaki hatayı atlattıktan sonra, kaynaktan gelen yeni sütun isimlerinizi yeniden grafiğinizin üzerine sürükleyip bırakarak grafiğinizi hatadan kurtarabilirsiniz.

Sevgiler

#ilovepowerbi