Sdílet prostřednictvím


Vytvoření aplikace pro spouštění příkazů pro správu

V tomto článku získáte informace o těchto tématech:

Požadavky

Nastavte vývojové prostředí tak, aby používalo klientskou knihovnu Kusto.

Spuštění příkazu pro správu a zpracování výsledků

V preferovaném integrovaném vývojovém prostředí nebo textovém editoru vytvořte projekt nebo soubor s názvem příkazy pro správu pomocí konvence vhodné pro váš preferovaný jazyk. Pak přidejte následující kód:

  1. Vytvořte klientskou aplikaci, která připojí váš cluster. <your_cluster_uri> Zástupný symbol nahraďte názvem vašeho clusteru.

    Poznámka

    Pro příkazy pro správu použijete metodu objektu CreateCslAdminProvider pro vytváření klienta.

    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. Definujte funkci, která vytiskne spouštěný příkaz a jeho výsledné tabulky. Tato funkce rozbalí názvy sloupců ve výsledných tabulkách a vytiskne každou dvojici název-hodnota na nový řádek.

    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. Definujte příkaz, který se má spustit. Příkaz vytvoří tabulkus názvem MyStormEvents a definuje schéma tabulky jako seznam názvů a typů sloupců. <your_database> Zástupný text nahraďte názvem vaší databáze.

    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. Spusťte příkaz a pomocí dříve definované funkce vytiskněte výsledek.

    Poznámka

    Ke spuštění příkazu použijete ExecuteControlCommand metodu .

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

Úplný kód by měl vypadat takto:

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

Spusťte aplikaci

V příkazovém prostředí spusťte aplikaci pomocí následujícího příkazu:

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

Měl by se zobrazit výsledek podobný tomuto:

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

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

Změna zásad dávkování příjmu dat na úrovni tabulky

Chování příjmu dat v dávce pro tabulky můžete přizpůsobit změnou odpovídajících zásad tabulky. Další informace najdete v tématu IngestionBatching zásady.

Poznámka

Pokud nezadáte všechny parametry objektu PolicyObject, neurčené parametry se nastaví na výchozí hodnoty. Pokud například zadáte pouze MaximumBatchingTimeSpan, nastaví se hodnoty MaximumNumberOfItems a MaximumRawDataSizeMB na výchozí hodnotu.

Pomocí následujícího příkazu můžete například upravit aplikaci tak, aby změnila hodnotu časového limitu zásad dávkování příjmu ingestionBatchingMyStormEvents dat na 30 sekund:

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

Když do aplikace přidáte kód a spustíte ho, měl by se zobrazit výsledek podobný tomuto:

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

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

Zobrazení zásad uchovávání informací na úrovni databáze

K zobrazení zásad uchovávání informací databáze můžete použít příkazy pro správu.

Aplikaci můžete například upravit tak, aby zobrazovala zásady uchovávání informací databáze pomocí následujícího kódu. Výsledek se kurátoruje tak, aby se od výsledku promítly dva sloupce:

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

Když do aplikace přidáte kód a spustíte ho, měl by se zobrazit výsledek podobný tomuto:

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

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

Další krok