Azure Data Factory’de Copy Data Activity

Ataberk Teknekaya
PEAKUP Tech News
Published in
5 min readApr 25, 2023

Bir önceki yazımızda Azure Data Factory (ADF) ve kurulumundan bahsetmiştik. Bu yazıda ise ADF’te en çok kullanılan aktivitelerden birinden bahsedeceğiz: Copy Data Activity

Copy data activity adından da anlaşılacağı üzere çeşitli kaynaklardaki verileri faklı hedeflere kopyalamayı sağlayan bir aktivite çeşididir. Kopyalanan veriler daha sonrasında başka ADF bileşenleri yardımıyla çeşitli veri dönüşümlerinden geçerek analize hazır hale gelir.

Copy data activity hem bulut tabanlı hem de on-premise veri kaynaklarına bağlanarak veriyi hedef ortama transfer edebilir. Veri kaynağının ve hedefinin çeşidine bağlı olarak iki farklı “integration runtime” üzerinde çalışır:

  1. Azure Integration Runtime: Eğer veri depoları internet üzerinden herhangi bir IP ile genel olarak erişilebiliyorsa Azure integration runtime kullanılır.
  2. Self-Hosted Integration Runtime: Veri depolarından biri şirket içi bir ağdaysa self-hosted integration runtime kullanılır. Hem ADF hem de veri kaynağı ağında bu alanın kurulumu gereklidir.

Copy activity çalışırken sırasıyla aşağıdaki işlemleri uygular:

  1. Kaynaktan veriyi okur.
  2. Sıkıştırma-ayıklama, sütun eşleme gibi işlemleri gerçekleştirir.
  3. Hedefe veriyi yazar.
Copy Data Activity Akışı

Bir copy data activity biri source (kaynak) biri sink (hedef) olmak üzere iki veri kümesine ihtiyaç duyar. Bu veri kümeleri de “linked service” adı verilen ADF bileşenleriyle veri depolarına bağlanır. Aşağıda bu bileşenleri örnek bir copy data activity pipeline’ı içinde görebilirsiniz.

Desteklenen kaynak ve hedef veri depolarını bu linkten görebilirsiniz.

Copy Data Activity Kullanım Örnekleri

  • Bütçe excel dosyalarının Azure SQL Database’e aralıklı olarak aktarılması
  • API’den alınan verilerin bir Azure SQL Database’e yazılması
  • Üçüncü parti bir satıcıdan gelen haftalık satış csv dosyalarının Azure Data Lake’e aktarılması
  • On-premise SQL Server ya da SAP BW’da tutulan stok verilerinin bir Azure SQL Database’e yazılması

Copy Data Activity Demo

Bu demoda en sevdiğim film serisi olan Yüzüklerin Efendisi hakkında veri sağlayan “One API to Rule Them All” adlı API’dan Copy Data Activity ile bir Azure SQL Database’e film serisindeki tüm karakterlerin ad, cinsiyet ve ırk gibi özelliklerini aktaracağız.

API dokümantasyonu için tıklayınız.

  1. Geliştirmeyi yapacağımız ADF’e giriş yapıyoruz.

2. Öncelikle API bağlantı bilgilerini sağlamak için ADF’de “Manage” sekmesine geliyoruz ve “Linked services” seçeneklerine tıkladıktan sonra “Create Linked service” seçimini yaparak HTTP’yi seçip “Continue” tuşuna basıyoruz.

3. Linked service adını yazıyoruz. Base URL sekmesine ilgili metodun api URL’ini yazıp apiye kayıt olduğumuzda bize verilen bearer token’ı Auth headers sekmesine yazıyoruz.

4. Aynı linked service oluşturma işlemini Azure SQL için de tekrarlıyoruz.

5. Linked service’lerimizi oluşturduktan sonra sıra dataset’lerimize geliyor. API sorgusundan gelen dataset için Author sekmesinden dataset’e tıklayıp “New dataset” seçeneğine tıklıyoruz ve buradan linked service’de olduğu gibi HTTP’yi seçip dosya tipi olarak da JSON’ı seçiyoruz.

6. Dataset adını yazıp oluşturduğumuz linked service’i seçiyoruz.

7. Aynı dataset oluşturma işlemini Azure SQL için de yapıyoruz. Ekstra olarak bu kısımda şema ve tablo adını girip Import schema adımında None’ı seçerek hedef datasetimizi hazırlamış oluyoruz.

8. Bileşenlerimiz hazır olduğuna göre Author ekranından Pipelines’a tıklıayıp “New pipeline” seçeneğini seçerek bir pipeline yaratıp Copy data activity seçerek aktivitemizi ve pipeline’ımızı isimlendiriyoruz.

9. General’ın sağındaki Source sekmesine tıklıyoruz ve kaynak olarak oluşturduğumuz dataseti seçiyoruz.

10. Preview data’ya basarak gelecek api cevabını görebilirsiniz.

11. Sink sekmesine tıklayıp hedef Azure SQL datasetimizi seçiyoruz ve Auto create table seçeneğini seçiyoruz.

11. Mapping sekmesinde import schemas tuşuna basarak sütun eşlememizi yapıyoruz. Collection reference olarak $[‘docs’] seçip ihtiyacımız olmayan sütunları siliyoruz.

12. Mapping işlemini de tasarladıktan sonra geliştirmemizi tamamladık. “Debug” ya da “Trigger” seçenekleriyle aktivitemizi çalıştırıyoruz. Pipeline başarıyla sonuçlandığında aldığımız sonuç aşağıdaki gibidir.

14. Karakter bilgilerini aldığımız tablomuzu aşağıdaki görselde görebilirsiniz.

Bir sonraki yazıda görüşmek üzere Mellon :)

“Some believe it is only great power that can hold evil in check, but that is not what I have found. It is the small everyday deeds of ordinary folk that keep the darkness at bay. Small acts of kindness and love.”

Referanslar

--

--

Ataberk Teknekaya
PEAKUP Tech News

As a BI consultant with a passion for Azure Data Platform, SQL and Power BI, I write about real-life scenarios to help others in the field.