Executar uma consulta básica e processar os resultados
No seu IDE ou editor de texto preferido, crie um projeto ou ficheiro com o nome de consulta básica com a convenção adequada para o 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();
Nota
Para Node.js aplicações, utilize InteractiveBrowserCredentialNodeOptions em vez de InteractiveBrowserCredentialInBrowserOptions.
Defina a base de dados e a consulta a executar. A consulta devolve a data, o estado e os danos totais relacionados com tornados em que os danos totais ultrapassaram os 100 milhões de dólares.
Utilizar posições ordinais para aceder aos valores das colunas
Quando a ordem das colunas num resultado de consulta é conhecida, é mais eficiente aceder aos valores das colunas pela respetiva posição ordinal no conjunto de resultados do que pelo respetivo nome de coluna. Opcionalmente, no runtime, pode utilizar um método de biblioteca para determinar uma coluna ordinal do respetivo nome de coluna.
Nota
Pode controlar a presença e a ordem das colunas num resultado de consulta com os project operadores ou project-away .
Por exemplo, pode modificar o código anterior para aceder aos valores das StartTimecolunas , Statee DailyDamage pelas respetivas posições ordinais no conjunto de resultados:
Em C#, só pode aceder aos valores das colunas pelas respetivas posições ordinais no conjunto de resultados. Não pode utilizar os nomes das colunas; assim, 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 do pedido de cliente
Pode personalizar o comportamento de uma consulta ao definir as propriedades do pedido de cliente. Para obter mais informações sobre as opções disponíveis, veja Propriedades do pedido de cliente.
Por exemplo, pode substituir a kusto_client.execute_query chamada no código anterior para transmitir um ID de pedido personalizado e definir o tempo limite da consulta para 1 minuto. Para utilizar as propriedades do pedido de cliente, tem de 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);
Utilizar parâmetros de consulta para proteger a entrada do utilizador
Os parâmetros de consulta são importantes para manter a segurança e a proteção dos seus dados. Protege-o de potenciais atores maliciosos que podem tentar obter acesso não autorizado ou danificar os seus dados. Para obter mais informações sobre consultas parametrizadas, veja Declaração de declaração de parâmetros de consulta.
Por exemplo, pode modificar o código anterior para transmitir o valor EventType e o valor mínimo DailyDamage como parâmetros para a consulta. Para utilizar 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 dos parâmetros nas propriedades do pedido de cliente transmitidas ao método de execução
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja: https://aka.ms/ContentUserFeedback.