Executar uma consulta básica e processar os resultados
Em seu IDE ou editor de texto preferido, crie um projeto ou arquivo chamado consulta básica usando a convenção apropriada para seu idioma preferido. Em seguida, adicione o seguinte código:
using Kusto.Data;
using Kusto.Data.Net.Client;
namespace BasicQuery {
class BasicQuery {
static void Main(string[] args) {
var clusterUri = "https://help.kusto.windows.net/";
var kcsb = new KustoConnectionStringBuilder(clusterUri)
.WithAadUserPromptAuthentication();
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
}
}
}
}
from azure.kusto.data import KustoClient, KustoConnectionStringBuilder
def main():
cluster_uri = "https://help.kusto.windows.net"
kcsb = KustoConnectionStringBuilder.with_interactive_login(cluster_uri)
with KustoClient(kcsb) as kusto_client:
if __name__ == "__main__":
main()
import { Client as KustoClient, KustoConnectionStringBuilder } from "azure-kusto-data";
import { InteractiveBrowserCredentialInBrowserOptions } from "@azure/identity";
async function main() {
const clusterUri = "https://help.kusto.windows.net";
const authOptions = {
clientId: "5e39af3b-ba50-4255-b547-81abfb507c58",
redirectUri: "http://localhost:5173",
} as InteractiveBrowserCredentialInBrowserOptions;
const kcsb = KustoConnectionStringBuilder.withUserPrompt(clusterUri, authOptions);
const kustoClient = new KustoClient(kcsb);
}
main();
Observação
Para aplicativos Node.js, use InteractiveBrowserCredentialNodeOptions em vez de InteractiveBrowserCredentialInBrowserOptions.
Defina o banco de dados e a consulta a serem executados. A consulta retorna a data, o estado e o dano total relacionado ao tornado em que o dano total excedeu 100 milhões de dólares.
Usar posições ordinais para acessar valores de coluna
Quando a ordem das colunas em um resultado de consulta é conhecida, é mais eficiente acessar os valores das colunas pela posição ordinal no conjunto de resultados do que pelo nome da coluna. Opcionalmente, no runtime, você pode usar um método de biblioteca para determinar um ordinal de coluna do nome da coluna.
Observação
Você pode controlar a presença e a ordem das colunas em um resultado de consulta usando os project operadores ou project-away .
Por exemplo, você pode modificar o código anterior para acessar os valores das StartTimecolunas , Statee DailyDamage por suas posições ordinais no conjunto de resultados:
Em C#, você só pode acessar os valores das colunas por suas posições ordinais no conjunto de resultados. Você não pode usar os nomes de coluna; portanto, o código permanece o mesmo.
int columnNoStartTime = response.GetOrdinal("StartTime");
int columnNoState = response.GetOrdinal("State");
int columnNoDailyDamage = response.GetOrdinal("DailyDamage");
Console.WriteLine("Daily tornado damages over 100,000,000$:");
while (response.Read()) {
Console.WriteLine("{0} - {1}, {2}",
response.GetDateTime(columnNoStartTime),
response.GetString(columnNoState),
response.GetInt64(columnNoDailyDamage));
}
state_col = 0
start_time_col = next(col.ordinal for col in response.primary_results[0].columns if col.column_name == "StartTime")
damage_col = 2
print("Daily damages over 100,000,000$:")
for row in response.primary_results[0]:
print(row[start_time_col], "-", row[state_col], ",", row[damage_col], "$")
Personalizar o comportamento da consulta com as propriedades de solicitação do cliente
Você pode personalizar o comportamento de uma consulta definindo as propriedades de solicitação do cliente. Para obter mais informações sobre as opções disponíveis, consulte propriedades de solicitação de cliente.
Por exemplo, você pode substituir a kusto_client.execute_query chamada no código anterior para passar uma ID de solicitação personalizada e definir o tempo limite da consulta como 1 minuto. Para usar as propriedades de solicitação do cliente, você deve importar a ClientRequestProperties classe .
using Kusto.Data.Common;
var crp = new ClientRequestProperties();
// Set a custom client request identifier
crp.ClientRequestId = "QueryDemo" + Guid.NewGuid().ToString();
// Set the query timeout to 1 minute
crp.SetOption(ClientRequestProperties.OptionServerTimeout, "1m");
using (var response = kustoClient.ExecuteQuery(database, query, crp)) {
}
from azure.kusto.data import ClientRequestProperties
from datetime import datetime
import uuid;
crp = ClientRequestProperties()
# Set a custom client request identifier
crp.client_request_id = "QueryDemo" + str(uuid.uuid4())
# Set the query timeout to 1 minute
crp.set_option(crp.request_timeout_option_name, datetime.timedelta(minutes=1))
response = kusto_client.execute_query(database, query, crp)
import { ClientRequestProperties } from "azure-kusto-data";
import { v4 as uuidv4 } from "uuid";
const crp = new ClientRequestProperties();
// Set a custom client request identifier
crp.clientRequestId = "QueryDemo" + uuidv4();
// Set the query timeout to 1 minute
crp.setServerTimeout(1000 * 60);
const response = await kustoClient.execute(database, query, crp);
import com.microsoft.azure.kusto.data.ClientRequestProperties;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
ClientRequestProperties crp = new ClientRequestProperties();
// Set a custom client request identifier
crp.setClientRequestId("QueryDemo" + UUID.randomUUID());
// Set the query timeout to 1 minute
crp.setTimeoutInMilliSec(TimeUnit.MINUTES.toMillis(60));
KustoOperationResult response = kusto_client.execute(database, query, crp);
Usar parâmetros de consulta para proteger a entrada do usuário
Os parâmetros de consulta são importantes para manter a segurança e a proteção de seus dados. Ele o protege de potenciais atores mal-intencionados que podem tentar obter acesso não autorizado ou corromper seus dados. Para obter mais informações sobre consultas parametrizadas, consulte Instrução de declaração de parâmetros de consulta.
Por exemplo, você pode modificar o código anterior para passar o valor EventType e o valor mínimo de DailyDamage como parâmetros para a consulta. Para usar parâmetros:
Declarar os parâmetros no texto da consulta
Substitua os valores de propriedade no texto da consulta pelos nomes dos parâmetros
Definir os valores de parâmetro nas propriedades de solicitação de cliente passadas para o método execute
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulte https://aka.ms/ContentUserFeedback.