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

Birden çok veri kaynağıyla çalışmak: ekle, birleştir, ilişkilendir

SQL, Excel, SharePoint ve web kaynağını tek modelde toplamak. Sorguları eklemek mi, birleştirmek mi, ilişki kurmak mı? Gizlilik düzeyi, sorgu katlama ve yenileme sonuçları; Power Query Lab’de iki kaynakla çalışan alıştırmalar.

Uygulamada aç, 10 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ç.

Gerçek bir raporda veri tek yerden gelmez. Anadolu Market’te satış satırları şirket içindeki SQL Server’da, hedefler finansın SharePoint’teki Excel dosyasında, bayi raporları ortak klasördeki CSV’lerde, döviz kuru ise merkez bankasının sitesinde. Birden çok kaynağı bağlamak kolaydır; zor olan, hangi işi nerede yapacağına karar vermektir. Bu ders dört kaynağı tek modele indirirken sorulması gereken soruları ve yanlış kararın sonuçlarını anlatır.

Üç yol: ekle, birleştir, ilişkilendir

YolNe yapar?Ne zaman?Yanlış kullanılırsa
Sorguları ekle (Append)Aynı yapıdaki tabloları alt alta koyar; satır sayısı artar.Ocak ve Şubat dosyaları, şube dosyalarıSütun adı farklıysa (“Şehir” ve “Sehir”) iki sütun oluşur, boşluklar null kalır.
Sorguları birleştir (Merge)Bir anahtarla yan yana getirir; sütun sayısı artar.Boyutu düzleştirmek, olguya tek bir öznitelik eklemekSağ tabloda anahtar yinelenirse satırlar çoğalır, toplamlar şişer.
Model ilişkisiTablolar ayrı kalır; filtre ilişkiden akar.Olgu ve boyut, farklı taneciklikte hedef tablosuAnahtar türleri uyuşmazsa ilişki kurulmaz; yetim satırlar boş satırda toplanır.

Kural: yeni bir olgu satırı geliyorsa ekle; bir boyutu ya da özniteliği tamamlıyorsan önce model ilişkisini düşün, ancak tablo gerçekten tek bir boyuta inecekse birleştir. Yıldız şemanın nedeni “Veri modelleme” dersinde. Join türleri “Power Query: join türleri, dizin sütunu ve gruplu sıra” dersinde.

Önce temizle, sonra birleştir

Merge eşleşmesi büyük/küçük harfe ve boşluğa duyarlıdır. Bayi raporunda “ ANKARA ” yazıyorsa SharePoint listesindeki “Ankara” ile eşleşmez; sorgu hata vermez, sütun sessizce null gelir. Bu en sık yapılan çoklu kaynak hatasıdır: rapor açılır, görünür hiçbir sorun yoktur, ama bölge kırılımında büyük bir “(Boş)” satırı çıkar.

  1. İki taraftaki anahtarın türünü eşitle (metin ve sayı karışmasın).
  2. Kırp, harf biçimini tekleştir, görünmeyen karakterleri temizle.
  3. Sağ tablonun anahtarını yinelenenlere karşı kontrol et.
  4. Birleştirmeden sonra eşleşmeyen satırları say: sol karşıt (left anti) birleştirme tam bu sayıyı verir.

Power Query Lab’de bu akışı gerçekten yapacaksın: alıştırmalarda ikinci kaynak olarak SharePoint listesi ve Şubat CSV dosyası var.

Gizlilik düzeyi ve Formula.Firewall

Farklı kaynaklı iki sorgu birleşince Power Query bir kaynağın verisini ötekine gönderebilir. Gizlilik düzeyleri (Özel, Kuruluş, Genel) bunu sınırlar; ayarın yeri “Veri alma ve bağlantı modları” dersinde. Üç sonuç genelde atlanır:

Yenileme açısından çoklu kaynak

Her kaynağın yenileme yolu farklıdır, ama bir anlam modeli yalnız bir ağ geçidi bağlantısı kullanır. Aynı sorguda şirket içi SQL ile SharePoint Online birleşiyorsa bulut kaynağı da ağ geçidinden geçmek zorundadır: ağ geçidinde bulut kaynağı için bir veri kaynağı tanımı eklenir ya da “kullanıcının bulut veri kaynaklarının bu ağ geçidi kümesinden yenilenmesine izin ver” seçeneği açılır. Ayrıntı “On-premises data gateway” dersinde.

KaynakKimlik bilgisi nerede?Ağ geçidi?
Şirket içi SQL ServerAğ geçidi bağlantısıEvet
SharePoint Online ExcelAnlam modeli ayarları, Veri kaynağı kimlik bilgileriHayır (aynı sorguda şirket içiyle birleşiyorsa evet)
Ağ klasöründeki CSVAğ geçidi bağlantısıEvet
Web sayfasıAnlam modeli ayarlarıHayır

Pratik sonuç: ağ klasöründeki dosyayı SharePoint’e taşımak çoğu zaman bir ağ geçidi bağımlılığını ortadan kaldırır. Dinamik adresli kaynaklar da Service’te yenilenmeyebilir; web kaynağında Web.Contents ile RelativePath ya da Query kullan.

Bileşik model ne zaman?

Her kaynağı Import etmek zorunda değilsin. Satışlar DirectQuery, hedefler Import olabilir; bu bir bileşik modeldir. Ama farklı kaynak gruplarındaki tablolar arasındaki ilişki sınırlı ilişki olur. Tablo tablo karar “Kurumsal model” dersinde. Başlangıç kuralı: veri yeterince küçükse hepsini Import et, karmaşıklığı ancak bir gereksinim zorlarsa ekle.

Kaynaklar arası mutabakat

İki kaynak birleşince “hangi sayı doğru?” sorusu çıkar. Excel’den gelen bir tabloyu modele bağlamadan önce DAX sorgu görünümünde sınayabilirsin. Aşağıdaki sorgu, Excel’den gelmiş gibi küçük bir hedef tablosunu sanal ilişkiyle (TREATAS) modele bağlar:

EVALUATE
VAR ExcelHedef =
    DATATABLE("Kategori", STRING, "Plan", INTEGER, {{"Kitap", 150000}, {"Elektronik", 350000}, {"Giyim", 200000}})
RETURN
    ADDCOLUMNS(ExcelHedef, "Net", CALCULATE([Net Satış], TREATAS({[Kategori]}, Kategoriler[Kategori])))

Sonuçta Kitap 151.882 ₺, Elektronik 339.304 ₺ gelir. Excel’de “Kitaplar” yazsaydı o satır boş kalırdı; sorun rapora çıkmadan görülürdü.

Kontrol listesiHer kaynağın sahibi ve yenileme sıklığı yazılı mı? · Anahtarlar temizlendi mi, türleri aynı mı? · Eşleşmeyen satır sayısı biliniyor mu? · Gizlilik düzeyi her kaynakta doğru mu, Service’te yeniden verildi mi? · Birleşen sorgu hâlâ katlanıyor mu (Yerel sorguyu görüntüle)? · Ağ geçidi gerekiyorsa bulut kaynağı da tanımlı mı?
Alıştırmalara geç (10)