Создание таблицы Kusto с именем таблицы из результата запроса - PullRequest
0 голосов
/ 22 марта 2019

Я хотел бы создать таблицу, имя которой исходит из результата запроса. Подойдет любой очень простой пример. Результатом может быть один столбец и одна строка. Мне просто нужен базовый пример, чтобы я мог настроить и изменить его в соответствии с моим требованием.

1 Ответ

1 голос
/ 22 марта 2019

любая управляющая команда, которая создает таблицу, требует, чтобы имя таблицы было известно заранее и часть текста команды.

вы можете запустить двухэтапный поток программно, где:

  • 1-й шаг возвращает имя таблицы (например, с помощью запроса),
  • 2-й шаг генерирует командную строку .create table или .set (на основе 1-го), а затем вызывает команду.

пример использования клиентской библиотеки .NET:

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

    using System.Linq;

    namespace Playground
    {
        class Program
        {
            static void Main(string[] args)
            {
                const string clusterName = "myClusterName";
                const string regionName = "westus";
                const string databaseName = "myDatabaseName";
                const string queryForTableName = "MyExistingTable | summarize count() by TableName | top 1 by count_ desc | project TableName";
                var kcsb = new KustoConnectionStringBuilder($"https://{clusterName}.{regionName}.kusto.windows.net", databaseName).WithAadUserPromptAuthentication();
                using (var queryProvider = KustoClientFactory.CreateCslQueryProvider(kcsb))
                {
                    // step 1: get the table name, based on the result of a query                    
                    var tableName = queryProvider.ExecuteQuery<string>(queryForTableName).Single();

                    using (var adminProvider = KustoClientFactory.CreateCslAdminProvider(kcsb))
                    {
                        // step 2.1: generate the control command's text, using the value from step 1
                        var createTableCommand = CslCommandGenerator.GenerateTableSetCommand(tableName, "print value = 'This is a value in my new table'", isAsync: false);

                        // step 2.2: invoke the control command
                        adminProvider.ExecuteControlCommand(createTableCommand);
                    }
                }
            }
        }
    }


...