跟踪 Power BI 中的用户活动

了解 Power BI 中谁正在对何项目执行何种操作对帮助组织满足其需求非常关键,如满足法规遵从性和记录管理需求。 本文讨论基于 Power BI REST API 的 Power BI 活动日志

可以使用审核日志跟踪 Microsoft Fabric 用户活动,包括 Power BI 操作。

先决条件

  • 你必须是 Fabric 管理员。

  • 在本地安装 Power BI 管理 cmdlet,或在 Azure Cloud Shell 中使用 Power BI 管理 cmdlet。

活动日志

Power BI 活动日志包含 JSON 数组中 Power BI 活动的完整副本。 可以在 Fabric 操作列表中找到所有 Power BI 活动的列表。

ActivityEvents REST API

可以使用基于 Power BI REST API 的管理应用程序将活动事件导出到 blob 存储或 SQL 数据库中。 然后,你可以基于导出的数据生成自定义使用情况报表。 在 ActivityEvents REST API 调用中,必须指定开始日期和结束日期,还可以选择使用筛选器按活动类型或用户 ID 选择活动。 由于活动日志可能包含大量数据,因此 ActivityEvents API 目前仅支持每个请求最多下载一天的数据。 换句话说,开始日期和结束日期必须指定为同一天,如以下示例所示。 请确保以协调世界时 (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);

如果 startDateTimeendDateTime 之间的时间跨度超过 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-PowerBIActivityEvent cmdlet

使用适用于 PowerShell 的 Power BI 管理 cmdlet 下载活动事件。 Get-PowerBIActivityEvent cmdlet 会自动为你处理延续令牌。 Get-PowerBIActivityEvent cmdlet 使用与 ActivityEvents REST API 具有相同限制的 StartDateTime 和 EndDateTime 参数。 换句话说,开始日期和结束日期必须引用相同的日期值,因为一次只能检索一天的活动数据。

以下脚本演示如何下载所有 Power BI 活动。 此命令将来自 JSON 的结果转换为 .NET 对象,以便轻松访问单个活动属性。 这些示例显示了一天可能的最小和最大时间戳,以确保不遗漏任何事件:

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]

注意

PowerShell 示例可帮助你了解如何筛选和检索 Power BI 活动日志事件。 有关详细信息,请参阅访问 Power BI 活动日志