教程:将 Kusto C# SDK 连接到 Insights

本指南帮助你开始将 Kusto C# SDK 与 Insights 一同使用。 连接后,可以从 Azure 功能查询 Insights。 要深入了解可用于连接 Insights 的其他工具,请参阅 将外部工具连接到 Insights

注意

PlayFab Insights 管理已于 2023 年 12 月 11 日起弃用。 我们建议使用 Azure 数据资源管理器 (ADX) 连接 来管理未来性能和成本。 如果你的游戏仍在使用 Insights,请继续查看本文以了解实施详细信息。 有关详细信息,请参阅 Insights 弃用博客

先决条件

通过 AAD 进行身份验证的 PlayFab 帐户

需要一个身份验证提供程序设置为 Microsoft 的 PlayFab 帐户或用户。 Microsoft 身份验证提供程序使用 Azure Active Directory (AAD) 进行身份验证,这是使用 Azure 服务所必需的。 有关 AAD 身份验证的帐户或用户的说明,请参阅 Game Manager 的 Azure Active Directory 身份验证

要验证帐户或用户设置为使用 Microsoft 身份验证提供程序,请:

如果可以登录,则该帐户设置为使用 Microsoft 身份验证提供程序。

Insights 的 Game Manager 权限

需要向帐户分配已启用以下 Game Manager 权限的 用户角色

  • 管理员状态。
  • 访问资源管理器选项卡和关联的数据。
  • 对分析数据进行读取和写入访问。

可创建新的用户角色或向现有角色添加这些权限。

其他先决条件

安装包

  1. 安装以下 NuGet 包:

  2. 下面是一些要开始使用的示例代码。

namespace HelloPlayFabInsights
{
    using System;
    using Kusto.Data;
    using Kusto.Data.Common;
    using Kusto.Data.Net.Client;

    class Program
    {
        const string Cluster = "https://insights.playfab.com";
        const string Database = "<title id>";
        const string AzureAuthority = "microsoft.onmicrosoft.com";
        const string ClientId = "<app id>";
        const string ClientSecret = "<app secret>";

        static void Main()
        {
            var kcsb = new KustoConnectionStringBuilder(Cluster, Database).WithAadApplicationKeyAuthentication(ClientId, ClientSecret, AzureAuthority);

            Console.WriteLine("Run Query...");
            RunQuery(kcsb);

            Console.WriteLine("Run Command...");
            RunCommand(kcsb);
            
        }
    
        /// <summary>
        /// Run a query on your Insights database, and write the results to the console.
        /// </summary>
        /// <param name="kcsb"></param>
        static void RunQuery(KustoConnectionStringBuilder kcsb)
        {
            using (var queryProvider = KustoClientFactory.CreateCslQueryProvider(kcsb))
            {
                var query = "['events.all'] | limit 10";

                var clientRequestProperties = new ClientRequestProperties() {
                    Application = "DotNetSDK",
                    ClientRequestId = Guid.NewGuid().ToString() 
                };
                using (var reader = queryProvider.ExecuteQuery(query, clientRequestProperties))
                { 
                    while (reader.Read())
                    {
                        string name = reader.GetString(2);
                        string titleId = reader.GetString(5);
                        DateTime timestamp = reader.GetDateTime(8);
                        Console.WriteLine("{0}\t{1}\t{2}", name, titleId, timestamp);
                    }
                }
            }
        }

        /// <summary>
        /// Run the ".show tables" command on your Insights database, and write the results to the console.
        /// </summary>
        /// <param name="kcsb"></param>
        static void RunCommand(KustoConnectionStringBuilder kcsb)
        {
            using (var commandProvider = KustoClientFactory.CreateCslAdminProvider(kcsb))
            {
                var command = ".show tables";

                var clientRequestProperties = new ClientRequestProperties()
                {
                    Application = "DotNetSDK",
                    ClientRequestId = Guid.NewGuid().ToString()
                };
                using (var reader = commandProvider.ExecuteControlCommand(command, clientRequestProperties))
                {
                    while (reader.Read())
                    {
                        string tableName = reader.GetString(0);
                        string databaseName = reader.GetString(1);
                        Console.WriteLine("{0}\t{1}", tableName, databaseName);
                    }
                }
            }
        }
    }
}

其他资源