public void CreateTableIfNotExists(string table, string mappingName) { try { using (var kustoAdminClient = KustoClientFactory.CreateCslAdminProvider(_kustoConnectionStringBuilder)) { // check if already exists. var showTableCommands = CslCommandGenerator.GenerateTablesShowDetailsCommand(); var existingTables = kustoAdminClient.ExecuteControlCommand <IngestionMappingShowCommandResult>(DatabaseName, showTableCommands).Select(x => x.Name).ToList(); if (existingTables.Contains(table)) { Logger.Info($"Table {table} already exists"); return; } // Create Columns var command = CslCommandGenerator.GenerateTableCreateCommand(table, GetColumns()); kustoAdminClient.ExecuteControlCommand(databaseName: DatabaseName, command: command); // Create Mapping command = CslCommandGenerator.GenerateTableJsonMappingCreateCommand( table, mappingName, GetJsonColumnMappings()); kustoAdminClient.ExecuteControlCommand(databaseName: DatabaseName, command: command); } } catch (Exception ex) { Logger.Error($"Cannot create table due to {ex}"); } }
public IEnumerable <IDictionary <string, object> > ExecuteQuery(string query, Dictionary <string, string> queryParameters) { var clientRequestProperties = new ClientRequestProperties( options: null, parameters: queryParameters); using (var client = KustoClientFactory.CreateCslQueryProvider(_kustoConnectionStringBuilder)) { var reader = client.ExecuteQuery(DatabaseName, query, clientRequestProperties); var names = Enumerable.Range(0, reader.FieldCount) .Select(i => reader.GetName(i)) .ToArray(); while (reader.Read()) { yield return(Enumerable.Range(0, reader.FieldCount) .ToDictionary(i => names[i], i => reader.GetValue(i))); } } }