SSIS’de Union All

Herkese merhaba. Bu yazımda SSIS’de Union All görevini kullanmayı göreceğiz. Daha önce farklı iki veri kaynağını Merge göreviyle tek bir çıktıya dönüştürmüştük ve SQL Union kullanımına benzediğinden bahsetmiştik. Şimdi de SSIS’de neden Union All var ve nasıl kullanılır konularına da değinmiş olalım.

Union All iki veya ikiden fazla veri kaynağını birleştirmek istediğimizde kullanacağımız bir task. Yine satır bazlı bir birleştirme yapmış olacağız, fakat bildiğiniz üzere Merge kullanarak ikiden fazla kaynakta bunu gerçekleştiremiyorduk. Kullanacağımız veri kaynakları yine aynı da olabilir farklı da olabilir. Kaynak yapısından bağımsız olarak hedefimize ulaşabiliriz. Ayrıca Merge kullanmak için verilerimizi sıralamak zorundaydık. Union All kullanırken bunu yapmak zorunda değiliz. Eğer verilerimiz sıralı değilse veya çıktımızdaki verilerin sıralı olması bizim için gerekli değilse Union All kullanmamız çok daha pratik olacaktır.

Kullanacağımız veri kaynaklarından birinde kolon sayısı eksik ise veya ismi farklıysa; elde edeceğimiz çıktıda bu satırlara ait değerler NULL olarak gözükecektir. Eğer verilerde bir eksiklik var ise ilgili kolon başlığı o satırda boş gözükecektir. Bu ayrıntıları gözlemlemek adına uygun bir örnek ile SSIS’de Union All görevini birlikte çalıştıralım.

Örneğimiz için üç farklı txt dosyası hazırladım. Bu dosyalarda çeşitli şirket isimleri ve çalışanlara ait isim, soyisim, şehir ve cinsiyet bilgileri bulunmakta. Her birinde bazı veriler eksik ayrıca üç numaralı dosyadan “Gender” kolonunu çıkardım.  Aşağıdaki resimde bunu gözlemleyebilir, siz de kendinize benzerini oluşturabilirsiniz:

Şekil-1: Veri Kaynakları

Bu txt biçimindeki kaynakları kullanabilmek için SSIS tasarım ekranımızda “Flat File Source” kullanacağız. Her bir veri kaynağımız için Data Flow Task bileşeni içerisine Flat File Source alalım ve dosya yollarını seçelim. Daha sonra hiçbir sıralama yapmadan Union All görevini alalım ve çalıştırmadan önce yine Multicast kullanalım. İsterseniz bir destination kaynağı seçip çıktıyı orada da görüntüleyebilirsiniz. Oluşturduğumuz görev akışı aşağıdaki gibi olmalıdır:

Şekil-2: Görev Akışı

Paketimizi çalıştırdığımızda ise çıktımız aşağıdaki gibi ekrana gelecektir. Görüldüğü üzere eksik verilerimiz ilgili satırlarda boş olarak geldi. Üç numaralı veri kaynağımızda “Gender” kolonu olmadığı için Todd, Raja ve Sean isimli çalışanların cinsiyet bilgileri NULL olarak geldi.

Şekil-3: Çıktı Kaynağı

Ayrıca dikkat ederseniz bazı çalışanlar iki kaynakta da yer aldığı için çıktı tablomuzda da çift kayıt oluşturdu. Bunu engellemek yani SQL deki Union mantığı ile çalıştırmak için sort bileşenini kullanmamız gerekiyor. Büyükten küçüğe veya küçükten büyüğe sıralama yaptıktan sonra aynı satırları getirmemesini söylememiz gerekiyor. Bunun için standart editör ekranında Şekil-4 te gözüken onay kutucuğunu işaretlemeliyiz veya  Sort görevi üzerinde sağ tıklayıp “Show Advanced Editor” dediğimizde açılan gelişmiş editör ekranında EliminateDuplicates seçeneğini True yapmalıyız.

Şekil-4: Sort Editörü

Son durumdaki akışımız aşağıdaki gibi olmalıdır. Bu akış ile paketimizi çalıştırdığımızda artık her bir kayıttan tek satır görmüş oluyoruz.

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

 

Böylece SSIS’de Union All kullanarak hedeflerimize uygun çıktı üretmiş olduk. Bir sonraki yazımda diğer görev kullanımlarıyla devam edeceğiz. Serinin sonraki bölümlerinde 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 13 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