Azure Data Factory ile Merkez Bankası Kurlarını Çekme

Emre Arı
PEAKUP Tech News
Published in
5 min readApr 18, 2023

Merhabalar, bu yazımızın konusu Azure Data Factory bileşenlerini kullanarak Merkez Bankası EVDS web servis istemcisine bağlantı sağlayıp, erişim sağladığımız bu verilerin Azure SQL ortamına aktarılması olacaktır.

İşlemleri yapabilmek için öncelikle Merkez Bankası Elektronik Veri Dağıtım Sistemi’ne kayıt olmamız ve Microsoft Azure’da bir Data Factory ile bir de Azure SQL Database’e sahip olmamız gerekmektedir.

Sırasıyla aşağıdaki işlemler ile geliştirmelere başlayabiliriz.

Elektronik Veri Dağıtım Sistemi

Adım 1.1 : Öncelikle https://evds2.tcmb.gov.tr/ adresine girip kayıt olmamız gerekmektedir.

Adım 1.2 : Kayıt olup kullanıcı bilgilerimizle giriş yaptıktan sonra profil sayfamıza gidelim.

Adım 1.3 : API Anahtarı butonuna tıkladıktan sonra yukarıda hesabımıza ait API anahtarını göreceğiz. Bu API anahtarını daha sonra örnek url oluştururken kullanacağız.

Adım 1.4 : EVDS Web Servis Kullanım Kılavuzu’ndan faydalanarak 1 Mart 2023 ile 3 Nisan 2023 tarihleri arasında GBP, USD ve EUR alış-satış kur bilgilerini json formatında veren örnek url oluşturabiliriz. Bu urlde API anahtarını da kullanmalıyız. (Bu örneğimizde tarih seçimini statik olarak yapacağız. Ancak base url + relative url mantığıyla dinamik hale de getirilebilir.)

https://evds2.tcmb.gov.tr/service/evds/series=TP.DK.USD.A-TP.DK.USD.S-TP.DK.EUR.A-TP.DK.EUR.S-TP.DK.GBP.A-TP.DK.GBP.S&startDate=01-03-2023&endDate=03-04-2023&type=json&key=APIKey

Örnek urlimizi oluşturduğumuza göre artık Azure Data Factory geliştirmelerine başlayabiliriz.

Microsoft Azure Data Factory

Adım 2.1 : https://adf.azure.com/en/datafactories adresine erişim sağlayıp geliştirme yapmak istediğimiz Data Factory ortamını seçelim.

Adım 2.2 : Giriş yaptıktan sonra sol taraftaki menüden sırasıyla “Manage” ve “Linked services” seçeneklerine tıkladıktan sonra “Create linked service” (ya da “+ New”) seçimi yaparak seçenekler arasından “HTTP” olanı seçtikten sonra “Continue” diyerek devam edelim.

Adım 2.3 : Açılan ekranda oluşturacağımız linked service için isim tanımlayıp, “Base URL” alanına da oluşturduğumuz örnek urli yazarız. “Test Connection” butonuna basıp “Connection successful” statüsünü gördükten sonra “Create” butonuna basarak linked service oluşturma işlemini tamamlarız.

Adım 2.4 : Linked service oluşturduktan sonra sol taraftaki menüden sırasıyla “Author”, “Datasets”, “New dataset” seçimleri yapılır. Açılan ekranda “HTTP” seçeneğini işaretleyip “Continue” diyerek devam edilir.

Adım 2.5 : Örnek urlimizi json formatta veri gösterecek şekilde oluşturduğumuz için çıkan ekranda da json seçeriz. Daha sonra datasetimize isim verip, “Linked service” olarak da yukarıda oluşturduğumuz “ls_http_centralbank” isimli linked service’i seçeriz.

Adım 2.6 : Kaynak olarak kullanacağımız dataseti oluşturduktan sonra “pl_dailyexchangerate” adında bir pipeline oluşturalım. Oluşturduğumuz pipeline’a “Get Data from EVDS” adını verdiğimiz bir “Copy Data” aktivitesi ekleyelim.

Adım 2.7 : “Source” sekmesine tıklayıp önce “Source dataset” olarak oluşturduğumuz “ds_http_json_centralbank” datasetini seçtikten sonra “Request method” olarak da “GET” seçeriz. “Preview data” sekmesine bastığımızda ise aşağıdaki görseldeki gibi bir json formatta verileri görüntüleyebiliriz.

Adım 2.8 : “Sink” sekmesine geldiğimizde bizden bir dataset seçmemiz isteyecektir. Burada “+ New” seçeneğine tıklayıp daha sonrasında “Azure SQL Database” seçerek devam edelim.

Adım 2.9 : Hedef datasetimize ismini verdikten sonra linked service (Azure SQL Database) seçeriz. Aşağıda 1 numaralı görselde yer alan script ile oluşturduğumuz tabloyu da “Table name” olarak tanımlarız. “Import Schema” None olarak seçip OK butonuna basarak hedef datasetimizi oluştururuz.

Adım 2.10 : Sink dataset oluşturulup tanımlandıktan sonra “Write behavior”, “Bulk insert table lock”, “Table option” ve “Pre-copy script” alanları aşağıdaki görseldeki gibi düzenlenir.

Adım 2.11 : Mapping sekmesine gelip “Import schemas” tıklandıktan sonra “Collection reference” $[‘Items’] olarak seçilir. Daha sonra aşağıda çıkan alanlardan ihtiyacımız olanlar dışındakileri silip aşağıdaki gibi bir görüntü elde ederiz.

Adım 2.12 : Mapping işlemini de yaptıktan sonra artık geliştirmelerimizi tamamladık. Pipeline’ı publish edip, sonrasında “Debug” ya da “Trigger” seçenekleriyle çalıştıralım. Başarıyla çalışacak olan pipeline’a ait execution detail ekranı da aşağıdaki gibi olacaktır.

Sonuç : Geliştirmesini yaptığımız pipeline başarıyla çalıştıktan sonra aldığımız sonuç aşağıdaki gibidir.

Yukarıda yaptığımız geliştirmeler sonrası piyasanın açık olduğu günlere ait kur bilgisini edinmiş olduk. Yukarıdaki formatta oluşturduğumuz kur tablosu iş zekası ve raporlama süreçlerinde kullanabileceğimiz durumda değildir. Oluşturduğumuz “dbo.CentralBank” tablosunu ham veri olarak düşünebiliriz. Bir sonraki yazımızda bu tabloyu SQL komutlarıyla dönüştürerek iş zekası ve raporlama süreçlerinde sağlıklı bir şekilde kullanılabilir hale getireceğiz.

Bir sonraki yazıda görüşmek üzere …

Referanslar

--

--