Se aplica a: ✅Microsoft Fabric✅azure Data Explorer
En este artículo, aprenderá a:
- Creación de la primera aplicación cliente
- Uso de la autenticación interactiva
- Ejecute una consulta básica que imprima ¡Hola, Kusto!
Prerrequisitos
Configure el entorno de desarrollo para usar la biblioteca cliente de Kusto.
Creación de la aplicación
En el IDE o editor de texto que prefiera, cree un proyecto o archivo denominado hello kusto con la convención adecuada para su idioma preferido. A continuación, agregue el código siguiente:
Agregue las clases kusto client y string builder.
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";
Nota
Para las aplicaciones de Node.js, use InteractiveBrowserCredentialNodeOptions
en lugar de 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;
Defina una función vacía denominada main
y llámela.
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 {
}
}
}
Cree un objeto de generador de cadenas de conexión que defina el URI del clúster y establezca el modo de autenticación en interactivo. Para obtener más información sobre el URI del clúster, consulte cadenas de conexión de 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)
Los valores clientId
y redirectUri
se obtienen del registro de aplicaciones de Microsoft Entra que ha creado en la sección Requisitos previos de Configuración del entorno de desarrollo.
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);
Nota
Para las aplicaciones de Node.js, use InteractiveBrowserCredentialNodeOptions
en lugar de InteractiveBrowserCredentialInBrowserOptions
.
String clusterUri = "https://help.kusto.windows.net/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
Nota
Para la autenticación interactiva, necesita una cuenta Microsoft o una identidad de usuario de Microsoft Entra. No se requiere una suscripción de Azure.
En C#, es posible que el proceso de autenticación interactiva no solicite al usuario si:
- El usuario ya está autenticado en el dispositivo
- Hay una autenticación de interfaz de usuario web de Kusto.Explorer o Azure Data Explorer existente en el dispositivo
Cree un objeto de cliente que use el objeto generador de cadenas de conexión para conectarse al clúster.
Nota
Se recomienda encarecidamente almacenar en caché y reutilizar la instancia de cliente de Kusto. Con frecuencia, volver a crear clientes de Kusto puede provocar una degradación del rendimiento en la aplicación y aumentar la carga en el clúster.
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
}
with KustoClient(kcsb) as kusto_client:
const kustoClient = new KustoClient(kcsb);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
}
Defina la base de datos y la consulta que se va a ejecutar. La consulta imprime Hello Kusto! en una columna denominada 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!'";
Ejecute la consulta e imprima el resultado.
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"));
Nota
La salida de la consulta se devuelve en la respuesta como un objeto que contiene una o varias tablas, que están formadas por una o más filas y columnas.
El formato del objeto depende del idioma de la biblioteca cliente.
La consulta print kusto devuelve una sola tabla con una fila y una columna.
La respuesta es un DataReader objeto. Puede hacer referencia al resultado, como se indica a continuación:
- Use el método Read() de para leer la primera fila.
- Use el método GetString() para obtener el valor de la primera columna.
La respuesta del JSON de resultados principales. El objeto contiene una matriz de tablas, que a su vez contiene una matriz de filas. Cada fila contiene datos organizados en un diccionario de columnas. Puede hacer referencia al resultado, como se indica a continuación:
- El primer índice de matriz
[0]
hace referencia a la primera tabla
- El segundo índice de matriz
[0]
hace referencia a la primera fila
- La clave de diccionario hace referencia a la columna Bienvenida
La respuesta es un objeto KustoOperationResult. Puede hacer referencia al resultado, como se indica a continuación:
- Use el método getPrimaryResults() para obtener la tabla de resultados principales.
- el método next() para leer la primera fila
- el método getString() para obtener el valor de la primera columna
El código completo debe tener este aspecto:
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();
Nota
Para las aplicaciones de Node.js, use InteractiveBrowserCredentialNodeOptions
en lugar de 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"));
}
}
}
}
Ejecución de la aplicación
En un shell de comandos, use el siguiente comando para ejecutar la aplicación:
# Change directory to the folder that contains the hello world project
dotnet run .
En un entorno de Node.js:
node hello-kusto.js
En un entorno del explorador, use el comando adecuado para ejecutar la aplicación. Por ejemplo, para Vite-React:
npm run dev
mvn install exec:java -Dexec.mainClass="<groupId>.HelloKusto"
Debería ver un resultado similar al siguiente:
Hello Kusto!
Paso siguiente