POWER QUERY VERİ TEMİZLEME STANDARDI

Power Query teal logosu yanında STANDART yazılı kırmızı yuvarlak mühür ve üç katmanlı temiz blok

İlk Power Query sorgunuzun adımları "Changed Type", "Removed Columns", "Filtered Rows1", "Filtered Rows2"... üç ay sonra bu sorguya bakan kişinin ne yapıldığını anlaması imkânsız. Power Query'nin sessiz felaketi: kolay öğrenilir, dağınık bırakılır.

Veri temizleme standardı, bu dağınıklığı önleyen disiplin seti. Bir sorgu yazılırken küçük bir özen, altı ay sonra başka birinin (veya yine sizin) saatlerini kurtarıyor. Bu standardın özü şudur: sorgu okunabilir olsun, adımları anlam taşısın, kaynakla bağlantı performanslı olsun.

Üç Katmanlı Sorgu Yapısı

Karmaşık veri akışlarında pratik bir mimari: sorguları üç katmana ayırmak.

  • Staging: Ham veriyi okur, minimum dokunma. "stg_Satis", "stg_Musteri".
  • Transform: Tip dönüşümü, temizleme, filtreleme, birleştirme. "trans_Satis_Temiz".
  • Model: Rapora yüklenecek son tablo. "Satis", "Musteri".

Bu yapıda her katman bir önceki katmandan beslenir. Staging sorguları "Enable Load = false" ile sadece referans olarak kullanılır — Power BI veya Excel'e yüklenmez. Sadece model katmanı yüklenir.

Yapısal avantajı: kaynak değişirse sadece staging sorgusu güncellenir; transform ve model katmanı dokunulmaz. Geliştirme hızı ve hata yönetimi açısından büyük fark yaratıyor.

Adım İsimlendirme

Power Query'nin otomatik verdiği adlar ("Changed Type", "Removed Columns") çalıştığı an silinir, yerine anlam taşıyan ad yazılır. Sağ tık → Rename.

Örnek bir staging → transform akışı:

1. Source (Excel'den)
2. PromotedHeaders → BasliklariBelirle
3. ChangedType → TipleriAyarla
4. RemovedColumns → KullanılmayanKolonlariCikar
5. FilteredRows → 2026YilindakileriFiltrele
6. MergedQueries → MusteriBilgisiyleBirlestir
7. RemovedDuplicates → MukerrerKayitlariTemizle

Üç ay sonra bu sorguya bakan biri ne yapıldığını okuyup anlıyor. Otomatik adlar bırakıldığında "Changed Type" tek başına ne tipi değiştirildiğini söylemiyor; tek tek inceleme gerektiriyor.

Tip Yönetimi: Erken ve Net

Power Query'nin en yaygın hatası, tip dönüşümlerini geç yapmak veya yanlış sırayla yapmak. Sağlam pratik: kaynaktan veri geldikten hemen sonra her kolonun tipini netleştir.

  • Tarih kolonları → Date veya DateTime
  • Sayısal kolonlar → Whole Number veya Decimal Number
  • Metin kolonları → Text
  • True/False alanları → Logical

"Any" tipinde bırakılan kolonlar performans sorunu yaratıyor; Power Query her hesapta tipi yeniden anlamaya çalışıyor. Erken tip atama bu yorgunluğu engelliyor.

Önemli detay: birden fazla kez tip değiştirme. Eğer aynı kolonun tipi farklı adımlarda iki kez değiştirilirse, Power Query her seferinde tüm sorguyu yeniden hesaplar. Tip değişimini tek bir adımda yapmak performans açısından kritik.

Query Folding

Power Query'nin görünmez ama önemli özelliği: sorguyu kaynak veritabanına (SQL Server, Oracle, vb.) iterek orada çalıştırma. Adım adım uygulanışı Power Query resmi belgelerinde açıklanır. Buna "query folding" deniyor. Power Query yerine veritabanı çalışıyor — çok daha hızlı.

Folding bazı işlemlerde otomatik çalışır: filtreleme, grupla, basit dönüşümler. Ama bazı işlemler folding'i kırar:

  • Custom Column ile karmaşık formül
  • Bazı M dili fonksiyonları (özellikle Power Query'ye özgü olanlar)
  • Karmaşık dönüşümler ardı ardına

Folding'in kırılıp kırılmadığını anlamak için Applied Steps'te sağ tık → "View Native Query" seçeneği. Eğer SQL gösterirse folding aktif; gri görünürse folding kırılmış. Performans kritik olan büyük tablolarda bu kontrol şart.

Üç dikey katman kartı Staging Ham Veri ve Transform Dönüşüm ile Model Yayın sorgu mimarisi

Veri Kalitesi Kontrolü

Power Query'de veri temizliği yaparken aynı anda veri kalitesi kontrolü da yapılabilir. Bir "kalite raporu" sorgusu ekleyip şu metrikleri çıkarmak pratik:

  • Satır sayısı (önceki güne göre nasıl değişti)
  • Boş alan oranı (önemli kolonlarda)
  • Aykırı değer sayısı (negatif tutar, gelecek tarih)
  • Mükerrer kayıt sayısı

Bu metrikler ana raporun bir köşesinde küçük bir tablo olarak gösterilir. Veri kaynağında problem olduğunda sayılar değişir; rapor sahibi sabah dosyayı açtığında "veri normal görünmüyor" sinyalini hemen alır.

Parametre Kullanımı

Aynı sorguyu farklı senaryolarda kullanmak için parametreler işe yarar. Tarih aralığı, dosya yolu, yıl filtresi — bunlar sorguya hard-coded yazılmak yerine parametre olarak tanımlanır.

Parametre, Power Query'de Manage Parameters menüsünden oluşturulur. Sonra adımlarda kullanılır:

= Table.SelectRows(Source, each [Tarih] >= BaslangicTarihi)

Bu yapı raporun farklı tarih aralıklarıyla çalıştırılmasını sağlar; her seferinde sorgunun kendi değiştirilmesi gerekmez. Çoklu dönem analizinde, eğitim ortamında, test senaryolarında çok kullanılır.

Dokümantasyon

Her sorgunun bir "açıklama" alanı vardır. Sorgu adına sağ tık → Properties → Description. Buraya 2-3 cümlelik özet yazmak altı ay sonraki kullanıcıyı kurtarıyor.

Tipik açıklama: "Satış verisini ERP'den çeker, ürün katalogla birleştirir, 2024 öncesi kayıtları filtreler, model katmanına yükler. Günlük yenilenmesi gerekiyor."

Bu küçük disiplin, model bir kez kurulduktan sonra kalıcılığı doğrudan etkiliyor. Yeni katılan ekip üyesi dokümantasyonu okuyup mantığı kavrıyor; "bu sorgu ne yapıyor" araştırması yapmaya gerek kalmıyor.

Tekrar Kullanılabilir Fonksiyonlar

Aynı dönüşüm birden fazla sorguda kullanılıyorsa, Power Query'de "custom function" oluşturmak temizliği koruyor. Örnek: müşteri adını standartlaştırmak (boşluk temizle, baş harfler büyük). Tek bir fonksiyon yazılır, beş farklı sorguda kullanılır.

Bu pratik kod tekrarını ortadan kaldırıyor. Bir gün standartlaştırma kuralı değişirse tek fonksiyon güncellenir; beş sorgu otomatik etkileniyor. kalıcılık açısından kazanım büyük. Power Query disiplinini sistematik geliştirmek için Power Query ve Power Pivot eğitimi katmanlı yapı, fonksiyon yazma ve performans pratiklerini birlikte ele alıyor.

Sıkça Sorulan Sorular

Power Query staging katmanı şart mı?

Küçük sorgularda atlanabilir. Karmaşık modellerde — 10+ kaynak tablo, çok adımlı dönüşüm — staging katmanı bakım kolaylığını dramatik artırıyor. Kaynak değiştiğinde sadece staging güncellenir; transform ve model katmanı dokunulmaz. Bir kez kurulan disiplin yıllar boyu zaman kazandırıyor.

Query folding nasıl kontrol edilir?

Applied Steps panelinde adım üzerine sağ tık → View Native Query. SQL kodu gösterirse folding aktif; seçenek gri ise folding kırılmış. Folding kırıldığı andan itibaren tüm veri <strong>Power Query</strong> motoruna çekilir; büyük tablolarda performans dramatik düşer. Folding'i koruyan şekilde adımlar düzenlenmelidir.

Tip dönüşümü ne zaman yapılmalı?

Mümkün olan en erken aşamada — kaynaktan veri geldikten hemen sonra. Geç tip atama performans sorunu yaratıyor; <strong>Power Query</strong> her hesapta tipi yeniden anlamaya çalışıyor. Tek seferde tüm kolonların tipini ayarlamak, sonradan tek tek değiştirmekten çok daha verimli.

Custom Column ne zaman kullanılmalı?

Yerleşik dönüşümlerle yapılamayacak hesaplar için. 'Boyut kategorisi' (küçük/orta/büyük) gibi koşullu sınıflandırma, iki kolonu birleştirip yeni metin üretme, karmaşık tarih hesabı. Ancak custom column query folding'i kırabilir; büyük SQL tablolarında dikkatli kullanılması gerekiyor.

Power Query parametresi nerede saklanır?

Power Query dosyasının içinde, model meta verisinde saklanıyor. Manage Parameters menüsünden tanımlanır; varsayılan değer, izin verilen değerler listesi, açıklama atanabilir. Excel veya Power BI'da kullanıcıya görünmez; ama veri yenileme öncesi değer değiştirilebilir.

Adım isimlendirme gerçekten önemli mi?

Üç ay sonra modeli açan kişi için kritik. Otomatik isimler ('Changed Type', 'Removed Columns') hangi tipte ne değiştirildiğini söylemiyor; tek tek incelemek gerekiyor. Anlamlı adlar — 'TarihTipiniDuzelt', 'EskiKayitlariCikar' — sorguya ne yaptığını okuyarak anlatıyor. Disiplin başta yorucu, sonra hayat kurtarıcı.

Veri kalitesi kontrolünü Power Query'de mi yoksa raporda mı yapmalı?

İkisinde de mümkün ama farklı amaçlar. <strong>Power Query</strong>'de kontrol veri akışını durdurur — kalite kötüyse rapor güncellenmiyor (Conditional flow). Raporda kontrol bilgilendiriyor ama akış devam ediyor. Kritik raporlarda Power Query tarafında kontrol, bilgilendirme amaçlı ise raporda gösterim mantıklı.