Eseguire una query di base ed elaborare i risultati
Nell'IDE o nell'editor di testo preferito creare un progetto o un file denominato query di base usando la convenzione appropriata per il linguaggio preferito. Aggiungere quindi il codice seguente:
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
Per le app Node.js, usare InteractiveBrowserCredentialNodeOptions invece di InteractiveBrowserCredentialInBrowserOptions.
Definire il database e la query da eseguire. La query restituisce la data, lo stato e il danno totale relativo al tornado, in cui il danno totale supera i 100 milioni di dollari.
Usare le posizioni ordinali per accedere ai valori delle colonne
Quando l'ordine delle colonne in un risultato di query è noto, è più efficiente accedere ai valori delle colonne in base alla relativa posizione ordinale nel set di risultati rispetto al nome della colonna. Facoltativamente, in fase di esecuzione è possibile usare un metodo di libreria per determinare un ordinale di colonna dal nome della colonna.
Nota
È possibile controllare la presenza e l'ordine delle colonne in un risultato della query usando gli project operatori o project-away .
Ad esempio, è possibile modificare il codice precedente per accedere ai valori delle StartTimecolonne , Statee DailyDamage in base alle rispettive posizioni ordinali nel set di risultati:
In C# è possibile accedere solo ai valori delle colonne in base alle rispettive posizioni ordinali nel set di risultati. Non è possibile usare i nomi delle colonne; di conseguenza, il codice rimane invariato.
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], "$")
Personalizzare il comportamento delle query con le proprietà della richiesta client
È possibile personalizzare il comportamento di una query impostando le proprietà della richiesta client. Per altre informazioni sulle opzioni disponibili, vedere Proprietà delle richieste client.
Ad esempio, è possibile sostituire la kusto_client.execute_query chiamata nel codice precedente per passare un ID richiesta personalizzato e impostare il timeout della query su 1 minuto. Per usare le proprietà della richiesta client, è necessario importare la 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);
Usare i parametri di query per proteggere l'input dell'utente
I parametri di query sono importanti per mantenere la sicurezza e la protezione dei dati. Protegge da potenziali attori malintenzionati che potrebbero tentare di ottenere l'accesso non autorizzato o danneggiare i dati. Per altre informazioni sulle query con parametri, vedere Istruzione di dichiarazione dei parametri di query.
Ad esempio, è possibile modificare il codice precedente per passare il valore EventType e il valore minimo DailyDamage come parametri alla query. Per usare i parametri:
Dichiarare i parametri nel testo della query
Sostituire i valori delle proprietà nel testo della query con i nomi dei parametri
Impostare i valori dei parametri nelle proprietà della richiesta client passate al metodo execute
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedere https://aka.ms/ContentUserFeedback.