Aracılığıyla paylaş


Yönetim komutlarını çalıştırmak için uygulama oluşturma

Şunlar için geçerlidir: ✅Microsoft FabricAzure Veri Gezgini

Bu makalede şunların nasıl yapılacağını öğreneceksiniz:

Önkoşullar

Kusto istemci kitaplığını kullanmak için geliştirme ortamınızı ayarlayın.

Bir yönetim komutu çalıştırın ve sonuçları işleyin

Tercih ettiğiniz IDE veya metin düzenleyicisinde, tercih ettiğiniz dile uygun kuralı kullanarak yönetim komutları adlı bir proje veya dosya oluşturun. Ardından aşağıdaki kodu ekleyin:

  1. Kümenizi bağlayan bir istemci uygulaması oluşturun. <your_cluster_uri> yer tutucuyu kümenizin adıyla değiştirin.

    Not

    Yönetim komutları için CreateCslAdminProvider istemci fabrikası yöntemini kullanacaksınız.

    using Kusto.Data;
    using Kusto.Data.Net.Client;
    
    namespace ManagementCommands {
      class ManagementCommands {
        static void Main(string[] args) {
          var clusterUri = "<your_cluster_uri>";
          var kcsb = new KustoConnectionStringBuilder(clusterUri)
              .WithAadUserPromptAuthentication();
    
          using (var kustoClient = KustoClientFactory.CreateCslAdminProvider(kcsb)) {
          }
        }
      }
    }
    
  2. Çalıştırılmakta olan komutu ve sonuç tablolarını yazdıran bir işlev tanımlayın. Bu işlev, sonuç tablolarındaki sütun adlarını çözümler ve her ad-değer çiftini yeni bir satıra yazdırır.

    static void PrintResultsAsValueList(string command, IDataReader response) {
      while (response.Read()) {
        Console.WriteLine("\n{0}\n", new String('-', 20));
        Console.WriteLine("Command: {0}", command);
        Console.WriteLine("Result:");
        for (int i = 0; i < response.FieldCount; i++) {
          Console.WriteLine("\t{0} - {1}", response.GetName(i), response.IsDBNull(i) ? "None" : response.GetString(i));
        }
      }
    }
    
  3. Çalıştırılacak komutu tanımlayın. komut MyStormEvents adlı bir tablo oluşturur ve tablo şemasını sütun adları ve türleri listesi olarak tanımlar. <your_database> yer tutucuyu veritabanı adınızla değiştirin.

    string database = "<your_database>";
    string table = "MyStormEvents";
    
    // Create a table named MyStormEvents
    // The brackets contain a list of column Name:Type pairs that defines the table schema
    string command = @$".create table {table}
                      (StartTime:datetime,
                       EndTime:datetime,
                       State:string,
                       DamageProperty:int,
                       DamageCrops:int,
                       Source:string,
                       StormSummary:dynamic)";
    
  4. komutunu çalıştırın ve daha önce tanımlanmış işlevi kullanarak sonucu yazdırın.

    Not

    komutunu çalıştırmak için ExecuteControlCommand yöntemini kullanacaksınız.

    using (var response = kustoClient.ExecuteControlCommand(database, command, null)) {
      PrintResultsAsValueList(command, response);
    }
    

Kodun tamamı şöyle görünmelidir:

using Kusto.Data;
using Kusto.Data.Net.Client;

namespace ManagementCommands {
  class ManagementCommands {
    static void Main(string[] args) {
      string clusterUri = "https://<your_cluster_uri>";
      var kcsb = new KustoConnectionStringBuilder(clusterUri)
          .WithAadUserPromptAuthentication();

      using (var kustoClient = KustoClientFactory.CreateCslAdminProvider(kcsb)) {
        string database = "<your_database>";
        string table = "MyStormEvents";

        // Create a table named MyStormEvents
        // The brackets contain a list of column Name:Type pairs that defines the table schema
        string command = @$".create table {table} 
                          (StartTime:datetime,
                           EndTime:datetime,
                           State:string,
                           DamageProperty:int,
                           DamageCrops:int,
                           Source:string,
                           StormSummary:dynamic)";

        using (var response = kustoClient.ExecuteControlCommand(database, command, null)) {
          PrintResultsAsValueList(command, response);
        }
      }
    }

    static void PrintResultsAsValueList(string command, IDataReader response) {
      while (response.Read()) {
        Console.WriteLine("\n{0}\n", new String('-', 20));
        Console.WriteLine("Command: {0}", command);
        Console.WriteLine("Result:");
        for (int i = 0; i < response.FieldCount; i++) {
          Console.WriteLine("\t{0} - {1}", response.GetName(i), response.IsDBNull(i) ? "None" : response.GetString(i));
        }
      }
    }
  }
}

Uygulamanızı çalıştırma

Bir komut kabuğunda, uygulamanızı çalıştırmak için aşağıdaki komutu kullanın:

# Change directory to the folder that contains the management commands project
dotnet run .

Aşağıdakine benzer bir sonuç görmeniz gerekir:

--------------------

Command: .create table MyStormEvents 
                 (StartTime:datetime,
                  EndTime:datetime,
                  State:string,
                  DamageProperty:int,
                  Source:string,
                  StormSummary:dynamic)
Result:
   TableName - MyStormEvents
   Schema - {"Name":"MyStormEvents","OrderedColumns":[{"Name":"StartTime","Type":"System.DateTime","CslType":"datetime"},{"Name":"EndTime","Type":"System.DateTime","CslType":"datetime"},{"Name":"State","Type":"System.String","CslType":"string"},{"Name":"DamageProperty","Type":"System.Int32","CslType":"int"},{"Name":"Source","Type":"System.String","CslType":"string"},{"Name":"StormSummary","Type":"System.Object","CslType":"dynamic"}]}
   DatabaseName - MyDatabaseName
   Folder - None
   DocString - None

Tablo düzeyi veri alma toplu işlem ilkesini değiştirme

İlgili tablo ilkesini değiştirerek tablolar için veri yükleme toplu işleme davranışını özelleştirebilirsiniz. Daha fazla bilgi için bkz. AlmaBatching ilkesi.

Not

PolicyObjecttüm parametrelerini belirtmezseniz, belirtilmeyen parametreler varsayılan değerlerolarak ayarlanır. Örneğin, yalnızca "MaximumBatchingTimeSpan" belirtilmesi "MaximumNumberOfItems" ve "MaximumRawDataSizeMB" değerlerinin varsayılan olarak ayarlanmasına neden olur.

Örneğin, aşağıdaki komutu kullanarak MyStormEvents tablosunun ingestionBatching ilkesini değiştirip uygulamada alma toplu işlemi politikasının zaman aşımı değerini 30 saniye olarak değiştirebilirsiniz:

// Reduce the default batching timeout to 30 seconds
command = @$".alter-merge table {table} policy ingestionbatching '{{ ""MaximumBatchingTimeSpan"":""00:00:30"" }}'";

using (var response = kustoClient.ExecuteControlCommand(database, command, null))
{
  PrintResultsAsValueList(command, response);
}

Kodu uygulamanıza ekleyip çalıştırdığınızda aşağıdakine benzer bir sonuç görmeniz gerekir:

--------------------

Command: .alter-merge table MyStormEvents policy ingestionbatching '{ "MaximumBatchingTimeSpan":"00:00:30" }'
Result:
   PolicyName - IngestionBatchingPolicy
   EntityName - [YourDatabase].[MyStormEvents]
   Policy - {
  "MaximumBatchingTimeSpan": "00:00:30",
  "MaximumNumberOfItems": 500,
  "MaximumRawDataSizeMB": 1024
}
   ChildEntities - None
   EntityType - Table

Veritabanı düzeyinde bekletme ilkesini gösterme

Bir veritabanının bekletme ilkesinigörüntülemek için yönetim komutlarını kullanabilirsiniz.

Örneğin, veritabanınızın bekletme ilkesini görüntülemek için uygulamayı aşağıdaki kodu kullanarak değiştirebilirsiniz. Sonuç, sonuçtan iki sütunu yansıtmak için seçilmiştir:

// Show the database retention policy (drop some columns from the result)
command = @$".show database {database} policy retention | project-away ChildEntities, EntityType";

using (var response = kustoClient.ExecuteControlCommand(database, command, null)) {
  PrintResultsAsValueList(command, response);
}

Kodu uygulamanıza ekleyip çalıştırdığınızda aşağıdakine benzer bir sonuç görmeniz gerekir:

--------------------

Command: .show database YourDatabase policy retention | project-away ChildEntities, EntityType
Result:
   PolicyName - RetentionPolicy
   EntityName - [YourDatabase]
   Policy - {
  "SoftDeletePeriod": "365.00:00:00",
  "Recoverability": "Enabled"
}

Sonraki adım