Een eenvoudige query uitvoeren en de resultaten verwerken
Maak in uw favoriete IDE of teksteditor een project of bestand met de naam Basisquery met behulp van de conventie die geschikt is voor uw voorkeurstaal. Voeg vervolgens de volgende code toe:
Maak een client-app die verbinding maakt met het Help-cluster.
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();
Notitie
Gebruik InteractiveBrowserCredentialNodeOptions voor Node.js apps in plaats van InteractiveBrowserCredentialInBrowserOptions.
Definieer de database en query die moet worden uitgevoerd. De query retourneert de datum, status en totale tornadogerelateerde schade waarbij de totale schade de 100 miljoen dollar overschrijdt.
Ordinale posities gebruiken om toegang te krijgen tot kolomwaarden
Wanneer de volgorde van kolommen in een queryresultaat bekend is, is het efficiƫnter om toegang te krijgen tot de waarden van de kolommen op basis van hun rangtele positie in de resultatenset dan op basis van hun kolomnaam. Optioneel kunt u tijdens runtime een bibliotheekmethode gebruiken om een kolomordinaal te bepalen op basis van de kolomnaam.
Notitie
U kunt de aanwezigheid en volgorde van kolommen in een queryresultaat bepalen met behulp van de project operators of project-away .
U kunt bijvoorbeeld de vorige code wijzigen om toegang te krijgen tot de waarden van de StartTimekolommen , Stateen DailyDamage op hun rangtelposities in de resultatenset:
In C# hebt u alleen toegang tot de waarden van de kolommen op basis van hun rangordinale positie in de resultatenset. U kunt de kolomnamen niet gebruiken. daarom blijft de code hetzelfde.
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], "$")
Querygedrag aanpassen met clientaanvraageigenschappen
U kunt het gedrag van een query aanpassen door eigenschappen van clientaanvragen in te stellen. Zie Eigenschappen van clientaanvragen voor meer informatie over beschikbare opties.
U kunt bijvoorbeeld de aanroep in de kusto_client.execute_query vorige code vervangen om een aangepaste aanvraag-id door te geven en de time-out van de query in te stellen op 1 minuut. Als u de eigenschappen van de clientaanvraag wilt gebruiken, moet u de ClientRequestProperties klasse importeren.
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);
Queryparameters gebruiken om gebruikersinvoer te beveiligen
Queryparameters zijn belangrijk voor het onderhouden van de beveiliging en bescherming van uw gegevens. Het beschermt het tegen mogelijke kwaadwillende actoren die proberen onbevoegde toegang te krijgen tot uw gegevens of uw gegevens te beschadigen. Zie De instructie Queryparametersdeclaratie voor meer informatie over geparameteriseerde query's.
U kunt bijvoorbeeld de vorige code wijzigen om de EventType-waarde en de minimumwaarde DailyDamage als parameters door te geven aan de query. Parameters gebruiken:
De parameters in de querytekst declareren
Vervang de eigenschapswaarden in de querytekst door de parameternamen
Stel de parameterwaarden in de eigenschappen van de clientaanvraag in die zijn doorgegeven aan de methode execute
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie: https://aka.ms/ContentUserFeedback.