教程:将 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 身份验证提供程序,请:
- 访问 developer.playfab.com。
- 选择“使用 Microsoft 登录”以访问 PlayFab 帐户。
如果可以登录,则该帐户设置为使用 Microsoft 身份验证提供程序。
Insights 的 Game Manager 权限
需要向帐户分配已启用以下 Game Manager 权限的 用户角色:
- 管理员状态。
- 访问资源管理器选项卡和关联的数据。
- 对分析数据进行读取和写入访问。
可创建新的用户角色或向现有角色添加这些权限。
其他先决条件
安装包
安装以下 NuGet 包:
- 必需: Microsoft.Azure.Kusto.Data
- 可选: Microsoft.Azure.Kusto.Ingest
- 有关更多可选包,请参阅 Kusto .NET SDK 文档
下面是一些要开始使用的示例代码。
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);
}
}
}
}
}
}