Hello Kusto:创建你的第一个应用

在本文中,学习如何:

  • 创建第一个客户端应用
  • 使用交互式身份验证
  • 运行一个输出 Hello Kusto! 的基本查询

先决条件

设置开发环境以使用 Kusto 客户端库。

创建应用

在首选 IDE 或文本编辑器中,使用适合首选语言的约定创建名为“hello kusto”的项目或文件。 然后,添加以下代码:

  1. 添加 Kusto 客户端和字符串生成器类。

    using Kusto.Data;
    using Kusto.Data.Net.Client;
    
  2. 定义一个名为 main 的空函数并调用它。

    namespace HelloKusto {
      class HelloKusto {
        static void Main(string[] args) {
        }
      }
    }
    
  3. 创建一个定义群集 URI 并将身份验证模式设置为交互式的连接字符串生成器对象。 有关群集 URI 的详细信息,请参阅 Kusto 连接字符串

    var clusterUri = "https://help.chinaeast2.kusto.chinacloudapi.cn/";
    var kcsb = new KustoConnectionStringBuilder(clusterUri).WithAadUserPromptAuthentication();
    

    注意

    对于交互式身份验证,你需要 Microsoft 帐户或 Microsoft Entra 用户标识。 无需 Azure 订阅。

    在 C# 中,如果出现以下情况,交互式身份验证过程可能不会提示用户:

    • 已在设备上对用户进行身份验证
    • 设备上存在现有的 Kusto.Explorer 或 Azure 数据资源管理器 Web UI 身份验证
  4. 创建一个使用连接字符串生成器对象连接到群集的客户端对象。

    注意

    强烈建议缓存并重复使用 Kusto 客户端实例。 频繁地重新创建 Kusto 客户端可能会导致应用程序性能下降,并导致群集上的负载增加。

    using (var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcsb)) {
    }
    
  5. 定义要运行的数据库和查询。 该查询在名为 Welcome 的列中输出 Hello Kusto!。

    var database = "Samples";
    var query = "print Welcome='Hello Kusto!'";
    
  6. 运行查询并输出结果。

    using (var response = kustoClient.ExecuteQuery(database, query, null)) {
      response.Read();
      int columnNo = response.GetOrdinal("Welcome");
      Console.WriteLine(response.GetString(columnNo));
    }
    

    注意

    查询输出在响应中作为一个对象返回,该对象包含一个或多个表,而表则由一个或多个行和列组成。 对象的格式取决于客户端库语言。

    print kusto 查询返回单个包含一行和一列的表。

    响应是 DataReader 对象。 你可以引用结果,如下所示:

    • 使用 Read() 方法读取第一行
    • 使用 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));
        }
      }
    }
  }
}

运行应用

在命令行界面中,使用以下命令运行应用:

# Change directory to the folder that contains the hello world project
dotnet run .

你应会看到如下所示的结果:

Hello Kusto!

下一步