Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer
Z tego artykułu dowiesz się, jak wykonywać następujące działania:
- Tworzenie pierwszej aplikacji klienckiej
- Korzystanie z uwierzytelniania interakcyjnego
- Uruchom podstawowe zapytanie, które wyświetla Hello Kusto!
Warunki wstępne
Skonfiguruj środowisko deweloperskie do korzystania z biblioteki klienta Kusto.
Tworzenie aplikacji
W preferowanym środowisku IDE lub edytorze tekstów utwórz projekt lub plik o nazwie hello kusto przy użyciu konwencji odpowiedniej dla preferowanego języka. Następnie dodaj następujący kod:
Dodaj klasy klienta Kusto i StringBuilder.
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";
Notatka
W przypadku aplikacji Node.js użyj InteractiveBrowserCredentialNodeOptions zamiast 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;
Zdefiniuj pustą funkcję o nazwie main i wywołaj ją.
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 {
}
}
}
Utwórz obiekt konstruktora parametrów połączenia, który definiuje identyfikator URI klastra i ustawia tryb uwierzytelniania na interakcyjny. Aby uzyskać więcej informacji na temat identyfikatora URI klastra, zobacz parametry połączenia usługi Kusto.
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)
clientId i redirectUri pochodzą z rejestracji aplikacji Microsoft Entra, którą utworzyłeś w sekcji Wymagania wstępne w Konfiguracja środowiska deweloperskiego.
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);
Notatka
W przypadku aplikacji Node.js użyj InteractiveBrowserCredentialNodeOptions zamiast InteractiveBrowserCredentialInBrowserOptions.
String clusterUri = "https://help.kusto.windows.net/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
Notatka
Do uwierzytelniania interakcyjnego potrzebne jest konto Microsoft lub tożsamość użytkownika Entra firmy Microsoft. Subskrypcja platformy Azure nie jest wymagana.
W języku C# proces uwierzytelniania interakcyjnego może nie wyświetlać monitu do użytkownika, jeśli:
- Użytkownik jest już uwierzytelniony na urządzeniu
- Na urządzeniu istnieje uwierzytelnianie w webowym interfejsie użytkownika Kusto.Explorer lub Azure Data Explorer.
Utwórz obiekt klienta, który używa obiektu konstruktora parametrów połączenia w celu nawiązania połączenia z klastrem.
Notatka
Zdecydowanie zalecamy buforowanie i ponowne użycie wystąpienia klienta Kusto. Częste ponowne tworzenie klientów Kusto może prowadzić do obniżenia wydajności aplikacji i zwiększenia obciążenia klastra.
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
}
with KustoClient(kcsb) as kusto_client:
const kustoClient = new KustoClient(kcsb);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
}
Zdefiniuj bazę danych i zapytanie do uruchomienia. Zapytanie wyświetla Hello Kusto! w kolumnie o nazwie Welcome.
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!'";
Uruchom zapytanie i wyświetl wynik.
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"));
Notatka
Dane wyjściowe zapytania są zwracane w odpowiedzi jako obiekt zawierający co najmniej jedną tabelę składającą się z co najmniej jednego wiersza i kolumn.
Format obiektu zależy od języka biblioteki klienta.
Kusto zapytanie zwraca tabelę z jednym wierszem i jedną kolumną.
Odpowiedź to obiekt DataReader. Możesz odwołać się do wyniku w następujący sposób:
- Użyj metody read() , aby odczytać pierwszy wiersz
- Użyj metody GetString(), aby uzyskać wartość pierwszej kolumny
Odpowiedź w podstawowym obiekcie JSON wyników. Obiekt zawiera tablicę tabel, która z kolei zawiera tablicę wierszy. Każdy wiersz zawiera dane uporządkowane w słowniku kolumn. Możesz odwołać się do wyniku w następujący sposób:
- Pierwszy indeks tablicy
[0] odwołuje się do pierwszej tabeli
- Drugi indeks tablicy
[0] odwołuje się do pierwszego wiersza
- Klucz słownika
["Welcome"] odnosi się do kolumny powitalnej
Odpowiedź jest obiektem KustoOperationResult. Możesz odwołać się do wyniku w następujący sposób:
- Użyj metody getPrimaryResults(), aby uzyskać podstawową tabelę wyników
- metoda next() do odczytu pierwszego wiersza
- metoda getString(), aby uzyskać wartość pierwszej kolumny
Pełny kod powinien wyglądać następująco:
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();
Notatka
W przypadku aplikacji Node.js użyj InteractiveBrowserCredentialNodeOptions zamiast 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"));
}
}
}
}
Uruchamianie aplikacji
W konsoli poleceń użyj następującego polecenia, aby uruchomić aplikację:
# Change directory to the folder that contains the hello world project
dotnet run .
W środowisku Node.js:
node hello-kusto.js
W środowisku przeglądarki użyj odpowiedniego polecenia, aby uruchomić aplikację. Na przykład w przypadku platformy Vite-React:
npm run dev
Notatka
W środowisku przeglądarki otwórz konsolę narzędzi deweloperskich , aby wyświetlić dane wyjściowe.
mvn install exec:java -Dexec.mainClass="<groupId>.HelloKusto"
Powinien zostać wyświetlony wynik podobny do następującego:
Hello Kusto!
Następny krok