Bagikan melalui


Membuat aplikasi untuk menjalankan perintah manajemen

Dalam artikel ini, Anda akan mempelajari cara:

Prasyarat

Siapkan lingkungan pengembangan Anda untuk menggunakan pustaka klien Kusto.

Jalankan perintah manajemen dan proses hasilnya

Di IDE atau editor teks pilihan Anda, buat proyek atau file bernama perintah manajemen menggunakan konvensi yang sesuai untuk bahasa pilihan Anda. Tambahkan kode berikut:

  1. Buat aplikasi klien yang menghubungkan kluster Anda. Ganti tempat penampung <your_cluster_uri> dengan nama kluster Anda.

    Catatan

    Untuk perintah manajemen, Anda akan menggunakan CreateCslAdminProvider metode pabrik klien.

    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. Tentukan fungsi yang mencetak perintah yang dijalankan dan tabel yang dihasilkan. Fungsi ini membonggar nama kolom dalam tabel hasil dan mencetak setiap pasangan nama-nilai pada baris baru.

    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. Tentukan perintah yang akan dijalankan. Perintah membuat tabel yang disebut MyStormEvents dan menentukan skema tabel sebagai daftar nama dan jenis kolom. Ganti tempat penampung <your_database> dengan nama database Anda.

    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. Jalankan perintah dan cetak hasilnya menggunakan fungsi yang ditentukan sebelumnya.

    Catatan

    Anda akan menggunakan ExecuteControlCommand metode untuk menjalankan perintah .

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

Kode lengkap akan terlihat seperti ini:

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));
        }
      }
    }
  }
}

Jalankan aplikasi Anda

Di shell perintah, gunakan perintah berikut untuk menjalankan aplikasi Anda:

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

Anda akan melihat hasil yang mirip dengan yang berikut ini:

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

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

Mengubah kebijakan batching penyerapan tingkat tabel

Anda dapat menyesuaikan perilaku batching penyerapan untuk tabel dengan mengubah kebijakan tabel terkait. Untuk informasi selengkapnya, lihat Kebijakan IngestionBatching.

Catatan

Jika Anda tidak menentukan semua parameter PolicyObject, parameter yang tidak ditentukan akan diatur ke nilai default. Misalnya, menentukan hanya "MaximumBatchingTimeSpan" yang akan menghasilkan "MaximumNumberOfItems" dan "MaximumRawDataSizeMB" yang diatur ke default.

Misalnya, Anda dapat memodifikasi aplikasi untuk mengubah nilai batas waktu kebijakan batching penyerapan menjadi 30 detik dengan mengubah ingestionBatching kebijakan untuk MyStormEvents tabel menggunakan perintah berikut:

// 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);
}

Saat menambahkan kode ke aplikasi dan menjalankannya, Anda akan melihat hasil yang mirip dengan yang berikut ini:

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

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

Perlihatkan kebijakan penyimpanan tingkat database

Anda bisa menggunakan perintah manajemen untuk menampilkan kebijakan penyimpanan database.

Misalnya, Anda dapat memodifikasi aplikasi untuk menampilkan kebijakan retensi database Anda menggunakan kode berikut. Hasilnya dikumpulkan untuk memproyeksikan dua kolom dari hasil:

// 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);
}

Saat menambahkan kode ke aplikasi dan menjalankannya, Anda akan melihat hasil yang mirip dengan yang berikut ini:

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

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

Langkah selanjutnya