POWER QUERY HATA AYIKLAMA

Power Query PQ teal logosu yanında büyük kırmızı X işaretli kırık zincir halkası hata yakalama metaforu

Power Query'de en sık duyulan cümle şudur: "Geçen ay çalışıyordu, bu ay patladı." Sorgu kurulduğunda kaynak veriye göre tasarlanmıştır; kaynak veri değişince sorgu kırılır. Bu davranış başlangıçta sinir bozucu görünür ama aslında Power Query'nin çalışma şekliyle ilgilidir. Hata ayıklama becerisi Power Query kullanıcısının olgunluğunu belirleyen kritik bir yetkinliktir.

En Sık Üç Hata Tipi

Power Query hataları üç ana kategoride toplanır:

  1. Kolon adı değişikliği: "Tarih" kolonu kaynak verinin yeni dosyasında "Belge Tarihi" olarak gelmiştir. Sorguda "Renamed Columns" adımı eski adı bekliyor; bulamayınca kırılır.
  2. Veri tipi sorunları: Sayı kolonunda artık bir text değer var, tarih kolonunda bir metin. "Changed Type" adımı bu dönüşümü yapamayınca hata fırlatır.
  3. Kaynak bulunamaması: Dosyanın yolu değişmiş, klasör silinmiş, izinler kaybolmuştur.

Bu üç kategori tüm Power Query hatalarının yaklaşık yüzde doksanını oluşturur. Tanıyıp doğru yaklaşımla çözmek deneyimle gelir; ilk birkaç ay yeni başlayan kullanıcılar bu hataları korkutucu bulur, sonra sıradanlaşır.

Hata Mesajını Okumak

Power Query hata mesajları İngilizce ve teknik olabilir ama dikkatli okunduğunda neyin yanlış olduğunu söyler. "The column 'X' of the table wasn't found" mesajı X kolonunun olmadığını söyler. "DataFormat.Error: We couldn't convert to Number" sayıya çevirme hatasıdır. "DataSource.NotFound" kaynak bulunamadı anlamına gelir. Hata mesajının ilk satırı çoğunlukla problemin tipini söyler; satırın sonu ise hangi değer veya hangi adımda olduğunu işaret eder.

Sorgu adımları listesinde kırmızı işaretle gözüken adım hatanın oluştuğu yerdir. Bu adıma tıklanır, önizleme panelinde önceki ve sonraki durumu karşılaştırılır. Çoğu zaman hatanın kaynağı önceki adımda atılan bir kararla ilişkilidir.

Sık görülen hata mesajları ve gerçek anlamları:

Hata MesajıGerçek Sebepİlk Bakılacak Yer
The column 'X' of the table wasn't foundKaynak yapısında kolon adı değiştiRenamed Columns / Choose Columns adımı
DataFormat.Error: We couldn't convert to NumberSayı kolonunda metin değer varChanged Type adımı, kaynak veri
DataSource.NotFoundDosya yolu veya klasör değiştiSource adımı
Expression.Error: The key didn't match any rowsMerge anahtarı eşleşmediLookup tablosu, anahtar tipi
DataSource.Error: Could not connectKimlik bilgileri süresi dolduData source settings, kimlik kaynakları
Power Query sorgu adımları listesi panelinde kırmızı uyarı işaretli adım vurgusu ve önceki sonraki önizleme karşılaştırması

Kolon Adı Değişimine Karşı Dayanıklılık

"Renamed Columns" adımı çoğu zaman gereksiz yere kullanılır. Kaynak veride "Order_Date" gelen kolon hemen "Sipariş Tarihi" diye yeniden adlandırılır. Bu adım kaynak sütun adı değiştiğinde tüm sorguyu patlatır. Daha dayanıklı yaklaşım kaynak adıyla kalmaktır; gerçekten gerekli olmadıkça yeniden adlandırma yapılmaz.

Eğer adlandırma gerekiyorsa "Choose Columns" adımı yerine "Remove Other Columns" alternatifi kullanılır. İlki spesifik kolonu kaybedince patlar; ikincisi belirtilmemiş tüm kolonları kaldırır ama eksik kolonu hata vermez. Bu küçük tercih sorguyu çok daha dayanıklı yapar.

Tip Dönüşümü Yönetimi

"Changed Type" adımı Power Query'nin otomatik eklediği en yaygın adımdır ama aynı zamanda en sık hata kaynağıdır. Power Query yüklemeden sonra "ben bu kolonu sayı olarak tanımladım" der; sonra kaynaktan bir text geldiğinde patlar. Bu davranışı kontrol etmenin yolu otomatik tip atamayı kapatmaktır (Query Options > Type Detection).

Yerine her veri tipini manuel olarak en geç adımda atamak iyi pratiktir. Önce tüm temizleme yapılır, sonra tipler atanır. Eğer dönüştürülemeyen değer varsa "Replace Errors" ile null'a çevrilir veya "Remove Errors" ile hatalı satır atılır. Bu açık yönetim sessiz kırılmaları önler.

Try Otherwise Yapısı

Power Query'nin M dili try otherwise yapısını sunar. Daha ileri ayrıntılar Power Query resmi belgelerinde ele alınır. Bir ifade hata verirse otherwise dalı çalışır. try [Tutar] otherwise null yazıldığında, tutar kolonu hata verirse null yazılır. Bu yapı belirli hatalarla başa çıkmanın programatik yoludur.

Daha güçlü try ifadesi try [Tutar] olarak yazıldığında bir record döner; record içinde HasError, Value ve Error.Message alanları olur. Bu yapı ile hatanın tipini ve mesajını yakalayıp ona göre davranılır. Karmaşık iş kuralı doğrulamaları bu yapıyla uygulanır.

Adım Adım Test

Karmaşık sorguda hata bulmak için adım adım ilerlemek doğru yöntemdir. Önizleme panelinde her adımda ne gerçekleşiyor doğrulanır; hata genelde bir önceki adımın sonucunda gizlidir. Bu yöntem ilk başta yavaş görünebilir ama hata bulma süresini ciddi şekilde kısaltır.

Geliştirme sırasında ara adımlar olarak Table.RemoveColumns veya Table.SelectRows kullanmak yerine "Table.Buffer" kullanmak sorgu performansını artırabilir; veri belleğe alınır ve sonraki adımlar daha hızlı çalışır. Bu numara büyük sorgularda hata ayıklamayı hızlandırır.

Sorgu Yorumları

Power Query'de M dilinde yorum yazmak mümkündür; tek satırlık yorum için //, blok yorum için /* */. Karmaşık adımlara yorum eklemek sonraki bakım için değerlidir. Üç ay sonra sorguyu açan kişi yorumdan o adımın neden ekendiğini anlar.

Adım adlandırması da bir tür belgeleme olur. Power Query otomatik olarak "Filtered Rows", "Removed Columns" gibi genel isimler verir. Bunları "Boş Tutarları Kaldır", "Sadece Aktif Müşteriler" gibi açık isimlerle yeniden adlandırmak okumayı kolaylaştırır.

Yenileme Hatalarının Takibi

Sorgu Excel veya Power BI'da yenilendiğinde hata oluşursa Refresh Failed bildirimi gelir. Detay paneli açıldığında hangi sorgunun, hangi adımda hata verdiği gözükür. Bu detay manuel olarak sorgu üzerinde tekrar üretilmeli ve düzeltilmelidir.

Power BI servisi tarafında yenileme hataları daha sistematik izlenir. Dataset settings altında yenileme geçmişi gözükür; hangi tarih başarılı, hangi başarısız oldu, başarısızlık sebepleri ne olduğu görünür. Periyodik yenilemelere bildirim eklemek de kritik bir disipline parçasıdır.

Power BI dataset yenileme geçmişi listesinde tarih satırları yeşil başarılı tikler ve kırmızı başarısız çarpı işaretleri

Önleyici Disiplin

Hata ayıklama becerisi önemli ama daha önemlisi hata oluşmamasıdır. Bunun için sorgu tasarımında bazı kurallar uygulanır: kaynak verinin değişebilirliğini öngör, esnek adımlar kullan, tip dönüşümünü en sonda yap, kolon adı bağımlılıklarını minimize et. Bu disiplin sorgunun yıllar boyunca minimum bakımla çalışmasını sağlar.

Power Query'nin esas gücü çalışan akışlardan değil sürekli çalışan akışlardan gelir. Power Query ve Power Pivot eğitimi bu kalıcılık prensiplerini gerçek senaryolarla işler.

Sıkça Sorulan Sorular

Otomatik tip atamasını kapatmalı mıyım?

Üretim sorguları için evet. Power Query'nin otomatik tahmini yenileme sırasında değişen veride patlamalara yol açar. Manuel tip atama disiplini başlangıçta yavaş ama uzun vadede dayanıklı.

Renamed Columns adımı tamamen kaldırılmalı mı?

Tamamen değil ama bilinçli kullanılmalı. Kaynak sütun adı zaten anlaşılır ise yeniden adlandırma gereksizdir. Sadece final sunum için (pivot tablo başlığı gibi) gerekirse yapılır.

Hata veren satırı tablonun dışına nasıl alırım?

Home menüsünden Remove Errors veya Replace Errors seçilir. Hata satırları başka bir tabloya yönlendirilmek isteniyorsa try ... otherwise yapısıyla hatalı satırlar işaretlenir ve ayrı bir sorguda toplanır.

Yenileme hatasını e-postaya nasıl ileteyim?

Power BI'da dataset settings altında yenileme hatası alıcılarına e-posta gönderme seçeneği var. Daha gelişmiş bildirim için Power Automate akışı dataset yenileme olayını dinleyebilir.

M dili Power Query için zorunlu mu?

Temel kullanım için hayır; arayüz çoğu işi yapar. Gelişmiş senaryolar (özel fonksiyonlar, parametrik sorgular) için M öğrenmek gerekir. Birkaç temel yapı bilmek bile sorgu becerisini büyük ölçüde artırır.

Sorgu çok yavaş, hata vermeden uzun sürüyor. Ne yapmalı?

Adım sırası önemli. Filtrelemeyi en başa al; sonraki adımlar daha az satırla çalışır. Gereksiz Join ve Pivot/Unpivot adımlarını gözden geçir. Table.Buffer kritik adımları belleğe alabilir.