Azure Veri Gezgini için Azure DevOps Görevi

Azure DevOps Services yüksek performanslı işlem hatları, ücretsiz özel Git depoları, yapılandırılabilir Kanban panoları ve kapsamlı otomatik ve sürekli test özellikleri gibi geliştirme işbirliği araçları sağlar. Azure Pipelines , kodunuzu herhangi bir dil, platform ve bulutla çalışan yüksek performanslı işlem hatlarıyla dağıtmak için CI/CD'yi yönetmenizi sağlayan bir Azure DevOps özelliğidir. Azure Veri Gezgini - İşlem Hattı Araçları, yayın işlem hatları oluşturmanızı ve veritabanı değişikliklerinizi Azure Veri Gezgini veritabanlarınıza dağıtmanızı sağlayan Azure Pipelines görevidir. Visual Studio Market'te ücretsiz olarak kullanılabilir. Bu uzantı 3 temel görev içerir:

  • Azure Veri Gezgini Komutu - Azure Veri Gezgini kümesinde Yönetici Komutlarını çalıştırma

  • Azure Veri Gezgini Sorgusu - Azure Veri Gezgini kümesinde Sorgu çalıştırma ve sonuçları ayrıştırma

  • Azure Veri Gezgini Sorgu Sunucusu Geçidi - Sorgu sonucuna bağlı olarak Geçit sürümlerine aracısız görev

    Görev Türleri.

Bu belgede, şema değişikliklerinizi veritabanınıza dağıtmak için Azure Veri Gezgini - İşlem Hattı Araçları görevinin kullanımıyla ilgili basit bir örnek açıklanmaktadır. Ci/CD işlem hatlarının tamamı için Azure DevOps belgelerine bakın.

Önkoşullar

İçeriğinizi yayına hazırlama

, bir görevdeki kümeye karşı yönetici komutlarını çalıştırmanın üç yolu vardır.

Komut kaynağı denetimi seçenekleri.

  • Yerel aracı klasöründen birden çok komut dosyası almak için arama deseni kullanma (Derleme kaynakları veya Yayın yapıtları)

    Yerel klasör seçeneği.

  • Komutları satır içinde yazma

    Satır içi komut seçeneği.

  • Komut dosyalarını doğrudan Git kaynak denetiminden almak için bir dosya yolu belirtin (önerilir)

    Git dosyaları seçeneği.

    Git deponuzda aşağıdaki örnek klasörleri (İşlevler, İlkeler, Tablolar) oluşturun. Aşağıda görüldüğü gibi dosyaları buradan ilgili klasörlere kopyalayın ve değişiklikleri işleyin. Aşağıdaki iş akışını yürütmek için örnek dosyalar sağlanır.

    Depo için klasörler oluşturun.

    İpucu

    Kendi iş akışınızı oluştururken kodunuzu bir kez etkili hale getirmenizi öneririz. Örneğin, yerine kullanın .create-merge table ve işlev yerine .create işlevi kullanın.create-or-alter..create table

Yayın işlem hattı oluşturma

  1. Azure DevOps kuruluşunuzda oturum açın.

  2. Sol taraftaki menüden İşlem Hatları>Yayınları'nın ardından Yeni işlem hattı'nın seçilmesini seçin.

    Yeni işlem hattı.

  3. Yeni yayın işlem hattı penceresi açılır. İşlem Hatları sekmesindeki Şablon seçin bölmesinde boş iş'i seçin.

    Bir şablon seçin.

  4. Aşama düğmesini seçin. Aşama bölmesinde Aşama adını ekleyin. İşlem hattınızı kaydetmek için Kaydet'i seçin.

    Sahneyi adlandırın.

  5. Yapıt ekle düğmesini seçin. Yapıt ekle bölmesinde kodunuzun bulunduğu depoyu seçin, ilgili bilgileri doldurun ve Ekle'ye tıklayın. İşlem hattınızı kaydetmek için Kaydet'i seçin.

    Yapıt ekleyin.

  6. Değişkenler sekmesinde + Ekle'yi seçerek görevde kullanılacak Uç Nokta URL'si için bir değişken oluşturun. Uç noktanın Adını ve Değerini yazın. İşlem hattınızı kaydetmek için Kaydet'i seçin.

    Değişken oluşturma.

    Endpoint_URL bulmak için Azure portal Azure Veri Gezgini Kümenizin genel bakış sayfası Azure Veri Gezgini kümesi URI'sini içerir. URI'yi aşağıdaki biçimde https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName>oluşturur. Örneğin, https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB

    Azure Veri Gezgini kümesi URI'si.

Klasörleri dağıtmak için görevler oluşturma

  1. İşlem Hattı sekmesinde, görev eklemek için 1 iş, 0 görev'e tıklayın.

    Görev ekleme.

  2. Tablolar, İşlevler ve İlkeler klasörlerinden dosyaları dağıtmak üzere komut görevleri oluşturmak için aşağıdaki adımları yineleyin:

    Yönetici komutları ekleyin.

    1. Görevler sekmesinde Aracı işine göre öğesini seçin + ve Azure Veri Gezgini araması yapın.

    2. Azure Veri Gezgini Komutunu Çalıştır'ın altında Ekle'yi seçin.

    3. Kusto Komutu'na tıklayın ve görevi aşağıdaki bilgilerle güncelleştirin:

      • Görünen ad: Görevin adı. Örneğin, burada <FOLDER> oluşturmakta Deploy <FOLDER> olduğunuz dağıtım görevinin klasörünün adıdır.

      • Dosya yolu: Her klasör için, görevin ilgili klasörü olarak <FOLDER> yolu */<FOLDER>/*.csl belirtin.

      • Uç nokta URL'siEndPoint URL: Önceki adımda oluşturulan değişkeni belirtin.

      • Hizmet Uç Noktasını Kullan: Bu seçeneği belirleyin.

      • Hizmet Uç Noktası: Mevcut bir hizmet uç noktasını seçin veya Azure Veri Gezgini hizmet bağlantısı ekle penceresinde aşağıdaki bilgileri sağlayan yeni bir uç nokta (+ Yeni) oluşturun:

        Ayar Önerilen değer
        Bağlantı adı Bu hizmet uç noktasını tanımlamak için bir ad girin
        Küme Url'si Değer, Azure portal Azure Veri Gezgini Kümenizin genel bakış bölümünde bulunabilir
        Hizmet Sorumlusu Kimliği Microsoft Entra Uygulama Kimliğini girin (önkoşul olarak oluşturulur)
        Hizmet Sorumlusu Uygulama Anahtarı Microsoft Entra Uygulama Anahtarını girin (önkoşul olarak oluşturulur)
        kiracı kimliğini Microsoft Entra Microsoft Entra kiracınızı (microsoft.com veya contoso.com gibi) girin

      Tüm işlem hatlarının bu bağlantıyı kullanmasına izin ver onay kutusunu ve ardından Tamam'ı seçin.

      Hizmet bağlantısı ekleyin.

  3. Kaydet'i seçin ve görevler sekmesinde üç görev olduğunu doğrulayın: Tabloları Dağıtma, İşlevleri Dağıtma ve İlkeleri Dağıtma.

    Tüm klasörleri dağıtın.

Sorgu görevi oluşturma

Gerekirse, kümeye karşı sorgu çalıştırmak için bir görev oluşturun. Derleme veya Yayın işlem hattında sorgu çalıştırmak, bir veri kümesini doğrulamak ve sorgu sonuçlarına göre bir adımın başarılı veya başarısız olmasını sağlamak için kullanılabilir. Görevlerin başarı ölçütleri, sorgunun döndürdüğü değere bağlı olarak bir satır sayısı eşiğine veya tek bir değere dayalı olabilir.

  1. Görevler sekmesinde Aracı işine göre öğesini seçin + ve Azure Veri Gezgini araması yapın.

  2. Azure Veri Gezgini Sorgusunu Çalıştır'ın altında Ekle'yi seçin.

  3. Kusto Sorgu'yu seçin ve görevi aşağıdaki bilgilerle güncelleştirin:

    • Görünen ad: Görevin adı. Örneğin, Sorgu kümesi.
    • Tür: Satır içi'yi seçin.
    • Sorgu: Çalıştırmak istediğiniz sorguyu girin.
    • Uç nokta URL'siEndPoint URL: Daha önce oluşturulan değişkeni belirtin.
    • Hizmet Uç Noktasını Kullan: Bu seçeneği belirleyin.
    • Hizmet Uç Noktası: Bir hizmet uç noktası seçin.

    Sorgu görevi.

  4. Görev Sonuçları'nın altında, sorgunuzun sonuçlarına göre görevin başarı ölçütlerini aşağıdaki gibi seçin:

    • Sorgunuz satır döndürüyorsa Satır Sayısı'nı seçin ve ihtiyacınız olan ölçütleri belirtin.

      Sorgu görev satırı sayısı.

    • Sorgunuz bir değer döndürürse , Tek Değer'i seçin ve beklenen sonucu sağlayın.

      Sorgu görevi tek değeri.

Sorgu Sunucusu Geçidi görevi oluşturma

Gerekirse, bir kümede sorgu çalıştırmak için bir görev oluşturun ve Sorgu Sonuçları Satır Sayısı'nı bekleyen yayın ilerleme durumunun geçişini sağlayın. Sunucu Sorgu Geçidi görevi aracısız bir iştir, yani sorgu doğrudan Azure DevOps Server üzerinde çalışır.

  1. Görevler sekmesinde Aracısız işe göre öğesini seçin + ve Azure Veri Gezgini araması yapın.

  2. Azure Veri Gezgini Sorgu Sunucusu Geçidi'nin altındaEkle'yi seçin.

  3. Kusto Sorgu Sunucusu Kapısı'na ve ardından Sunucu Kapısı Testi'ne tıklayın.

    Sunucu Kapısı Görevi'ne tıklayın.

  4. Görevi aşağıdaki bilgileri sağlayarak yapılandırın:

    • Görünen ad: Geçidin adı.
    • Hizmet Uç Noktası: Bir hizmet uç noktası seçin.
    • Veritabanı adı: Veritabanı adını belirtin.
    • Tür: Satır içi sorgu'yu seçin.
    • Sorgu: Çalıştırmak istediğiniz sorguyu girin.
    • En yüksek eşik: Sorgunun başarı ölçütleri için en yüksek satır sayısını belirtin.

    Sunucu Geçidi Görevini Yapılandırma.

Not

Sürümü çalıştırırken aşağıdakine benzer sonuçlar görmeniz gerekir.

Sorgu Kapısı Görevi.

Sürümü çalıştırma

  1. Yayın oluşturmak için + Yayın>Oluştur'u seçin.

    Yayın oluşturun.

  2. Günlükler sekmesinde dağıtım durumunun başarılı olup olmadığını denetleyin.

    Dağıtım başarılı.

Üretim öncesi sürüme dağıtım için yayın işlem hattı oluşturmayı tamamladınız.

Yaml İşlem Hattı yapılandırması

Görevler hem Azure DevOps Web Kullanıcı Arabirimi (yukarıda gösterildiği gibi) hem de işlem hattı şemasındaki Yaml kodu aracılığıyla yapılandırılabilir

Yönetici Komut Örneği Kullanımı

steps:
- task: Azure-Kusto.PublishToADX.PublishToADX.PublishToADX@1
  displayName: '<Task Name>'
  inputs:
    script: '<inline Script>'
    waitForOperation: true
    kustoUrls: '$(CONNECTIONSTRING):443?DatabaseName=""'
    customAuth: true
    connectedServiceName: '<Service Endpoint Name>'
    serialDelay: 1000
  continueOnError: true
  condition: ne(variables['ProductVersion'], '') ## Custom condition Sample

Sorgu Örneği Kullanımı

steps:
- task: Azure-Kusto.PublishToADX.ADXQuery.ADXQuery@1
  displayName: '<Task Display Name>'
  inputs:
    script: |  
     let badVer=
     RunnersLogs | where Timestamp > ago(30m)
         | where EventText startswith "$$runnerresult" and Source has "ShowDiagnostics"
         | extend State = extract(@"Status='(.*)', Duration.*",1, EventText)
         | where State == "Unhealthy"
         | extend Reason = extract(@'"NotHealthyReason":"(.*)","IsAttentionRequired.*',1, EventText)
         | extend Cluster = extract(@'Kusto.(Engine|DM|CM|ArmResourceProvider).(.*).ShowDiagnostics',2, Source)
         | where Reason != "Merge success rate past 60min is < 90%"
         | where Reason != "Ingestion success rate past 5min is < 90%"
         | where Reason != "Ingestion success rate past 5min is < 90%, Merge success rate past 60min is < 90%"
         | where isnotempty(Cluster)
         | summarize max(Timestamp) by Cluster,Reason 
         | order by  max_Timestamp desc      
         | where Reason startswith "Differe"
         | summarize by Cluster
     ;   
      DimClusters | where Cluster in (badVer)
     | summarize by Cluster , CmConnectionString , ServiceConnectionString ,DeploymentRing
     | extend ServiceConnectionString = strcat("#connect ", ServiceConnectionString)
     | where DeploymentRing == "$(DeploymentRing)"
    kustoUrls: 'https://<ClusterName>.kusto.windows.net?DatabaseName=<DataBaneName>'
    customAuth: true
    connectedServiceName: '<Service Endpoint Name>'
  continueOnError: true