Row Count Component

19. January 2010

Row count SSIS ile birlikte gelen değişik bir özelliktir. Normalde adı üzerinde, bir tablodaki satır sayısını almak üzere kullanılıyor gibi görünse de çoğu yerde farklı kullanım alanına sahiptir. En önemli kullanım alanı ise pipeline içerisine aldığınız bir veriyle ilgili bir işlem gerekmediğinde pipeline'a gelen veriyi öldürmek için kullanılır. Bu durumu bir senaryo ile göstermeden önce dilerseniz standart kullanımına bakalım.

Ele alacağımız ilk senaryoda, bir tabloda veri olması durumunda belirli işlemleri gerçekleştirmek, olmaması durumunda ise gerekli kişilere email atacak bir durumu ele alalım.

Control Flow'umuz aşağıdaki gibi görünecektir.

 

Öncelikle Control flow içerisine bir dataflow component atarak başlayalım ve basit bir tablodaki verileri Row Count component ile SSIS içerisindeki bir değişkene alalım.

Dataflow Component içerisine SQL'e bağlanacak OLEDB source ekleyip, pipeline çıktısını Row Count Component'e bağlayalım.

Row Count component kullanmak için öncelikle bir değişken yaratmamız lazım. (Değişken yaratırken en önemli iki kavramdan birisi değişkenin scope'u ve değişken'in türüdür.) Bu örnekte değişkenin kapsamı SSIS paketi seviyesinde olmalıdır ki dataflow içerisinde değerini belirledikten sonra diğer aşamalarda da kullanabilelim. Control Flow ekranındayken sağ click ile Variables öğesini izlediğimizde BIDS (Business Intelligence Development Studio) bize sol tarafta değişkenler penceresini açacaktır.

Açılan ekranda değişkenimize bir isim verdikten sonra ve veri tipine de tamsayı seçtikten sonra aşağıdaki gibi bir ekranla karşılaşırız. (Burada Scope'un Package Level olduğuna dikkat edelim)

 

Değişken tanımını sonlandırdıktan sonra Data Flow içerisine geri dönüp Row Count component içerisinde tablodaki kayıt sayısını bu değişkene atamasını söylememiz gerekmektedir.

 

Row count öğesini ekledikten sonra Row Count değişkeninin değerine göre Control Flow içerisinde yapılacak işlemlerden hangisinin gerçekleşeceğini belirleyebiliriz.

Yaratmış olduğumuz senaryoya göre kayıt sayısı 1000'den azsa farklı bir işlem, 1000'den fazlaysa başka bir işlem, eğer ki sıfır ise yetkili kişiye email atmamız gerekmektedir.

Bu işlemi sağlamak için Control Flow içerisinde bulunan öğeler arası çalışma koşullarını gözden geçirmemiz gereklidir.

1000'den fazla kayıt sayısı için çalışmayı sağlamak istiyorsak çalışma koşulunu değişkenimize göre belirlemek gerklidir.

 

Yukarıdaki ekranda hem tablo satır sayısını alan dataflow component'in sorunsuzca çalışması ve satır sayısının 1000'den fazla olduğu durumda bu işlemi gerçekleştireceğimizi belirliyoruz.

Aynı durumu yine 1000'den küçük için ve sıfır için de tekrarlıyoruz.

Uyarı emaili içinse:

(Burada Expression içerisinde kullandığımız değişken ismi büyük küçük harf duyarlıdır. Yandaki Test düğmesine basarak yazdığınız expression'ın geçerli olup olmadığını kontrol edebilirsiniz.)

 

En son durumda çalıştırdığımızda, Control Flow ekranımız aşağıdaki gibi görünecektir:

 

(Fx işareti bağlaçın bir expression ile çalıştığını gösterir.)

 

 

Row Count component'inin çalışmasına örnek olarak verebileceğimiz bir diğer konu ise pipeline içerisinde kullanmayacağımız verilerin öldürülmesi içindi.

Bunun için aşağıdaki gibi basit bir senaryodan yola çıkalım.

Öncelikle pipeline içerisinde iki veritabanı arasında entegrasyon yaptığımızı varsayalım ve bu entegrasyonda aktardığımız verileri yeniden aktarmamak gibi bir amacımız olsun. Veri aktarımı için kullandığımız tablodaki primary key ile staging ortamında ya da Datawarehouse (veri ambarı) içerisinde bulunan veriyi karşılaştırarak, veri eğer daha önceden aktarılmışsa tekrar aktarmamayı sağlamak istiyoruz diyelim.

 

Bunun için örnek bir dataflow oluşturalım.

 

Yukarıdaki durumda kaynaktan aldığımız bir veri ile staging veritabanında bir arama gerçekleştiriyor ve bulduysak atlıyor, bulamadıysak kaydı staging içerisine ekleyecek bir işlem gerçekleştiriyoruz.

(Lookup task ile ilgili detaylı başka bir yazı yazacağım sonra.)

 

Bu işlemde gördüğünüz gibi, zaten transfer edilmiş bir kaydı tekrar transfer etmemek için Row count ile öldürüyoruz.

Son olarak, Row count içerisinde kullandığımız değişkenin bu kez dataflow seviyesinde tanımlandığına dikkatinizi çekmek isterim..

Bir sonraki yazıda buluşmak üzere...

Dataflow Components ,

Comments (2) -

erdem
erdem
9/3/2012 4:04:01 PM #
bu veriyi yok etme için audit de kullanamazmıydık.
4/4/2013 12:21:54 AM #
malesef kullanılamaz

Add comment




biuquote
  • Comment
  • Preview
Loading