SSIS’de Merge ve Merge Join Farkı

Merhaba arkadaşlar. Bu yazımda SSIS’de Merge ve Merge Join farkından bahsedeceğiz. Merge Join kullanımını gördüğümüz için, bu yazıda Merge görevini kullanarak örnek yaptığımızda hangisinin ne zaman ve ne için kullanıldığını karşılaştırmış olacağız. Artık control flow, data flow veya kaynaklara bağlantı kurma gibi detaylara bu yazıda değinmeyeceğim.

Merge

Merge görevi farklı iki veri kaynağını tek bir çıktıda birleştirir. (Kaynaklar aynı türde veya farklı türde olabilir.) Her bir veri kümesindeki satırlar, sütun değerine göre çıktıya eklenir. Yani satır bazlı birleştirme yapmayı sağlar, bu anlamda SQL’deki Union kullanımına benzer. Genel olarak;

  • Tablo veya dosya gibi farklı kaynaklarda tutulan verileri birleştirmek
  • Farklı sunucularda tutulan benzer yapılandırılmış tablodaki verileri birleştirmek
  • Hata aldığımız bir satırı düzelttikten sonra satırları yeniden birleştirmek için kullanılır.

Fakat ikiden fazla kaynağımız olduğunda Merge kullanamayız. Bunun için SSIS’de Union All görevi bulunmaktadır.

Merge Join

Merge Join görevi ile farklı iki veri kaynağını (Kaynaklar aynı türde veya farklı türde olabilir.) sütun bazlı birleştirme sağlarız. Bu anlamda SQL’deki Full, Left, Right Join kullanımına benzer. Örneğin; bir fabrikanın ürünlerinin üretim bölge/ ülke bilgileri ile ürünlere ait bilgilerin tutulduğu tabloyu birleştirdiğimizde sonuçta tek bir çıktı ile tüm ürün ve üretim bilgilerini elde edebiliriz.

Şimdi bir örnek de Merge kullanarak yapalım. Daha net görülebilmesi açısından satır sayılarını az tuttum. Kullanacağımız kaynaklardan biri SQL’de bir tablo diğeri ise txt dosyası olsun. Veri tabanı bağlantısını OLE DB kaynağı üzerinde gerçekleştirip tablomuzu seçtikten sonra; verileri preview butonuna basarak kontrol edebiliriz.

Şekil-1: OLE DB Kaynak Editörü

 

Diğer veri kaynağımız da txt dosyası olduğu için Flat File Source alalım ve üzerine çift tıklayarak dosya yolunu seçelim.

Şekil-2: Flat File Kaynak Editörü

Merge görevini çalıştırmak için de Merge Join de yaptığımız gibi ve sıralı tabloları işleme sokar. Her iki kaynağı da Sort bileşeni ile ID kolonuna göre ascending olarak sıraladım. Sort tipini değiştirerek descending de yapabilirsiniz, hiç fark etmez.

Şekil-3: Sort Editörü

Verileri sıraladık ama ID kolonlarının veri tipleri farklı olursa çıktı oluşturulamayacağı için hata alırız. Bunu önlemek için flat kaynağı için kullandığımız bileşene sağ tıklayıp Show Advanced Editor demeli ve Input and Output Properties sekmesini açmalıyız. Burada bulunan çıktı kolonları bölümündeki (Output Columns) veri tipleri, SQL kaynağındaki  çıktı veri tipleri ile aynı olmalıdır.

Şekil-4: Advanced Editor

 

Artık Merge görevini alabiliriz. İki sort bileşenin oklarını Merge görevine  bağlayıp çift tıklıyoruz. Açılan ekranda Merge Input1 veya Merge Input2 diyebiliriz, sadece yerlerinin değişmesini sağlıyor. İki kaynaktaki kolon başlıklarını burada eşleştiriyoruz. Ben bilerek kolon başlıklarını farklı isimlendirmiştim, gördüğünüz gibi zaten eşleşeme yapacağımız için başlıkların aynı olmasına gerek yok.

Şekil-5:  Merge Editörü

Bu defa hedef kaynağa yazdırmak yerine asıl kullanım amacı farklı olan  Multicast görevi ile verilerimizin birleştiğini görelim.  Merge ile birleştireceğimiz oka sağ tıklayıp Enable Data Viewer diyoruz. ve projemizi başlattığımızda kullandığımız her iki kaynaktaki verileri tek bir çıktı halinde görüntülemiş oluyoruz. Aşağıdaki resimde görevlerin birleşmiş son halini de görebilirsiniz.

Şekil-6: Görev Akışı ve Çıktı Kaynağı

Böylece SSIS’de Merge ve Merge Join farkını her ikisiyle de örnek yaparak görmüş olduk. Bir sonraki yazıda görüşmek üzere.

 

Kaynakça

MERGE, MERGE JOIN and UNION ALL

Kapak: pine watt on Unsplash

https://tr.linkedin.com/in/seyma-tasci-31316baa?trk=profile-badge

Yazar Hakkında
Toplam 12 yazı
Şeyma Taşçı
Şeyma Taşçı
Kocaeli Üniversitesi Endüstri Mühendisliği mezunu, aynı zamanda 4. sınıf MIS öğrencisi. İş Analisti olarak çalışıyor.
Yorumlar (Yorum yapılmamış)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara