Exemplo n.º 1
0
        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}");
            }
        }
Exemplo n.º 2
0
        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)));
                }
            }
        }