Herkese merhaba,
Bugün ETL proseslerini Azure Data Factory (ADF) üzerinden nasıl gerçekleştirebileceğimizden bahsedeceğim. Aslında ETL’i SSIS veya ADF ile data flow’lar üzerinden veri transfrom adımını gerçekleştirebilirsiniz. Ancak sizlere bu yazımda ADF’de hala preview’da olan Power Query bloğundan bahsetmek istiyorum. Bu tool, özellikle veri analizi için Power BI kullanan kullanıcıların ADF’de işlerini oldukça kolaylaştıracak çünkü veri transformunu Scala yerine M language ile yapmayı benim gibi daha pratik bulabilirsiniz.
ADF’de ETL’den bahsetmeden önce yapmamız gereken birkaç adım var, hali hazırda oluşturduğunuz bir Data Factory yoksa aşağıdaki adımları takip edebilirsiniz.
Senaryomu yazayım, masa üzerinde duran .csv dosyasını BlobStorage üzerinden oluşturacağım bir Container içine atacağım. Ardından bu dosyayı dataset şeklinde link servis kullanarak açacağım Azure Data factory’ye aktaracağım. AzureData Factory’de veriyi transform edip Azure SQL DB’ye yeni veri şeklinde alacağım.
- Öncelikle Azure Portala giriş yapmalısınız.

Senaryoma göre 3 adet resource eklemem gerekiyor: BlobStorage(storage Account), Azure Data Factory ve Azure SQL DB
+Create Resource ile önce ADF’i oluşturuyorum.

Diğer configuration bilgilerini de istediğiniz gibi doldurup Review + Create ile veri transformu yapacağımız ADF’i oluşturuyorsunuz.
- Verileri deoplamak için Storage Account oluşturuyorum.


Hatırlatmakta fayda var ADF’e geçince Blob Storage tüm dosya tiplerini desteklemiyor, sadece aşağıda gösterilen dosyalar destekleniyor.

- Verileri Azure SQL DB’de bir database’e aktaracağım için sırada Azure SQL DB oluşturmak var. Adımları takip ederek istediğiniz configurasyonlarda DB oluşturabilirsiniz.

- Azure SQLDB’yi açmışken hemen bir veritabanı ve içine de bir tablo oluşturalım. Bu tablonun kolonları, blob storage’a yüklediğim tablonun kolonlarıyla aynı olmalı, aksi halde ADF’de debug ederken mapping’de kolonlar eşleşmez ve verileri aktaramayız.

- Onpremde duran NorthwindDB’yi BlodStorage’da container içinde saklayacağım. Aşağıdaki gibi Container oluşturup (bloginput isimli) ilgili dosyayı upload ediyorum.

Dosyayı upload etmek için;

- Oluşturduğumuz data factory’yi seçerek Data Factory Studio’ya geçiyoruz.

- Azure Data Factory Studio’da sol menüde yer alan “manage” altında Linked Servises ile hem blob storage’ı hem de azure sql db’ye bağlanmamı sağlayacak servisleri tanımlıyorum.

- Benzer şeyi Azure SQL DB için de yapacağım. BlodDemoDB isimli açtığım veritabanına transform ettiğim verileri aktarabilmek için linked servis ile Azure SQL DB’ye bağlanacağım.

- Şimdi sırada dataset’leri belirleyelim. Sol menüde “Author”dan Factory Resources altında yer alan dataset’e input datasetlerimi ekliyorum. Verileri blob storage’dan alacağım için linked servisim “BlobInput” olacak. Dosyanın bulunduğu yeri “file path” ile belirleyip “create” ile dataseti oluşturuyorum.

- Aynı şeyi SQLDB için de yapıyorum ve hedefteki veritabanında açtığım tablo için dataset oluşturuyorum.

- Datasetler hazır, bağnaltılar hazır, sırada işlemleri gerçekleştireceğimiz bir pipeline oluşturmakta ve power query ile verileri dönüştürme var..
Power querry eklediğimizde setting altında Source dataset’i InputNorthwind olarak seçiyorum. Bu benim blob storage container’ına upload ettiğim Northwind dosyası. Bu verileri değiştireceğim. Bu arayüz Power BI kullanıcılarına aşına, henüz tüm fonksiyonlar desteklenmiyor ama bence bu haliyle bile oldukça pratik.

Bu noktada şunu da belirteyim, veri transformunu power query ile değil de ADF actionlarıyla yapmak isteseydiniz de Data Flow eklemeniz gerekecekti. Ancak bu şuanda konu dışında kaldığından değinmeyeceğim.
- Burada mesela “FirstName” ile “LastName” kolonlarını birleştirip yeni bir kolon oluşturalım. İster formul çubuğunu kullanarak isterseniz de tab menüden yeni bir kolon oluşturup kolonları birleştirebilirsiniz.

Burada başka pek çok değişiklik yapabilirsiniz, sadece tüm fonksiyonların henüz desteklenmediğini unutmayın.
- Sırada yaptığımız değişiklikleri hedef veritabanına aktarmak var. Bunun için önce debug etmemiz gerekmektedir. Bu tür aktiviteleri pipeline üzerinden yapıyoruz. Northwind_ADF isimli pipeline’ıma “NameLastName” isimli query’mi sürükleyip tuvale bırakıyorum ve dataflow debug’ı açık hale getiriyorum.

Data flow debug biraz zaman alan bir işlem, değiştirdiğiniz verilerin önizlemesini yapmak için de bu özelliği açmanız gerekiyor.
- Artık verileri transform ettiğimize göre sırada hedef db’nin datasetine bu verileri gönderme işlemi var.
Query’nin sonuçlarını çıkartacağım dataseti Sink altında Sink Dataset’i seçerek belirtiyorum. Hatırlarsanız AzureSQLDB’ye aktarılacak olan verisetini OutputTable olarak datasetlere eklemiştik. Table action defaultta “None” olarak gelir, bunu değiştirmezseniz değişiklikler db tarafına yansımaz. Mevcut tabloyu yeniden oluşturmasını istediğim için “Recreate Table” seçiyorum.

- Hedef dataseti belirttiğime göre Debug edebilirim.

- Başarılı bir şekilde debug edildiğine göre Azure SQlDb tarafına geçip Query Editor’den Northwind_ADF isimli tablomu kontrol ettiğimde Azure Data Factory’de Power Query ile transform ettiğim isim-soy isimleri birleştirdiğim kolonun tabloya eklendiğini görüyorum.

Umarım faydalı bir yazı olmuştur.