Ausführen einer einfachen Abfrage und Verarbeiten der Ergebnisse
Erstellen Sie in Ihrer bevorzugten IDE oder dem Text-Editor ein Projekt oder eine Datei namens basic query mithilfe der Konvention, die für Ihre bevorzugte Sprache geeignet ist. Fügen Sie dann den folgenden Code hinzu:
Erstellen Sie eine Client-App, die eine Verbindung mit dem Hilfecluster herstellt.
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();
Hinweis
Verwenden Sie InteractiveBrowserCredentialNodeOptions für Node.js Apps anstelle von InteractiveBrowserCredentialInBrowserOptions.
Definieren Sie die auszuführende Datenbank und Abfrage. Die Abfrage gibt das Datum, den Zustand und den gesamten Tornadoschaden zurück, bei dem der Gesamtschaden 100 Millionen Dollar überschritten hat.
Verwenden von Ordnungspositionen für den Zugriff auf Spaltenwerte
Wenn die Reihenfolge der Spalten in einem Abfrageergebnis bekannt ist, ist es effizienter, auf die Werte der Spalten nach ihrer Ordnungsposition im Resultset als nach ihrem Spaltennamen zuzugreifen. Optional können Sie zur Laufzeit eine Bibliotheksmethode verwenden, um eine Spalten ordnungszahl anhand des Spaltennamens zu bestimmen.
Hinweis
Sie können das Vorhandensein und die Reihenfolge von Spalten in einem Abfrageergebnis mithilfe der project Operatoren oder project-away steuern.
Sie können z. B. den vorherigen Code ändern, um auf die Werte der StartTimeSpalten , Stateund DailyDamage deren Ordnungspositionen im Resultset zuzugreifen:
In C# können Sie nur anhand ihrer Ordnungspositionen im Resultset auf die Werte der Spalten zugreifen. Sie können die Spaltennamen nicht verwenden. daher bleibt der Code gleich.
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], "$")
Anpassen des Abfrageverhaltens mit Clientanforderungseigenschaften
Sie können das Verhalten einer Abfrage anpassen, indem Sie Clientanforderungseigenschaften festlegen. Weitere Informationen zu den verfügbaren Optionen finden Sie unter Clientanforderungseigenschaften.
Beispielsweise können Sie den kusto_client.execute_query Aufruf im vorherigen Code ersetzen, um eine benutzerdefinierte Anforderungs-ID zu übergeben und das Abfragetimeout auf 1 Minute festzulegen. Um die Clientanforderungseigenschaften zu verwenden, müssen Sie die ClientRequestProperties -Klasse importieren.
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);
Verwenden von Abfrageparametern zum Schutz von Benutzereingaben
Abfrageparameter sind wichtig, um die Sicherheit und den Schutz Ihrer Daten zu gewährleisten. Es schützt sie vor potenziellen böswilligen Akteuren, die versuchen, sich unbefugten Zugriff auf Ihre Daten zu verschaffen oder diese zu beschädigen. Weitere Informationen zu parametrisierten Abfragen finden Sie unter Abfrageparameterdeklarationsanweisung.
Beispielsweise können Sie den vorherigen Code so ändern, dass der EventType-Wert und der DailyDamage-Mindestwert als Parameter an die Abfrage übergeben werden. So verwenden Sie Parameter:
Deklarieren der Parameter im Abfragetext
Ersetzen Sie die Eigenschaftswerte im Abfragetext durch die Parameternamen.
Festlegen der Parameterwerte in den Clientanforderungseigenschaften, die an die execute-Methode übergeben werden
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter https://aka.ms/ContentUserFeedback.