Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer
Neste artigo, você aprenderá a:
- Crie a sua primeira aplicação cliente
- Usar autenticação interativa
- Executa uma consulta básica que imprime Olá Kusto!
Pré-requisitos
Configurar o seu ambiente de desenvolvimento para usar a biblioteca de cliente Kusto.
Crie seu aplicativo
No seu IDE ou editor de texto preferido, crie um projeto ou ficheiro chamado hello kusto usando a convenção apropriada à sua língua preferida. Em seguida, adicione o seguinte código:
Adicione as classes de cliente Kusto e 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";
Observação
Para aplicativos Node.js, use InteractiveBrowserCredentialNodeOptions em vez 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 uma função vazia nomeada main e chame-a.
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 {
}
}
}
Crie um objeto construtor de strings de ligação que defina o URI do cluster e defina o modo de autenticação como interativo. Para mais informações sobre o URI do cluster, consulte cadeias de ligação 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)
Os clientId e redirectUri vêm do registo da aplicação Microsoft Entra que criaste na secção de Pré-requisitos de Configurar o teu ambiente de desenvolvimento.
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);
Observação
Para aplicativos Node.js, use InteractiveBrowserCredentialNodeOptions em vez de InteractiveBrowserCredentialInBrowserOptions.
String clusterUri = "https://help.kusto.windows.net/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
Observação
Para autenticação interativa, precisa de uma conta Microsoft ou de uma identidade de utilizador Microsoft Entra. Uma assinatura do Azure não é necessária.
Em C#, o processo de autenticação interativa pode não solicitar ao utilizador se:
- O utilizador já está autenticado no dispositivo
- Existe uma autenticação da interface de utilizador web do Kusto.Explorer ou do Azure Data Explorer no dispositivo
Crie um objeto cliente que use o construtor de string de ligação para se ligar ao cluster.
Observação
Recomendamos vivamente que faça cache e reutilize a instância cliente Kusto. Recriar frequentemente clientes Kusto pode levar à degradação do desempenho da sua aplicação e ao aumento da carga no cluster.
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
}
with KustoClient(kcsb) as kusto_client:
const kustoClient = new KustoClient(kcsb);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
}
Defina a base de dados e a consulta a executar. A consulta escreve Olá Kusto! numa coluna chamada 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!'";
Executa a consulta e imprime o 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"));
Observação
O resultado da consulta é devolvido na resposta como um objeto que contém uma ou mais tabelas, compostas por uma ou mais linhas e colunas.
O formato do objeto depende da linguagem da biblioteca cliente.
A consulta print kusto devolve uma única tabela com uma linha e uma coluna.
A resposta é um objeto DataReader . Pode consultar o resultado, da seguinte forma:
- Use o método Read() para ler a primeira linha
- Use o método GetString() para obter o valor da primeira coluna
A resposta no objeto JSON dos resultados primários. O objeto contém um array de tabelas, que por sua vez contém um array de linhas. Cada linha contém dados organizados num dicionário de colunas. Pode consultar o resultado, da seguinte forma:
- O primeiro índice
[0] do array refere-se à primeira tabela
- O segundo índice
[0] do array refere-se à primeira linha
- A chave
["Welcome"] do dicionário faz referência à coluna de boas-vindas
A resposta é um objeto KustoOperationResult. Pode consultar o resultado, da seguinte forma:
- Use o método getPrimaryResults() para obter a tabela de resultados primários
- O método Next() para ler a primeira linha
- o método getString() para obter o valor da primeira coluna
O código completo deve ter esta aparência:
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();
Observação
Para aplicativos Node.js, use InteractiveBrowserCredentialNodeOptions em vez 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"));
}
}
}
}
Executar seu aplicativo
Em um shell de comando, use o seguinte comando para executar seu aplicativo:
# Change directory to the folder that contains the hello world project
dotnet run .
Num ambiente Node.js:
node hello-kusto.js
Em um ambiente de navegador, use o comando apropriado para executar seu aplicativo. Por exemplo, para Vite-React:
npm run dev
Observação
Em um ambiente de navegador, abra o console de ferramentas de desenvolvedor para ver a saída.
mvn install exec:java -Dexec.mainClass="<groupId>.HelloKusto"
Deverá ver um resultado semelhante ao seguinte:
Hello Kusto!
Próximo passo