Выполнение базового запроса и обработка результатов
В предпочитаемой интегрированной среде разработки или текстовом редакторе создайте проект или файл с именем "Базовый запрос ", используя соглашение, соответствующее предпочитаемой вами языку. Затем добавьте приведенный ниже код.
Создайте клиентское приложение, которое подключается к кластеру справки.
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();
Примечание
Для Node.js приложений используйте InteractiveBrowserCredentialNodeOptions вместо InteractiveBrowserCredentialInBrowserOptions.
Определите базу данных и запрос для выполнения. Запрос возвращает дату, состояние и общий ущерб, связанный с торнадо, где общий ущерб превысил 100 миллионов долларов.
Использование порядковых позиций для доступа к значениям столбцов
Если порядок столбцов в результатах запроса известен, доступ к значениям столбцов эффективнее получить по порядковой позиции в результирующем наборе, чем по имени столбца. При необходимости во время выполнения можно использовать метод библиотеки для определения порядкового номера столбца по имени столбца.
Примечание
Вы можете управлять наличием и порядком столбцов в результатах запроса с помощью операторов project или project-away .
Например, можно изменить предыдущий код для доступа к значениям StartTimeстолбцов , Stateи DailyDamage по их порядковой позиции в результирующем наборе:
В C# доступ к значениям столбцов можно получить только по порядковой позиции в результирующем наборе. Вы не можете использовать имена столбцов; следовательно, код остается прежним.
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], "$")
Настройка поведения запроса с помощью свойств запроса клиента
Поведение запроса можно настроить, задав свойства запроса клиента. Дополнительные сведения о доступных параметрах см. в разделе Свойства запроса клиента.
Например, можно заменить kusto_client.execute_query вызов в предыдущем коде, чтобы передать пользовательский идентификатор запроса и задать время ожидания запроса равным 1 минуте. Чтобы использовать свойства запроса клиента, необходимо импортировать 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);
Использование параметров запроса для защиты введенных пользователем данных
Параметры запроса важны для обеспечения безопасности и защиты данных. Он защищает его от потенциальных злоумышленников, которые могут попытаться получить несанкционированный доступ или повредить ваши данные. Дополнительные сведения о параметризованных запросах см. в разделе Оператор объявления параметров запроса.
Например, можно изменить предыдущий код, чтобы передать в запрос значение EventType и минимальное значение DailyDamage в качестве параметров. Чтобы использовать параметры, выполните следующие действия.
Объявление параметров в тексте запроса
Замените значения свойств в тексте запроса именами параметров.
Установка значений параметров в свойствах запроса клиента, передаваемых методу execute.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.