次の方法で共有


チュートリアル: Kusto C# SDK を Insights に接続する手順

このガイドは、Insights と Kusto C# SDK の併用を開始するのに役立ちます。 接続後、Azure Functions から Insights にクエリを実行できます。 Insights を接続できるその他のツールの詳細については、「Connecting external tools to Insights (外部ツールを Insights に接続する)」を参照してください。

注意

PlayFab Insights Management は、2023 年 12 月 11 日に非推奨になりました。 今後のパフォーマンスとコストを管理するには、Azure Data Explorer (ADX) 接続を使用することをお勧めします。 タイトルでまだ Insights を使用している場合は、実装の詳細についてこの記事を引き続き参照してください。 詳細については、「Insights 非推奨に関するブログ」を参照してください。

前提条件

AAD で認証された PlayFab アカウント

認証プロバイダーが Microsoft に設定されている PlayFab アカウントまたはユーザーが必要です。 Microsoft 認証プロバイダーは、Azure サービスを使用するために Azure Active Directory (AAD) の認証が必要です。 AAD で認証されたアカウントまたはユーザーを作成する手順については、「ゲーム マネージャーの Azure Active Directory 認証」に関するページを参照してください。

アカウントまたはユーザーが Microsoft 認証プロバイダーを使用するように設定されていることを確認するには、次の手順を実行します。

  • developer.playfab.com にアクセスします。
  • [Microsoft アカウントでサインイン] を選択して PlayFab アカウントにアクセスします。

サインインできる場合、そのアカウントは Microsoft 認証プロバイダーを使用するように設定されています。

Insights のゲーム マネージャーのアクセス許可

アカウントにユーザー ロールを割り当て、以下のゲーム マネージャーのアクセス許可を有効にする必要があります。

  • 管理者の状態。
  • [エクスプローラー] タブと関連データへのアクセス。
  • 分析データへの読み取りおよび書き込みアクセス。

新しいユーザー ロールを作成するか、既存のロールにこれらのアクセス許可を追加できます。

その他の前提条件

パッケージのインストール

  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);
                    }
                }
            }
        }
    }
}

追加情報