Ejecución de una consulta básica y procesamiento de los resultados
En el IDE o editor de texto que prefiera, cree un proyecto o un archivo denominado consulta básica con la convención adecuada para su idioma preferido. Después agregue el siguiente código:
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();
Nota
Para Node.js aplicaciones, use InteractiveBrowserCredentialNodeOptions en lugar de InteractiveBrowserCredentialInBrowserOptions.
Defina la base de datos y la consulta que se va a ejecutar. La consulta devuelve la fecha, el estado y el daño total relacionado con el tornado en el que el daño total superó los 100 millones de dólares.
Uso de posiciones ordinales para acceder a los valores de columna
Cuando se conoce el orden de las columnas de un resultado de consulta, es más eficaz tener acceso a los valores de las columnas por su posición ordinal en el conjunto de resultados que por su nombre de columna. Opcionalmente, en tiempo de ejecución puede usar un método de biblioteca para determinar un ordinal de columna a partir de su nombre de columna.
Nota
Puede controlar la presencia y el orden de las columnas en un resultado de consulta mediante los project operadores o project-away .
Por ejemplo, puede modificar el código anterior para tener acceso a los valores de las StartTimecolumnas , Statey DailyDamage por sus posiciones ordinales en el conjunto de resultados:
En C#, solo puede acceder a los valores de las columnas por sus posiciones ordinales en el conjunto de resultados. No puede usar los nombres de columna; por lo tanto, el código sigue siendo el mismo.
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], "$")
Personalización del comportamiento de la consulta con propiedades de solicitud de cliente
Puede personalizar el comportamiento de una consulta estableciendo las propiedades de solicitud de cliente. Para obtener más información sobre las opciones disponibles, consulte propiedades de solicitud de cliente.
Por ejemplo, puede reemplazar la kusto_client.execute_query llamada en el código anterior para pasar un identificador de solicitud personalizado y establecer el tiempo de espera de la consulta en 1 minuto. Para usar las propiedades de solicitud de cliente, debe importar la ClientRequestProperties clase .
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);
Uso de parámetros de consulta para proteger la entrada del usuario
Los parámetros de consulta son importantes para mantener la seguridad y la protección de los datos. Protege de posibles actores malintencionados que pueden intentar obtener acceso no autorizado a los datos o dañarlos. Para obtener más información sobre las consultas parametrizadas, vea Instrucción de declaración de parámetros de consulta.
Por ejemplo, puede modificar el código anterior para pasar el valor EventType y el valor mínimo DailyDamage como parámetros a la consulta. Para usar parámetros:
Declaración de los parámetros en el texto de la consulta
Sustituya los valores de propiedad en el texto de la consulta por los nombres de parámetro
Establecer los valores de parámetro en las propiedades de solicitud de cliente que se pasan al método execute
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea: https://aka.ms/ContentUserFeedback.