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.
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.
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.
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.
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.
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
https://tr.linkedin.com/in/seyma-tasci-31316baa?trk=profile-badge