Power BI でユーザー アクティビティを追跡する
Power BI 内で、だれがどの項目に対してどのようなアクションを実行しているかを把握することは、組織が法令順守やレコード管理などの要件を満たすうえで非常に重要です。 この記事では、Power BIREST API に基づく Power BI アクティビティ ログについて説明します。
監査ログを使用して、Power BI 操作を含む Microsoft Fabric ユーザー アクティビティを追跡できます。
前提条件
Fabric 管理者である必要があります。
Power BI 管理コマンドレットをローカルにインストールするか、Azure Cloud Shell で Power BI 管理コマンドレットを使用します。
アクティビティ ログ
Power BI アクティビティ ログには、JSON 配列内の Power BI アクティビティの完全なコピーが含まれています。 Fabric 操作の一覧には、すべての Power BI アクティビティの一覧があります。
ActivityEvents REST API
Power BI REST API に基づく管理アプリケーションを使用すると、アクティビティ イベントを BLOB ストアや SQL データベースにエクスポートすることができます。 その後、エクスポートされたデータの上にカスタムの使用状況レポートを作成できます。 ActivityEvents REST API の呼び出しでは、開始日と終了日を指定する必要があります。必要に応じて、アクティビティの種類やユーザー ID でアクティビティを選択するフィルターを指定します。 アクティビティ ログには大量のデータが含まれている可能性があるため、ActivityEvents API で現時点でサポートされているのは、要求あたり最大 1 日分のデータのダウンロードのみです。 つまり、次の例のように、開始日と終了日に同じ日付を指定する必要があります。 協定世界時 (UTC) 形式で DateTime
値を指定してください。
https://api.powerbi.com/v1.0/myorg/admin/activityevents?startDateTime='2019-08-31T00:00:00'&endDateTime='2019-08-31T23:59:59'
エントリの数が多いと、ActivityEvents API では、約 5,000 ‐ 10,000 のエントリと継続トークンのみが返されます。 継続トークンを使用して ActivityEvents API を再度呼び出し、エントリの次のバッチを取得します。すべてのエントリを取得して継続トークンを受け取らなくなるまでこれを続けます。 次の例は後続トークンの使用方法を示しています。
https://api.powerbi.com/v1.0/myorg/admin/activityevents?continuationToken='%2BRID%3ARthsAIwfWGcVAAAAAAAAAA%3D%3D%23RT%3A4%23TRC%3A20%23FPC%3AARUAAAAAAAAAFwAAAAAAAAA%3D'
結果に後続トークンが含まれている場合は、後続トークンが返されなくなるまで、そのトークンを使用してさらに API を呼び出し、残りのデータを取得してください。 呼び出しにより、イベント エントリなしで継続トークンが返される可能性があります。 次の例は、応答で返された継続トークンを使用してループする方法を示しています。
while(response.ContinuationToken != null)
{
// Store the activity event results in a list for example
completeListOfActivityEvents.AddRange(response.ActivityEventEntities);
// Make another call to the API with continuation token
response = GetPowerBIActivityEvents(response.ContinuationToken)
}
completeListOfActivityEvents.AddRange(response.ActivityEventEntities);
startDateTime
と endDateTime
の間の時間が 1 時間を超えている場合は、それに応じて continuationUri
を介してデータをダウンロードするには複数の要求が必要になります。
次の例は、1 時間 5 分のデータをダウンロードする方法を示しています。
GET https://wabi-staging-us-east-redirect.analysis.windows.net/v1.0/myorg/admin/activityevents?startDateTime='2020-08-13T07:55:00Z'&endDateTime='2020-08-13T09:00:00Z'
{
"activityEventEntities": […],
"continuationUri": https://wabi-staging-us-east-redirect.analysis.windows.net/v1.0/myorg/admin/activityevents?continuationToken='LDIwMjAtMDgtMTNUMDc6NTU6MDBaLDIwMjAtMDgtMTNUMDk6MDA6MDBaLDEsLA%3D%3D',
"continuationToken": "LDIwMjAtMDgtMTNUMDc6NTU6MDBaLDIwMjAtMDgtMTNUMDk6MDA6MDBaLDEsLA%3D%3D",
"lastResultSet": false
}
GET https://wabi-staging-us-east-redirect.analysis.windows.net/v1.0/myorg/admin/activityevents?continuationToken='LDIwMjAtMDgtMTNUMDc6NTU6MDBaLDIwMjAtMDgtMTNUMDk6MDA6MDBaLDEsLA%3D%3D'
{
"activityEventEntities": [],
"continuationUri": null,
"continuationToken": null,
"lastResultSet": false
}
監査アクティビティ イベントの取得方法例など、Power BI REST API の使用方法については、Power BI REST API リファレンス ドキュメントの「管理者 - Get Activity Events」を参照してください。
Get-PowerBIActivityEvent コマンドレット
PowerShell の Power BI 管理コマンドレットを使用して、アクティビティ イベントをダウンロードします。 Get-PowerBIActivityEvent コマンドレットを使用すると、継続トークンが自動的に処理されます。 Get-PowerBIActivityEvent
コマンドレットは、ActivityEvents REST API と同じ制限がある StartDateTime と EndDateTime パラメーターを使用します。 つまり、一度に取得できるアクティビティ データは 1 日分だけなので、開始日と終了日で同じ日付値を参照する必要があります。
次のスクリプトでは、すべての Power BI アクティビティをダウンロードする方法を示しています。 このコマンドでは、個々のアクティビティのプロパティに簡単にアクセスできるように、JSON の結果が .NET オブジェクトに変換されます。 これらの例は、イベントを見逃さないようにするための、1 日で可能な最小および最大のタイムスタンプを示しています。
Login-PowerBI
$activities = Get-PowerBIActivityEvent -StartDateTime '2019-08-31T00:00:00' -EndDateTime '2019-08-31T23:59:59' | ConvertFrom-Json
$activities.Count
$activities[0]
アクティビティ データのフィルター処理
アクティビティの種類とユーザー ID でアクティビティ イベントをフィルター処理できます。 次のスクリプトでは、ViewDashboard アクティビティのイベント データのみをダウンロードする方法を示しています。 サポートされているパラメーターの追加情報については、コマンド Get-Help Get-PowerBIActivityEvent
を使用します。
Login-PowerBI
$activities = Get-PowerBIActivityEvent -StartDateTime '2019-08-31T00:00:00' -EndDateTime '2019-08-31T23:59:59' -ActivityType 'ViewDashboard' | ConvertFrom-Json
$activities.Count
$activities[0]
注意
Power BI アクティビティ ログ イベントをフィルター処理して取得する方法については、PowerShell のサンプルを参照してください。 詳細については、「Power BI アクティビティ ログへのアクセス」を参照してください。