Uruchamianie podstawowego zapytania i przetwarzanie wyników
W preferowanym środowisku IDE lub edytorze tekstów utwórz projekt lub plik o nazwie podstawowe zapytanie przy użyciu konwencji odpowiedniej dla preferowanego języka. Następnie dodaj następujący kod:
Utwórz aplikację kliencką, która łączy się z klastrem pomocy.
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();
Uwaga
W przypadku aplikacji Node.js użyj polecenia InteractiveBrowserCredentialNodeOptions zamiast InteractiveBrowserCredentialInBrowserOptions.
Zdefiniuj bazę danych i zapytanie do uruchomienia. Zapytanie zwraca datę, stan i łączną szkodę związaną z tornado, gdzie łączna szkoda przekroczyła 100 milionów dolarów.
Uzyskiwanie dostępu do wartości kolumn przy użyciu pozycji porządkowych
Gdy kolejność kolumn w wyniku zapytania jest znana, bardziej wydajne jest uzyskiwanie dostępu do wartości kolumn według ich położenia porządkowego w zestawie wyników niż według ich nazwy kolumny. Opcjonalnie w czasie wykonywania można użyć metody biblioteki do określenia porządkowej kolumny z jego nazwy kolumny.
Uwaga
Obecność i kolejność kolumn w wyniku zapytania można kontrolować przy użyciu project operatorów or project-away .
Możesz na przykład zmodyfikować poprzedni kod, aby uzyskać dostęp do wartości StartTimekolumn , Statei DailyDamage według ich pozycji porządkowych w zestawie wyników:
W języku C#można uzyskać dostęp tylko do wartości kolumn według ich pozycji porządkowych w zestawie wyników. Nie można używać nazw kolumn; w związku z tym kod pozostaje taki sam.
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], "$")
Dostosowywanie zachowania zapytania przy użyciu właściwości żądania klienta
Zachowanie zapytania można dostosować, ustawiając właściwości żądania klienta. Aby uzyskać więcej informacji na temat dostępnych opcji, zobacz właściwości żądania klienta.
Możesz na przykład zastąpić kusto_client.execute_query wywołanie w poprzednim kodzie, aby przekazać niestandardowy identyfikator żądania i ustawić limit czasu zapytania na 1 minutę. Aby użyć właściwości żądania klienta, należy zaimportować klasę ClientRequestProperties .
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);
Używanie parametrów zapytania do ochrony danych wejściowych użytkownika
Parametry zapytania są ważne dla utrzymania bezpieczeństwa i ochrony danych. Chroni je przed potencjalnymi złośliwymi podmiotami, które mogą próbować uzyskać nieautoryzowany dostęp do danych lub uszkodzić je. Aby uzyskać więcej informacji na temat sparametryzowanych zapytań, zobacz Instrukcje deklaracji parametrów zapytania.
Możesz na przykład zmodyfikować poprzedni kod, aby przekazać wartość EventType i wartość minimalną DailyDamage jako parametry zapytania. Aby użyć parametrów:
Deklarowanie parametrów w tekście zapytania
Zastąp wartości właściwości w tekście zapytania nazwami parametrów
Ustawianie wartości parametrów we właściwościach żądania klienta przekazanych do metody execute
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź: https://aka.ms/ContentUserFeedback.