Azure Data Factory’de Trigger’larla Veri Akışını Otomatikleştirme

Ataberk Teknekaya
PEAKUP Tech News
Published in
5 min readJun 20, 2023

Azure Data Factory’e (ADF) giriş yazımızda ADF bileşenleri içinde çok kısa trigger’lardan bahsetmiştik. Bu yazıda da detaylı bir şekilde bunların üzerinde duracağız.

Trigger’lar adından da anlaşılacağı üzere veri akışı süreçlerini tetikleyip otomatikleştiren ADF bileşenleridir. 4 farklı çeşidi vardır ve oluşturacağımız veri akışı senaryosuna göre seçimimize yapmamız gerekir.

ADF Trigger’ları

1. Manual Trigger

Standart dışı bir trigger olan manual trigger’ı veri akışını istediğimiz zaman başlatmak ya da test etmek için kullanılırız. Author ekranında kanvasınızdan Add Trigger butonuna basıp Trigger now seçeneğine tıklayarak pipeline’ı manuel olarak tetikleyebilirsiniz.

Bir altındaki New/Edit seçeneği oluşturduğumuz trigger’ları pipeline’lara atamak ya da yeni bir trigger yaratmak için kullanılır.

2. Scheduled Trigger

Standart trigger’lar içinde karşımıza ilk çıkan Scheduled Trigger, veri ambarı mimarilerinde en çok kullanılan trigger’dır.

Spesifik bir tarih/saat ya da düzenli aralıklarla bir pipeline’ı çalıştırmaya yarar. Bir scheduled trigger birden fazla pipeline’ı tetikleyebilir.

Manage ekranında Triggers sekmesine tıklayıp New ya da Create trigger butonuna tıklayarak yeni bir trigger oluşturma işlemine başlayabilirsiniz.

Standart trigger’ları oluşturma

İşlemi başladığınızda default olarak scheduled trigger seçili bir ekran çıkacaktır.

Scheduled trigger için Emre Arı’nın yazdığı merkez bankası kurlarını çekme senaryosu çok güzel bir örnek.

Bu yazıda geliştirilen pipeline’ı her gün bir kere çalıştırırsak database’imizde güncel bir kur tablosu yaratmış oluruz.

Genelde OLTP sistemlerinden veri kopyalayan veri ambarı mimarileri sistemin en az yoğunlukta olduğu saatlerde çalışır. Bu pipeline’ı da OLTP sistemler için kullandığımız diğer pipeline’larla aynı saatte çalıştırabiliriz.

Get Data From EVDS Pipeline

Senaryomuza karar verdiğimize göre trigger’ımızı oluşturabiliriz:

ADF’de best practice olarak adlandırmaları standartlaştırmayı tercih ederiz. Oluşturulan elemente göre başına kısaltmasını ekleyip (trigger: tr, pipeline: pl, linked service: ls, vb.) yaptığı işi yazarak adı standartlaştıbiliriz. Bu trigger’ı tr_ingest_currency_data olarak adlandıralım. Description için de detaylı bir açıklama yazmak iş sürekliliği açısından avantajlıdır.

Type sekmesi default olarak schedule trigger’da olduğu için değiştirmemize gerek yok. Start date’e yazılan zaman Advanced recurrance options sekmesinde başka bir seçenek belirtmezsek pipeline’ın başlangıç zamanını belli eder. Time zone sekmesi default olarak Coordinated Universal Time (UTC) seçilidir. Bu sekmede Türkiye için UTC+3 seçeneklerinden biriyle ilerleyebiliriz. Recurrence sekmesini pipeline’ı her gün çalıştıracağımız için Every 1 Day giriyoruz ve Advanced recurrance options’da saati gece 4:00 girerek pipeline’ın çalışma saatini beliriliyoruz. Bir End Date belirlemezsek pipeline süresiz olarak çalışmaya devam edecektir. Status seçeneğini de Started seçtiğimizde değişiklikleri yayınladığımızda trigger’ımızı aktive etmiş oluyoruz.

Tüm detayları girdikten sonra OK’ye basarak trigger’ı oluşturmuş oluyoruz. Sonrasında Author ekranından Add Trigger’ı seçerek pipeline’a trigger’ı ekleyip değişikleri Publish butonuna tıklayarak yayınlayabiliriz.

3. Tumbling Window Trigger

Tumbling window trigger, belirli bir başlangıç ​​zamanından itibaren periyodik bir zaman aralığında pipeline’ı tetikleyen bir trigger türüdür. Bir tumbling window trigger sadece bir pipeline’a bağlanabilir ve geçmiş bir tarihten başlayacak şekilde ayarlanabilir.

Tumbling window trigger çalışma esnasında belirli bir pencere boyutunda veri toplar ve bu pencerenin içindeki veriler üzerinde bir işlem gerçekleştirir. Ardından, pencereyi belirtilen yenileme aralığı kadar kaydırarak bir sonraki pencereyi oluşturur ve işlemi tekrarlar.

Belirli bir periyod içerisinde oluşan verileri incelemek istediğimiz senaryolarda bu trigger’ı kullanırız. IoT cihazlarından ya da API’lardan gelen verileri periyotlu dosyalar halinde kopyalamada sıkça kullanılır:

  • Hassas ürün üretim alanlarında ortam sıcaklık ve nem değerlerinin aktarılması
  • Saatlik olarak hisse senetlerinin fiyat hareketlerinin aktarılması

Tumbling window trigger spesifik periyotları belirtmek için pencere başlangıç ve bitiş parametrelerini verir. Bu parametreler daha sonrasında verinin aktarımında kullanılan stored procedure içindeki variable bileşenlerinin yerini alır:
trigger().outputs.windowStartTime, trigger().outputs.windowEndTime

Bu trigger için type’ı Tumbling window seçip başlangıç tarih ve saatini Start Date’e giriyoruz. Scheduled trigger’dan farklı olarak sadece UTC zaman aralığında bir seçenek sunuyor. Recurrence sekmesine de veri aralığını/penceresini girerek trigger’ımızı oluşturmuş oluyoruz. Bir End Date belirtmediğimiz takdirde trigger seçtiğimiz pencere aralığında çalışmaya devam eder.

4. Storage Event Trigger

Storage event trigger, Azure blob depolama hesabına bir dosyanın gelmesi veya silinmesi sonucu pipeline’ları çalıştırır.

Bu trigger aşağıdaki senaryolarda kullanılmaya elverişlidir:

  • ERP’de bulunmayan ve raporlamada kullanılan mapping bilgilerinin veri ambarı sistemine aktarılması (Örnek : ürün kategorileri, bilanço/gelir tablosu hiyerarşileri, vb)
  • İstatistiksel ve yenilenme periyodu az olan verilerin aktarılması (Örnek: TÜİK verileri)

Şimdi bir örnekle bu trigger’ı ele alalım:

Bir ilaç şirketinin veri ambarına mümessillerin araba bilgilerini aktarmamız gerekiyor. Bu bilgilerin olduğu dimension dosyası belirli olmayan aralıklarda güncelleniyor.

DimCar.csv dosyası

Adı DimCar olan bu dosyayı dimensions adlı bir container içinde blob storage’da tutuyoruz.

Blob storage

Bu dosyayı da bir Azure SQL Database’e yazan bir pipeline’ımız var.

Copy Car Data Pipeline

DimCar dosyanın güncel versiyonu yüklendiğinde pipeline’ı çalıştıracak bir storage event trigger oluşturmamız lazım. Bu trigger’ı oluştururken type’ı storege event seçiyoruz. Daha sonrasında sırasıyla abonelik hesabımızı ve storage account adını trigger’a giriyoruz. Container name kısmına dosyamınızn olduğu container ismini giriyoruz. Blob path begins ve ends with kısımlarına da sırasıyla dosya adı ve tipini giriyoruz. Event sekmesinde dosya oluşturma ya da silinme aksiyonlarından birini seçememiz gerekiyor. Blob created’ı seçerek dosya oluştuğu anda çalışmasını ayarlamış oluyoruz. Ignore empty blobs seçeneğini de Yes seçerek içi boş olan bir dosya eklenmesi durumununda pipeline’ının çalışmasını engellemiş oluyoruz.

Bu trigger’ı ilgili pipeline’a ekledikten sonra dosyayı tekrar yüklediğimizde trigger çalışmış oluyor. Trigger ve pipeline çalışma loglarını Monitor ekranından görebilirsiniz.

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.