SSIS’de Pivot Table Oluşturmak
Pivot table raporlama için veri hazırlanırken sıklıkla başvurulan bir yöntemdir.
Satır ve sütunlardan oluşan mevcut datamızı pivot tablo görünümünde tutmak istiyoruz. Bunu SQL üzerinde yapabildiğimiz gibi Integration Services içerisinde yer alan pivot komponenti aracılığı ile de yapmak mümkündür. Şimdi sizlere önceden excelde hazırladığımız örnek data setinin SSIS’de pivot tabloya nasıl dönüştürüleceğini anlatacağım.
Excelde hazırladığım 43 satırdan oluşan örnek verim aşağıdadır. Aşağıdaki bu tabloyu Tip alanı üzerinden Pivot görünümünde yapmak istiyorum.
Yani aşağıdaki gibi hale getireceğim ve bunu yaparken SSIS uygulamasını kullanacağım. Aşağıdaki tabloda excelde ki pivot özelliği kullanılmıştır.
Bu işlemi yapmak için bilgisayarımızda visual studio programının ve SSIS eklentisinin kurulu olduğundan emin oluyoruz. İşleme başlarken File menüsünden yeni bir SSIS projesi oluşturuyoruz.
Daha sonra dataya ulaşmak için Toolbox’dan Data Flow Task aracını Control Flow alanına sürüklüyoruz ve bu aracı çift tıklayarak Data Flow alanına gidiyoruz.
Source Assistant aracını alana sürükleyerek data kaynağımızı belirliyoruz. Bu çalışmada data kaynağı excel dosyasıdır.
Artık karşımızda aşağıda ki gibi bir görüntü olacak.
Data kaynağımıza yapacağımız pivot işlemi için Pivot aracını sol taraftaki SSIS Toolbox içinden bulup alana sürüklüyoruz ve excel komponentini pivot komponentine bağlıyoruz.
Bundan sonra Pivot aracı içerisinde ayarlamalar yapacağız. Pivot aracı üzerinde sağ tıkladıktan sonra çıkan Show Advanced Editor seçeneğini seçiyoruz.
Burada şöyle bir ayrıntı vermek istiyorum. PivotUsage diye bir tanımlama var. Bu tanımlama bizim datadaki alanlarımızın Pivot tablodaki görevini belirliyor. Bunu 0-1-2-3 değerlerini kullanarak yapabiliyoruz. 0 – Sabit kalan alan, 1 – Anahtar alan, 2 – Pivotta kolonlara denk gelecek alan, 3 – Pivotun içini dolduracağımız değerler. Bu durumu örneğimize benzetecek olursak Ürün 0 , Müşteri 1 ,Tip 2, Tutar 3 olarak tanımlanacak. Aşağıda Tutar için bunu göstereceğim.
Ayrıca her kolonunumuz için LineageID diye bir alan var bu pivot için tasarladığımız Output alanların kaynak kolonlarını belirtmemiz için kullanılacak. Örneğin benim pivot tablomda a1 tipini gösteren bir kolon olacak. Bu kolonun alacağı değer LineageID’si 15 olan Tutar alanından Müşteri bilgisine göre belirlenecek. Aşağıdaki ekrandan daha detaylı anlaşılacaktır.
Pivot Output alanları bizim pivot tablosu için oluşturduğumuz alanları temsil eder. Bu alanlar datamızdan gelen Input alanları ile oluşacağı için onlara kaynak kolon atamaktayız. PivotKeyValue denilen alanda değerini belirtiyoruz. Bizim a1 dediğimiz alan datamızda a1 değerinde olduğu için a1 yazdık.Diğer alanlar için de benzer işlemleri yapıyoruz ve sorasında datayı yazdırmak için bir Destination Assistant belirliyoruz. Ben bu çalışmada Union All komponentini kullanarak önizleme yaptım. Önizleme için ok üzerine sağ tıklayarak ön izleme aracını koydum.
Daha sonra start diyerek datayı işliyoruz. Pivot tablomuzun önizlemesi aşağıdaki gibi görünüyor.
Bu yazımda Pivot verilerini hazırlamak için SSIS Pivot dönüşümünü inceledik. Bu gibi dönüşümleri herhangi bir karmaşık T-SQL bilgisi olmadan kolayca uygulayabiliriz.