Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
In diesem Artikel erfahren Sie, wie Sie:
- Erstellen Ihrer ersten Client-App
- Verwenden der interaktiven Authentifizierung
- Führen Sie eine einfache Abfrage aus, die Hello Kusto! ausgibt.
Voraussetzungen
Richten Sie Ihre Entwicklungsumgebung für die Verwendung der Kusto-Clientbibliothek ein.
Erstellen Ihrer App
Erstellen Sie in Ihrer bevorzugten IDE oder ihrem Text-Editor ein Projekt oder eine Datei mit dem Namen hello kusto mithilfe der Konvention, die für Ihre bevorzugte Sprache geeignet ist. Fügen Sie dann den folgenden Code hinzu:
Fügen Sie die Kusto-Client- und Zeichenfolgen-Generator-Klassen hinzu.
using Kusto.Data;
using Kusto.Data.Net.Client;
from azure.kusto.data import KustoClient, KustoConnectionStringBuilder
import { Client as KustoClient, KustoConnectionStringBuilder } from "azure-kusto-data";
import { InteractiveBrowserCredentialInBrowserOptions } from "@azure/identity";
Anmerkung
Verwenden Sie für Node.js Apps InteractiveBrowserCredentialNodeOptions anstelle von InteractiveBrowserCredentialInBrowserOptions.
import com.microsoft.azure.kusto.data.Client;
import com.microsoft.azure.kusto.data.ClientFactory;
import com.microsoft.azure.kusto.data.KustoOperationResult;
import com.microsoft.azure.kusto.data.KustoResultSetTable;
import com.microsoft.azure.kusto.data.auth.ConnectionStringBuilder;
Definieren Sie eine leere Funktion mit dem Namen main, und rufen Sie sie auf.
namespace HelloKusto {
class HelloKusto {
static void Main(string[] args) {
}
}
}
def main():
if __name__ == "__main__":
main()
async function main()
{
}
main();
public class HelloKusto
{
public static void main(String[] args) throws Exception {
try {
}
}
}
Erstellen Sie ein Verbindungszeichenfolgen-Generator-Objekt, das den Cluster-URI definiert, und legt den Authentifizierungsmodus auf interaktiv fest. Weitere Informationen zum Cluster-URI finden Sie unter Kusto-Verbindungszeichenfolgen.
var clusterUri = "https://help.kusto.windows.net/";
var kcsb = new KustoConnectionStringBuilder(clusterUri).WithAadUserPromptAuthentication();
cluster_uri = "https://help.kusto.windows.net"
kcsb = KustoConnectionStringBuilder.with_interactive_login(cluster_uri)
Die clientId und redirectUri stammen aus der Microsoft Entra-App-Registrierung, die Sie im Abschnitt Voraussetzungen abschnitt Einrichten Ihrer Entwicklungsumgebungerstellt haben.
const clusterUri = "https://help.kusto.windows.net";
const authOptions = {
clientId: "00001111-aaaa-2222-bbbb-3333cccc4444",
redirectUri: "http://localhost:5173",
} as InteractiveBrowserCredentialInBrowserOptions;
const kcsb = KustoConnectionStringBuilder.withUserPrompt(clusterUri, authOptions);
Anmerkung
Verwenden Sie für Node.js Apps InteractiveBrowserCredentialNodeOptions anstelle von InteractiveBrowserCredentialInBrowserOptions.
String clusterUri = "https://help.kusto.windows.net/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
Anmerkung
Für die interaktive Authentifizierung benötigen Sie ein Microsoft-Konto oder eine Microsoft Entra-Benutzeridentität. Ein Azure-Abonnement ist nicht erforderlich.
In C# fordert der interaktive Authentifizierungsprozess den Benutzer möglicherweise nicht auf, wenn:
- Der Benutzer ist bereits auf dem Gerät authentifiziert.
- Es gibt eine vorhandene Kusto.Explorer- oder Azure Data Explorer-Web-UI-Authentifizierung auf dem Gerät.
Erstellen Sie ein Clientobjekt, das das Verbindungszeichenfolgen-Generator-Objekt verwendet, um eine Verbindung mit dem Cluster herzustellen.
Anmerkung
Es wird dringend empfohlen, die Kusto-Clientinstanz zwischenzuspeichern und wiederzuverwenden. Das erneute Erstellen von Kusto-Clients kann zu Leistungsbeeinträchtigungen in Ihrer Anwendung und zu einer erhöhten Auslastung des Clusters führen.
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
}
with KustoClient(kcsb) as kusto_client:
const kustoClient = new KustoClient(kcsb);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
}
Definieren Sie die auszuführende Datenbank und Abfrage. Die Abfrage gibt Hello Kusto! in einer Spalte mit dem Namen Willkommen aus.
var database = "Samples";
var query = "print Welcome='Hello Kusto!'";
database = "Samples"
query = "print Welcome='Hello Kusto!'"
const database = "Samples";
const query = "print Welcome='Hello Kusto!'";
String database = "Samples";
String query = "print Welcome='Hello Kusto!'";
Führen Sie die Abfrage aus, und drucken Sie das Ergebnis.
using (var response = kustoClient.ExecuteQuery(database, query, null)) {
response.Read();
int columnNo = response.GetOrdinal("Welcome");
Console.WriteLine(response.GetString(columnNo));
}
response = kusto_client.execute(database, query)
print(response.primary_results[0][0]["Welcome"])
const response = await kustoClient.execute(database, query);
console.log(response.primaryResults[0][0]["Welcome"].toString());
KustoOperationResult response = kustoClient.execute(database, query);
KustoResultSetTable primary_results = response.getPrimaryResults();
primary_results.next();
System.out.println(primary_results.getString("Welcome"));
Anmerkung
Die Abfrageausgabe wird in der Antwort als Objekt zurückgegeben, das eine oder mehrere Tabellen enthält, die aus einer oder mehreren Zeilen und Spalten bestehen.
Das Format des Objekts hängt von der Clientbibliothekssprache ab.
Die Abfrage print kusto gibt eine einzelne Tabelle mit einer Zeile und Spalte zurück.
Die Antwort ist ein DataReader-Objekt. Sie können wie folgt auf das Ergebnis verweisen:
- Verwenden der Read() Methode zum Lesen der ersten Zeile
- Verwenden der GetString-()-Methode zum Abrufen des Werts der ersten Spalte
Die Antwort im JSON-Objekt der primären Ergebnisse. Das Objekt enthält ein Array von Tabellen, das wiederum ein Array von Zeilen enthält. Jede Zeile enthält Daten, die in einem Wörterbuch mit Spalten organisiert sind. Sie können wie folgt auf das Ergebnis verweisen:
- Der erste Arrayindex
[0] verweist auf die erste Tabelle.
- Der zweite Arrayindex
[0] verweist auf die erste Zeile
- Der Wörterbuchschlüssel
["Welcome"] verweist auf die Spalte Willkommen
Die Antwort ist ein KustoOperationResult-Objekt. Sie können wie folgt auf das Ergebnis verweisen:
- Verwenden der getPrimaryResults()-Methode zum Abrufen der primären Ergebnistabelle
- die next() Methode zum Lesen der ersten Zeile
- die getString()-Methode zum Abrufen des Werts der ersten Spalte
Der vollständige Code sollte wie folgt aussehen:
using Kusto.Data;
using Kusto.Data.Net.Client;
namespace HelloKusto {
class HelloKusto {
static void Main(string[] args) {
string clusterUri = "https://help.kusto.windows.net/";
var kcsb = new KustoConnectionStringBuilder(clusterUri).WithAadUserPromptAuthentication();
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
string database = "Samples";
string query = "print Welcome='Hello Kusto!'";
using (var response = kustoClient.ExecuteQuery(database, query, null)) {
response.Read();
int columnNo = response.GetOrdinal("Welcome");
Console.WriteLine(response.GetString(columnNo));
}
}
}
}
}
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:
database = "Samples"
query = "print Welcome='Hello Kusto!'"
response = kusto_client.execute(database, query)
print(response.primary_results[0][0]["Welcome"])
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: "00001111-aaaa-2222-bbbb-3333cccc4444",
redirectUri: "http://localhost:5173",
} as InteractiveBrowserCredentialInBrowserOptions;
const kcsb = KustoConnectionStringBuilder.withUserPrompt(clusterUri, authOptions);
const kustoClient = new KustoClient(kcsb);
const database = "Samples";
const query = "print Welcome='Hello Kusto!'";
const response = await kustoClient.execute(database, query);
console.log(response.primaryResults[0][0]["Welcome"].toString());
}
main();
Anmerkung
Verwenden Sie für Node.js Apps InteractiveBrowserCredentialNodeOptions anstelle von InteractiveBrowserCredentialInBrowserOptions.
import com.microsoft.azure.kusto.data.Client;
import com.microsoft.azure.kusto.data.ClientFactory;
import com.microsoft.azure.kusto.data.KustoOperationResult;
import com.microsoft.azure.kusto.data.KustoResultSetTable;
import com.microsoft.azure.kusto.data.auth.ConnectionStringBuilder;
public class HelloKusto {
public static void main(String[] args) throws Exception {
try {
String clusterUri = "https://help.kusto.windows.net/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
String database = "Samples";
String query = "print Welcome='Hello Kusto!'";
KustoOperationResult response = kustoClient.execute(database, query);
KustoResultSetTable primaryResults = response.getPrimaryResults();
primaryResults.next();
System.out.println(primaryResults.getString("Welcome"));
}
}
}
}
Ausführen der App
Verwenden Sie in einer Befehlsshell den folgenden Befehl, um Ihre App auszuführen:
# Change directory to the folder that contains the hello world project
dotnet run .
In einer Node.js-Umgebung:
node hello-kusto.js
Verwenden Sie in einer Browserumgebung den entsprechenden Befehl, um Ihre App auszuführen. Beispiel: für Vite-React:
npm run dev
Anmerkung
Öffnen Sie in einer Browserumgebung die Entwicklertools-Konsole , um die Ausgabe anzuzeigen.
mvn install exec:java -Dexec.mainClass="<groupId>.HelloKusto"
Es sollte ein Ergebnis wie folgt angezeigt werden:
Hello Kusto!
Nächster Schritt