Hello Kusto:创建你的第一个应用
本文内容
适用于:✅Azure 数据资源管理器
在本文中,学习如何:
创建第一个客户端应用
使用交互式身份验证
运行一个输出 Hello Kusto! 的基本查询
先决条件
设置开发环境 以使用 Kusto 客户端库。
创建应用
在首选 IDE 或文本编辑器中,使用适合首选语言的约定创建名为“hello kusto”的项目或文件。 然后,添加以下代码:
添加 Kusto 客户端和字符串生成器类。
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";
注意
对于 Node.js 应用,请使用 InteractiveBrowserCredentialNodeOptions
而不是 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;
定义一个名为 main
的空函数并调用它。
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 {
}
}
}
创建一个定义群集 URI 并将身份验证模式设置为交互式的连接字符串生成器对象。 有关群集 URI 的详细信息,请参阅 Kusto 连接字符串 。
var clusterUri = "https://help.chinaeast2.kusto.chinacloudapi.cn/";
var kcsb = new KustoConnectionStringBuilder(clusterUri).WithAadUserPromptAuthentication();
cluster_uri = "https://help.chinaeast2.kusto.chinacloudapi.cn"
kcsb = KustoConnectionStringBuilder.with_interactive_login(cluster_uri)
clientId
和 redirectUri
来自你在设置开发环境 的“先决条件” 部分创建的 Microsoft Entra 应用注册。
const clusterUri = "https://help.chinaeast2.kusto.chinacloudapi.cn";
const authOptions = {
clientId: "5e39af3b-ba50-4255-b547-81abfb507c58",
redirectUri: "http://localhost:5173",
} as InteractiveBrowserCredentialInBrowserOptions;
const kcsb = KustoConnectionStringBuilder.withUserPrompt(clusterUri, authOptions);
注意
对于 Node.js 应用,请使用 InteractiveBrowserCredentialNodeOptions
而不是 InteractiveBrowserCredentialInBrowserOptions
。
String clusterUri = "https://help.chinaeast2.kusto.chinacloudapi.cn/";
ConnectionStringBuilder kcsb = ConnectionStringBuilder.createWithUserPrompt(clusterUri);
注意
对于交互式身份验证,你需要 Microsoft 帐户或 Microsoft Entra 用户标识。 无需 Azure 订阅。
在 C# 中,如果出现以下情况,交互式身份验证过程可能不会提示用户:
已在设备上对用户进行身份验证
设备上存在现有的 Kusto.Explorer 或 Azure 数据资源管理器 Web UI 身份验证
创建一个使用连接字符串生成器对象连接到群集的客户端对象。
注意
强烈建议缓存并重复使用 Kusto 客户端实例。 频繁地重新创建 Kusto 客户端可能会导致应用程序性能下降,并导致群集上的负载增加。
using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
}
with KustoClient(kcsb) as kusto_client:
const kustoClient = new KustoClient(kcsb);
try (Client kustoClient = ClientFactory.createClient(kcsb)) {
}
定义要运行的数据库和查询。 该查询在名为 Welcome 的列中输出 Hello Kusto!。
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!'";
运行查询并输出结果。
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"));
注意
查询输出在响应中作为一个对象返回,该对象包含一个或多个表,而表则由一个或多个行和列组成。
对象的格式取决于客户端库语言。
print kusto 查询返回单个包含一行和一列的表。
主要结果 JSON 对象中的响应。 对象包含表数组,后者又包含行数组。 每行都包含组织成列字典的数据。 你可以引用结果,如下所示:
第一个数组索引 [0]
引用第一个表
第二个数组索引 [0]
引用第一行
字典键 ["Welcome"]
引用 Welcome 列
响应是 KustoOperationResult 对象。 你可以引用结果,如下所示:
使用 getPrimaryResults() 方法获取主要结果表
用于读取第一行的 next() 方法
getString() 方法,用于获取第一列的值
完整代码应如下所示:
using Kusto.Data;
using Kusto.Data.Net.Client;
namespace HelloKusto {
class HelloKusto {
static void Main(string[] args) {
string clusterUri = "https://help.chinaeast2.kusto.chinacloudapi.cn/";
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.chinaeast2.kusto.chinacloudapi.cn"
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.chinaeast2.kusto.chinacloudapi.cn";
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);
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();
注意
对于 Node.js 应用,请使用 InteractiveBrowserCredentialNodeOptions
而不是 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.chinaeast2.kusto.chinacloudapi.cn/";
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"));
}
}
}
}
运行应用
在命令行界面中,使用以下命令运行应用:
# Change directory to the folder that contains the hello world project
dotnet run .
在 Node.js 环境中:
node hello-kusto.js
在浏览器环境中,使用适当的命令来运行应用。 例如,对于 Vite-React,请使用以下命令:
npm run dev
mvn install exec:java -Dexec.mainClass="<groupId>.HelloKusto"
你应会看到如下所示的结果:
Hello Kusto!
下一步