Sql Server Integration Service üzerinde Pivot ve Unpivot bileşenlerini kullanarak, satırları sütunlara ve sütunları tekrar satırlara çevirebileceğiz. Kullandığımız tabloları daha  özet ve gruplanmış halde görmüş olacağız.

Kaynak çalışma alanı olarak AdwentureWorks şemasında ki tabloları ve oluşturacağımız pivot tabloyuda başka bir şemada hazırladığım tabloda göreceğiz. Pivot tablosunu kolaylık olması için oluşturma kodunu aşağıda paylaştığım gibi yapabilirsiniz. Pivot işlemi için Master şemasında aşağıda ki tablo kullanılacak.

CREATE TABLE [Company_Pivot](
CompanyId int NULL,
Qtr_1 int NULL,
Qtr_2 int NULL,
Qtr_3 int NULL
) ON [PRIMARY]
GO

İlk adım olarak  Sql Server Integration Service platformunda yeni proje oluşturuyoruz. Projeyi oluşturduktan sonra önceki çalışmalarda yaptığımız  gibi Control Flow alanına Data Flow Task gönderiyoruz. Data Flow Task bileşenine çift tıklayarak Data Flow Task alanına geçiyoruz

pivot_1

Burada ilk adım olarak Ole Db Source  kullanılarak AdwentureWorks şemasından Company tablosunu resimde şekilde ki gibi oluşturuyoruz.

pivot_2

Daha sonra Ole DB Source bileşenine Pivot bileşenini bağlıyoruz. Yukarıda ki şekilde olduğu gibi Pivot Key: Qtr kolonu Set Key: CompanyId kolonu ve Pivot Value: Amount  kolonları seçilir. Kolon adlarını [1], [2], [3] olarak belirledik. Generate Columun New butonuna basılacak. Sistem otomatik olarak eşleştirelecek ve kolon isimlerini verecek. Son olarak Ok butonuna basıyoruz.

pivot_3

Son olarak Pivot bileşeni Ole DB Destination bileşeni bağlıyoruz. Destination tablosu olarak,  Master şemasın da oluşturduğumuz (yukarı kısımda paylaştığım kod – Company_Pivot) tabloyu belirliyoruz.

Son olarak kurduğumuz yapıyı çalıştırdığımız da Company_Pivot tablosunda, Company tablosunda ki datayı pivot şeklinde oluşturulduğunu görebiliriz.

Şimdi Unpivot bileşenini çalıştıralım. Bu durum için ilk adım olarak AdwentureWorks şemasında ki Company tablosu içinde datayı silelim. Çünkü bu sefer Master şemada Company_Pivot tablosunda ki pivot şeklinde olan tabloyu source olarak kullanıp Company tablosuna yükleyeceğiz.

DELETE FROM COMPANY;

pivot_5

Resimde görüldüğü gibi OLE DB Source bileşeni için bu sefer Master şemadan Company_Pivot tablosunu kullanıyoruz.

pivot_6

OLE DB Source bileşenine transform alanından Unpivot bileşenini bağlıyoruz. Unpivot bileşenine çift tıklıyoruz. Şekilde görüldüğü gibi Company_Pivot tablosunda Qtr_1, Qtr_2, Qtr_3 kolonlarını seçiyoruz. Üç kolon içinde Destination Column Name olarak “Qtr” ve Pivot value column name olarak da Amount isimlerini veriyoruz. Son olarak üç Input Column için ayrı ayrı Pivot Key Value olarak ‘1’,  ‘2’, ‘3’  değişkenlerini veriyoruz.

pivot_7

Unpivot bileşenine OLE DB Destination bileşenini bağlayıp çift tıklıyoruz.  Destination tablosu olarak Unpivot konusuna başladığımız da içerisinde ki datayı sildiğimiz (DELETE FROM COMPANY) AdwentureWorks şemasında ki Company tablosunu kullanacağız. Şekilde görüldüğü gibi Company  tablosunu seçelim. Mappings kısmını kolonlar birebir eşleşmişmi kontrol edelim. Başka bir değişiklik yapmadan Ok butonuna basabiliriz.

Son olarak çalıştırırsak Company tablosuna Company_Pivot tablosunda ki pivot özet tablosunu yüklemiş oluyoruz.

Pivot ve Unpivot bileşenleri ile ilgili işlemleri baştan sona bu şekilde tamamlamış oluyoruz. 🙂

Başka bir çalışmada görüşmek üzere 🙂