Membuat aplikasi untuk menjalankan perintah manajemen

Beralih layanan menggunakan menu tarik-turun Versi. Pelajari selengkapnya tentang navigasi.
Berlaku untuk: ✅ Microsoft Fabric ✅ Azure Data Explorer

Dalam artikel ini, Anda 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. Kemudian tambahkan kode berikut:

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

    Nota

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

    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 membongkah nama kolom dalam tabel hasil dan mencetak setiap pasangan nilai nama 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 pengganti <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.

    Nota

    Anda akan menggunakan metode ExecuteControlCommand 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 pemrosesan batch tingkat tabel

Anda dapat menyesuaikan perilaku pengelompokan pengumpulan data untuk tabel dengan mengubah kebijakan pada tabel tersebut. Untuk informasi selengkapnya, lihat kebijakan IngestionBatching.

Nota

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

Misalnya, Anda dapat memodifikasi aplikasi untuk menetapkan batas waktu kebijakan batching penyerapan sebagai 30 detik dengan menyesuaikan kebijakan ingestionBatching pada tabel MyStormEvents 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 dapat menggunakan perintah manajemen untuk menampilkan kebijakan penyimpanan database.

Misalnya, Anda dapat mengubah aplikasi untuk menampilkan kebijakan penyimpanan database Anda menggunakan kode berikut. Hasilnya diatur untuk mengeluarkan 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 berikutnya