Azure Data Factory ile Analysis Services ölçeklendirme

Azure Data Factory ile Analysis Services ölçeklendirme

Azure Analysis Services ile verileri model üzerine aktarırken, değişen veri hacmine bağlı olarak servisin kapasitesi yeterli gelmeyebilir ya da belli zamanlarda kapasite yükseltilip sonrasında eski haline getirmek istenebilir.

Azure AAS, her biri farklı fiyat seçenekleri olan katmanları bulunmaktadır: Geliştirici, temel ve standart. Başlangıçta bunlardan biri seçilerek işe başlanır ve sonrasında yükseltme (scale-up) ya da küçültme (scale-down) yapılır.

Bu üç katmandaki konfigürasyonlar aşağıdaki gibidir (bu yazı yazıldığı an itibarıyla):

  • Developer
    • 10 QPU, 3 GB
  • Basic
    • B1 – 40 QPU, 10 GB
    • B2 – 80 QPU, 16 GB
  • Standart
    • S0 – 40 QPU, 10 GB
    • S1 – 100 QPU, 25 GB
    • S2 – 200 QPU, 50 GB
    • S4 – 400 QPU, 100 GB
    • S8 – 320 QPU, 200 GB
    • S8 v2 – 640 QPU, 200 GB
    • S9 – 640 QPU, 400 GB
    • S9 v2 – 1280 QPU, 400 GB

Örnek olarak S0 ile başladığımız konfigürasyonu S1‘e yükseltip ardından geri alan bir Data Factory akışı oluşturalım.

Resource Group oluşturma

rg-ssas-test adında yeni bir kaynak grubu oluşturmakla işe başlayalım.

Azure Analysis Servisi (AAS) oluşturma

Değerleri aşağıdaki gibi girerek bir Analysis Services oluşturuyoruz. Yukarıda oluşturduğumuz resource group’u ve Pricing tier olarak da S0 seçelim burada.

Bu yazıda sadece kapasite değiştireceğimz için veri modeli oluşturma ve servise ekleme gibi adımlardan bahsetmeyeceğiz.

Servisin ana sayfasına gittiğimizde Pricing tier’ı S0 olarak görüyoruz.

Burada, Subscription ID ve servisin adını (ssastest001) not ediyoruz. Aşağıda ihtiyacımız olacak.

Azure Data Factory servisi (ADF) oluşturma

Aynı resource group içinde yeni bir Data Factory servisi oluştruyoruz.

Git configuration sekmesinde Configure GIT later kutucuğunu işaretleyip diğer ayarları varsayılan hallerinde bırakıp Review & Create ve Create diyerek servisi oluşturalım.

AAS – ADF Contributor rolü tanımlama

Azure Data Factory içinden Analysis Services’a müdahale edebilmemiz için öncelikle ADF’ye Contributor rolu atamamız gerekiyor. Bunun için Analysis Services ana sayfasına gidip sol tarafta yer alan Access control (IAM) menüsünden +Add > Add role assignment‘ı seçerek rol tanımlama ekranına geliyoruz.

Next deyip gelen ekrarda Select members‘ı seçip arama kutucuğunua yukarıda oluşturduğumuz Data Factory’nin adını yazıp aratıyoruz. Hemen altında listelenen servisi seçip önce Select‘e sonra Reivew & Assign‘ı seçip atama işlemini tamamlıyoruz.

Atama sonrası IAM > Role assignments sekmesinden işlemi doğrulayabilirsiniz.

ADF’de yeni akış oluşturma

Azure Data Factory ana sayfasındaki Launch studio bağlantısına tıklayarak ADF Studio uygulamasını açıyoruz.

En soldaki Author kısmından Pipelines‘ın yanındaki üç noktaya tıklayıp New pipeline‘ı seçenerek yeni bir akış oluşturalım.

Boş olarak açılan pipeline’ın içine, Activities > General altındaki Web aktivitesini sürükleyip bırakıyoruz. Eklediğimiz Web aktivitesine tıklayıp Settings sekmesine geldiğimizde doldurmamız gereken birkaç alan bulunuyor: URL, Method, Body ve Authentication.

Bu alanlara girmemiz gereken değerleri kısaca açıklayalım.

URL

Bu kısma, AAS’ye gönderilecek isteğin adresini aşağıdaki formatta yazmamız gerekiyor:

https://management.azure.com/subscriptions/<xxx>/resourceGroups/<xxx>/providers/Microsoft.AnalysisServices/servers/<xxx>/?api-version=2017-08-01

İlk kısma Subscription ID (yukarıda not ettiğimiz), sonra resource group adı (bu örnekte rg-ssas-test) ve en son da Analysis Services servisinin adını (bu örnekte ssastest001) yazalım. Son durumda aşağıdaki gibi bir adres olmalı:

https://management.azure.com/subscriptions/111aaaa-ab11-111c-b111-12345678c0/resourceGroups/rg-ssas-test/providers/Microsoft.AnalysisServices/servers/ssastest001/?api-version=2017-08-01

Method

Bu kısmı PATCH olarak seçiyoruz.

Body

Bu kısma yükseltme yapacağımız fiyat katmanını JSON formatında yazıyoruz.

{
    "sku":{
       "capacity":1,
       "name":"S1",
       "tier":"Standard"
    }
 }

Authentication

Listedem System Assigned Managed Identity seçiyoruz. Hemen altında açılan Resource kısmına da https://management.azure.com adresini yazyıoruz.

Bütün değerler girilince son hali aşağıdaki gibi olacaktır:

Akışa AAS_Scale_Up gibi bir isim verip, üst taraftaki Publish all‘a tıklayıp kaydediyoruz.

Test

Analysis Services’ın ana sayfasında Pricing tier’ın S0 olduğunu yukarıda kontrol etmiştik. Oluşturduğumuz akışı Debug‘a tıklayıp çalıştıralım.

Akış başarılı bir şekilde tamamlandıktan sonra AAS pricing tier’ın değişip değişmediğini kontrol edelim. Görüleceği üzere S0 olan tier bilgisi S1 olarak değişmiş.

Eski hale döndürme

S0 -> S1 değişikliğini geri almak için ayrı bir akış oluşturmamız gerekiyor. Her adımı baştan yapmak yerine mevcut akışı kopyalayıp sadece JSON içeriğini değiştirmemiz yeterli olacak. Bunun için akışın sağındaki üç noktaya tıklayıp açılan menüden Clone‘u seçiyoruz.

Yeni akış içindeki Web aktivitesinde Setting sekmesindeki Body kısmında S1 olan kısmı S0 olarak değiştirelim.

{
    "sku":{
       "capacity":1,
       "name":"S0",
       "tier":"Standard"
    }
 }

Akışı AAS_Scale_Down isminde kaydedip çalıştırıyoruz.

Pricing tier’ı tekrar kontrol ettiğimizde S0 olarak değiştiğini görebilirsiniz.

Nerede kullanılır?

Analysis Services üzerine alınan veri yükü belli zaman aralıklarında (gün içinde, günlük, haftalık, aylık, vb.) artabilir ve mevcut kapasite bu verinin aktarılma süresini arttırabilir. Bu gibi durumlarda aktarımın daha hızlı yapılabilmesi için kapasite yükseltme yapılabilir.