Exécuter une requête de base et traiter les résultats
Dans votre IDE ou éditeur de texte préféré, créez un projet ou un fichier nommé requête de base à l’aide de la convention appropriée pour votre langage préféré. Ensuite, ajoutez le code suivant :
Créez une application cliente qui se connecte au cluster d’aide.
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();
Notes
Pour Node.js applications, utilisez InteractiveBrowserCredentialNodeOptions au lieu de InteractiveBrowserCredentialInBrowserOptions.
Définissez la base de données et la requête à exécuter. La requête retourne la date, l’état et le total des dommages liés à la tornade où le dommage total a dépassé 100 millions de dollars.
Utiliser des positions ordinales pour accéder aux valeurs de colonne
Lorsque l’ordre des colonnes dans un résultat de requête est connu, il est plus efficace d’accéder aux valeurs des colonnes par leur position ordinale dans le jeu de résultats que par leur nom de colonne. Si vous le souhaitez, au moment de l’exécution, vous pouvez utiliser une méthode de bibliothèque pour déterminer un ordinal de colonne à partir de son nom de colonne.
Notes
Vous pouvez contrôler la présence et l’ordre des colonnes dans un résultat de requête à l’aide des project opérateurs ou project-away .
Par exemple, vous pouvez modifier le code précédent pour accéder aux valeurs des colonnes , Stateet DailyDamage en fonction de StartTimeleur position ordinale dans le jeu de résultats :
En C#, vous pouvez accéder aux valeurs des colonnes uniquement par leur position ordinale dans le jeu de résultats. Vous ne pouvez pas utiliser les noms de colonnes ; par conséquent, le code reste le même.
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], "$")
Personnaliser le comportement des requêtes avec les propriétés de requête du client
Vous pouvez personnaliser le comportement d’une requête en définissant les propriétés de requête du client. Pour plus d’informations sur les options disponibles, consultez Propriétés de la demande client.
Par exemple, vous pouvez remplacer l’appel kusto_client.execute_query dans le code précédent pour passer un ID de requête personnalisé et définir le délai d’expiration de la requête sur 1 minute. Pour utiliser les propriétés de requête du client, vous devez importer 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);
Utiliser des paramètres de requête pour protéger les entrées utilisateur
Les paramètres de requête sont importants pour maintenir la sécurité et la protection de vos données. Il le protège contre les acteurs malveillants potentiels qui peuvent tenter d’obtenir un accès non autorisé à vos données ou d’endommager vos données. Pour plus d’informations sur les requêtes paramétrables, consultez Instruction de déclaration des paramètres de requête.
Par exemple, vous pouvez modifier le code précédent pour passer la valeur EventType et la valeur minimale DailyDamage en tant que paramètres à la requête. Pour utiliser des paramètres :
Déclarer les paramètres dans le texte de la requête
Remplacez les valeurs de propriété dans le texte de la requête par les noms de paramètres
Définir les valeurs de paramètre dans les propriétés de requête du client passées à la méthode execute
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez https://aka.ms/ContentUserFeedback.