Ana içeriğe geç
Kesit Power BI
Orta · Veri Hazırlama

Power Query: birleştirme, ekleme, özetten çıkarma

Merge (join türleri), Append, Unpivot, Group By, koşullu sütun, parametreler ve sorgu katlama.

Uygulamada aç, 11 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Sorguları birleştir (Merge)

İki tabloyu ortak bir sütun üzerinden yan yana getirir; SQL'deki JOIN'in karşılığıdır. Giriş → Sorguları Birleştir.

Birleştirme türüSonuç
Sol dışSoldaki tüm satırlar + sağdaki eşleşenler (en yaygın)
Sağ dışSağdaki tüm satırlar + soldaki eşleşenler
Tam dışİki taraftaki tüm satırlar
İçYalnızca iki tarafta da eşleşenler
Sol karşıt (anti)Solda olup sağda eşleşmeyenler (ör. hiç sipariş vermemiş müşteriler)
Sağ karşıtSağda olup solda eşleşmeyenler

Birleştirmeden sonra yeni bir “tablo” sütunu oluşur; başlığındaki genişlet düğmesiyle istediğin sütunları seçersin.

Sorguları ekle (Append)

Aynı yapıdaki tabloları alt alta ekler (SQL'de UNION ALL). Her ay ayrı dosya gelen satış raporları için idealdir. Daha da iyisi: Klasör bağlayıcısı, bir klasördeki tüm dosyaları tek seferde birleştirir; klasöre yeni dosya eklendikçe yenilemede kendiliğinden gelir.

Özetten çıkar (Unpivot)

Excel'den gelen “Ocak | Şubat | Mart …” sütunlu bütçe tablosunu modele uygun hâle getirir:

KategoriOcaŞubKategoriAyHedef
Kitap4.0004.200→KitapOca4.000
Spor6.5006.100KitapŞub4.200

Kategori sütununu seç → Dönüştür → Diğer Sütunların Özetini Kaldır. Bu modeldeki Hedefler tablosu tam olarak bu biçimdedir.

Gruplandırma ve koşullu sütun

Parametreler ve sorgu katlama

Uzmanlaş

Birleştir mi, ekle mi? İlk karar

Satış operasyonundan iki dosya geliyor: bayilerin Ocak satışları ve Şubat satışları. Bir de bayi listesi (bayi adı, bölge, açılış tarihi). Hangi dosya hangi işlemle gelir?

SoruİşlemSonuç
Aynı sütunlar, farklı dönem mi?Ekle (Append)Satır sayısı artar, sütunlar aynı kalır
Bir tabloya başka tablodan bilgi mi ekleniyor?Birleştir (Merge)Sütun sayısı artar; eşleşmeyen satır birleştirme türüne göre kalır ya da düşer

Ocak + Şubat = Ekle. Satış + bayi bölgesi = Birleştir. Ama çoğu zaman birleştirmeye hiç gerek yoktur: bayi listesini ayrı bir boyut tablosu olarak yükleyip modelde ilişki kurmak, bölgeyi satış tablosuna kopyalamaktan daha temizdir. Birleştirmeyi; anahtar yoksa, iki kaynağı tek boyutta toplamak gerekiyorsa ya da bir arama tablosu modelde gereksiz kalacaksa kullan. Join türlerinin ayrıntısı ve birleştirme sonrası neden null geldiği Power Query ileri dersinde.

“Yeni olarak” seçenekleriGiriş → Sorguları Birleştir / Ekle düğmelerinin açılır okunda “Yeni olarak” seçenekleri var. Yeni olarak birleştirmek, mevcut sorguyu bozmadan üçüncü bir sorgu üretir; kaynak sorgular ara adım olarak kalır, yüklemelerini kapatırsın.

Eklemede sütun adı uyuşmazlığı

Ekleme sütunları sırasına göre değil adına göre eşler. Ocak dosyasında Tutar, Şubat dosyasında Tutar TL yazıyorsa sonuçta iki ayrı sütun oluşur: Ocak satırlarında Tutar TL null, Şubat satırlarında Tutar null. Toplam doğru gibi görünür ama her ölçü yarım çalışır. Önlem:

  • Eklemeden önce her kaynakta sütunları aynı adla yeniden adlandır.
  • Eklemeden sonra sütun profilinde (Görünüm → Sütun profili) beklenmedik null oranına bak.
  • Klasörden birleştirmede örnek dosya dönüşümü tüm dosyalara uygulanır; adı farklı olan dosya bu dönüşümde hata verir ve sorun erken görünür.

Gruplandırmanın gelişmiş hâli

Gruplandırma ölçütü iletişim kutusunda Gelişmiş’i seçince birden çok gruplama sütunu ve birden çok toplama ekleyebilirsin: aynı adımda bayi başına toplam tutar, satır sayısı ve en son tarih. İşlem listesindeki Tüm satırlar seçeneği ise her grubu iç içe bir tablo olarak tutar; sonra her grubun içinden “en son satır” ya da “en büyük tutar” gibi bir seçim yapmak için kullanılır. Ama dikkat: modelde ayrıntıyı tutup DAX ile toplamak çoğu zaman daha esnektir. Gruplandırmayı, ayrıntının modelde hiç gerekmediği durumlar (ör. günlük ham log’u saatlik özete indirmek) için sakla.

Koşullu sütun ve arkasındaki M

Sütun ekle → Koşullu sütun. Sihirbaz koşulları yukarıdan aşağı dener ve ilk eşleşende durur. Bu yüzden sıra önemlidir: “Tutar > 1000 ise Büyük” koşulunu “Tutar > 2000 ise Çok büyük” koşulunun üstüne yazarsan 2.040 TL’lik bayi satırı “Büyük” olur. En dar koşulu en üste koy. Sihirbaz arka planda şu M’yi yazar:

= Table.AddColumn(Kaynak, "Satış Bandı", each
    if [Tutar] = null then "Bilinmiyor"
    else if [Tutar] > 2000 then "Çok büyük"
    else if [Tutar] > 1000 then "Büyük"
    else "Normal", type text)

null kontrolünü en başa koymak önemli: M’de bir tarafı null olan > karşılaştırması false değil null döner; if koşulu null olunca hücre “null değeri Logical türüne dönüştürülemez” hatası verir. Kontrol başta olursa boş tutarlı satır hata yerine açıkça “Bilinmiyor” gibi bir etikete düşer.

Hata yönetimi: adım hatası, hücre hatası

Power Query’de iki tür hata görürsün:

  • Adım düzeyi hata: Sorgunun tamamı durur; ön izleme yerine sarı bir uyarı çıkar. Tipik neden: kaynak dosyanın yeri ya da bir sütunun adı değişmiş. Çözüm adımın formülünde.
  • Hücre düzeyi hata: Tablo yüklenir ama bazı hücrelerde Error yazar. Tipik neden: “bilinmiyor” yazan bir tarih, “-” yazan bir tutar.

Hücre hatalarında dört yol var; seçim, hatanın iş anlamına bağlı:

YolNe yapar?Ne zaman?
Hataları kaldırSatırı atarSatır anlamsızsa (test kaydı)
Hataları değiştirHücreye sabit değer yazar (null, 0)Satır değerli, alan boş kalabilir
Hataları koru (Keep errors)Yalnızca hatalı satırları bırakırAyrı bir “denetim” sorgusu: kaynak sahibine gönderilecek liste
try … otherwiseHata olursa yedek ifadeBirden çok olası biçim: önce bir yolu dene, olmazsa ötekini
= Table.AddColumn(Kaynak, "Kayıt Tarihi", each
    try Date.FromText([KayitTarihi], [Culture = "tr-TR"]) otherwise null, type date)
Sessiz düzeltme tehlikesiHatayı 0 ile değiştirmek raporda “satış yok” gibi görünür; null ile değiştirmek ise “bilinmiyor” demektir. Tutar için 0 değil null tercih et ve hatalı satır sayısını bir denetim sorgusunda izle.
Alıştırmalara geç (11)