为 Power BI 配置 Azure Log Analytics

Power BI 即将与 Azure Log Analytics 集成,以支持管理员和高级工作区所有者配置 Log Analytics 与其 Power BI 订阅的连接。 本文介绍了 Log Analytics 和 Power BI 之间集成的工作原理,以及如何针对你的环境进行配置。

可以通过两个元素将 Azure Log Analytics 用于 Power BI:

  • 在 Azure 门户中配置 Azure 订阅。
  • 在 Power BI 管理门户中为 Power BI 启用 Log Analytics。

以下部分将依次引导你逐一完成每个步骤来实现这两个目的。

Screenshot of the Azure connections tab open in the settings pane.

先决条件

你需要在 Azure 门户中创建 Log Analytics 工作区,然后才能从 Power BI 配置Log Analytics 集成。 还必须为 Power BI 服务提供 Azure 中的权限,以便能够写入日志。 具体要求包括:

  • 对 Azure 订阅的参与者访问权限。
  • 在要收集 Power BI 日志数据的 Azure 订阅中注册“microsoft insights”资源提供程序。
  • 在 Power BI 中设置 Log Analytics 集成的用户必须具有 Log Analytics 工作区的 Log Analytics 参与者角色。 如果无法分配“所有者”角色,请参阅常见问题解答以获取解决方法。

启用“microsoft insights”资源提供程序

Log Analytics 要求在 Azure 订阅级别启用“microsoft insights”资源提供程序。 下列步骤演示了此过程。

  1. 登录到 Azure 门户,选择要用于 Log Analytics 并且包含 Log Analytics 工作区的订阅。 在设置部分中,选择“资源提供程序”,如下图所示 。

    Screenshot of the settings menu options, resource providers is selected.

  2. 在“资源提供程序”下搜索 microsoft.insights。 然后选择“注册”。

    Screenshot of resource providers in the main pane with Microsoft.insights is registered.

设置权限

  1. 确保配置 Log Analytics 集成的用户具有 Log Analytics 工作区的 Log Analytics 参与者角色。 在 Azure 门户中为订阅选择“访问控制 (IAM)”,然后从面板的顶部选项选择“角色分配”后,必须向当前用户显示一个条目:配置 Log Analytics 的用户的 Log Analytics 所有者

    Screenshot of the Access control pane with role highlighted.

完成以上步骤后,就完成了 Azure Log Analytics 配置部分。 下一节介绍如何继续完成 Power BI 管理门户中的配置。

允许在管理门户进行工作区级别日志记录

Power BI 管理员必须完成以下步骤才能为 Power BI Premium 工作区启用 Azure Log Analytics。 此设置支持 Power BI Premium 工作区管理员在满足先决条件后,可将其工作区日志发送到 Azure Log Analytics。

  1. 在“Power BI 管理门户”中,转到“租户设置 > 审核和使用情况设置”,然后展开“工作区管理员的 Azure Log Analytics 连接”。 要允许工作区管理员启用 Log Analytics,请将滑块设置为“已启用”,并在“应用于”下指定所需的安全组,如下图所示。

    Screenshot of tenant settings in the Admin portal. Azure log analytics connections for workspace administrators is expanded and enabled.

在高级工作区中配置日志记录

  1. 在 Premium 工作区中,工作区管理员可以启用 Log Analytics。 为此,可转到“设置”,如下图所示。

    Screenshot of the settings pane in a Premium workspace.

  2. 在“设置”窗格中,选择“Azure 连接”,然后展开“Log Analytics”,如下图所示。

    Screenshot of the Azure connections tab open in the settings pane, Log Analytics is expanded.

  3. 依次选择“Azure 订阅”、“资源组”和在上一部分中配置的 Log Analytics 工作区。 然后选择“保存”。 成功完成后,展开的“租户级 Log Analytics”部分的外观应与下图类似。

    Screenshot of the Azure connections tab open in the settings pane showing sample information.

断开 Azure Log Analytics

可以从 Azure Log Analytics 断开连接,停止将日志发送到 Azure。 要断开连接,请在“Power BI 工作区设置”中,转到“Log Analytics”设置。 选择“断开与 Azure 的连接”。 然后选择“保存”以断开连接。

Screenshot of the disconnect warning on the settings pane.

注意

将 Power BI 工作区从 Azure Log Analytics 断开连接时,不会删除日志。 数据将保留,并遵循此处设置的存储和保留策略。

使用方案

Azure Log Analytics 和 Power BI 可通过多种方式帮助解决组织的实际挑战。 考虑以下情况:

  • 按容量、工作区、报表或用户标识 Analysis Services 引擎活动频繁或异常的时间段。
  • 分析查询性能和趋势,包括外部 DirectQuery 操作。
  • 分析语义模型刷新持续时间、重叠和处理步骤。
  • 分析使用高级 XMLA 终结点发送的自定义操作。

在 Power BI 社区向我们发送有关你如何使用日志记录以及它如何帮助你所在组织的反馈。

错误情况和解决方法

下表提供了常见错误的集合和触发这些错误的事件或配置,以及建议的解决方法。

触发条件 类型 消息
你无权写入 Log Analytics 工作区 错误:无法继续 需要此 Log Analytics 工作区的写入权限,才能将其连接到 Power BI。 联系组织中管理 Azure 订阅的人员,以解决此问题。
你无权写入 Log Analytics 工作区帐户 错误:无法继续 需要此 Log Analytics 工作区的写入权限,才能将其连接到 Power BI。
你无权访问任何 Azure 订阅 错误:无法继续 无权访问任何 Azure 订阅 请求组织中管理 Azure 订阅的人员向你授予参与者访问权限或更高权限。
你无权访问该订阅内的任何 Azure Log Analytics 工作区 错误:无法继续 你无权访问 Azure Log Analytics 工作区。 请求组织中管理 Azure 订阅的人员将你添加到 Log Analytics 所有者或参与者角色。
尝试连接时禁用了工作区级别 Log Analytics 信息 请求租户管理员向工作区管理员授予连接 Log Analytics 工作区的权限。
尝试断开连接时禁用了工作区级别 Log Analytics 信息 租户管理员撤销了工作区管理员连接其自己的 Azure Log Analytics 工作区的权限。 如果断开连接,将无法连接到其他工作区。

事件和架构

启用 Azure Log Analytics 后,它会开始记录以下事件类别。 有关这些事件的详细信息,请参阅 Analysis Services 跟踪事件

  • AggregateTableRewriteQuery
  • 命令
  • 死锁
  • DirectQuery
  • 发现
  • 错误
  • ProgressReport
  • 查询
  • Session Initialize
  • VertiPaqSEQuery
  • 通知

下表介绍了架构。

属性 现有 Azure Analysis Services 属性 说明
TimeGenerated 生成日志的时间戳 (UTC)。
OperationName EventClass_s 与日志记录相关联的操作。
CorrelationId 关联事件的 ID。 可用于标识多个表之间的关联事件。
PowerBIWorkspaceId 包含正在操作的项目的工作区的唯一标识符。
PremiumCapacityId 承载正在操作的项目的高级容量的唯一标识符。
ApplicationContext ApplicationContext_s 唯一标识符的属性包,提供有关执行请求的应用程序的详细信息。 例如,报表 ID。
ApplicationName ApplicationName_s 包含创建了到服务器连接的客户端应用程序的名称。 此列由应用程序传递的值填充,而不是由所显示的程序名填充。
ArtifactId 记录数据的资源的唯一标识符。
ArtifactKind 记录操作的项目的类型,例如语义模型。
CpuTimeMs CPUTime_s 事件所用的 CPU 时间(毫秒)。
ArtifactName DatabaseName_s 记录此操作的 Power BI 项目的名称。
LogAnalyticsCategory 唯一 事件类别,如审核/安全/请求。
DatasetMode 语义模型的模式。 Import、DirectQuery 或 Composite。
DurationMs Duration_s 操作使用的时间(毫秒)。
用户 User_s 与正在运行的操作关联的用户。 当必须在服务器上模拟最终用户身份时使用。
ExecutingUser EffectiveUsername_s 运行操作的用户。
OperationDetailName EventSubclass_s 有关操作的更多详细信息
XmlaObjectPath ObjectPath_s 对象路径。 逗号分隔的父级列表,以对象的父级开头。
PowerBIWorkspaceName 包含该项目的 Power BI 工作区名称。
StatusCode Error_s 操作的状态代码 其中包括成功和失败。
ProgressCounter ProgressTotal_s 进度计数器。
XmlaProperties RequestProperties_s XMLA 请求的属性。
XmlaSessionId SPID_s Analysis Services 会话标识符。
级别 Severity_s 包含正在记录的操作的严重性级别。 成功、信息性、警告或错误。
标识 有关用户和声明的信息。
状态 操作的状态。
EventText TextData_s 包含与操作关联的详细信息,例如 DAX 查询。
CustomerTenantId 客户的 Power BI 租户标识符。
XmlaRequestId RootActivityId_g 请求的唯一标识符。
ReplicaID 在启用查询横向扩展 (QSO) 时,使用副本标识符可以识别副本。 读写副本始终具有 ReplicaId=“AAA”,并且只读副本的 ReplicaId 则从“AAB”开始。 对于未启用 QSO 的语义模型,ReplicaId 始终为“AAA”

Log Analytics KQL 查询示例

将 Azure Log Analytics 与 Power BI 结合使用时,以下示例查询集合可能会有所帮助。 可以直接在 Azure 门户中或通过 API 运行它们来查询最新数据(通常是大约 5 到 10 分钟前的数据)。

// log count per day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| summarize count() by format_datetime(TimeGenerated, 'yyyy-MM-dd')


// average query duration by day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'QueryEnd'
| summarize avg(DurationMs) by format_datetime(TimeGenerated, 'yyyy-MM-dd')


//query duration percentiles for a single day in 1 hour bins
PowerBIDatasetsWorkspace
| where TimeGenerated >= todatetime('2021-04-28') and TimeGenerated <= todatetime('2021-04-29')
| where OperationName == 'QueryEnd'
| summarize percentiles(DurationMs, 0.5, 0.9) by bin(TimeGenerated, 1h)


// refresh durations by workspace and semantic model for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'CommandEnd'
| where ExecutingUser contains 'Power BI Service'
| where EventText contains 'refresh'
| project PowerBIWorkspaceName, DatasetName = ArtifactName, DurationMs

// query count, distinctUsers, avgCPU, avgDuration by workspace for last 30d
PowerBIDatasetsWorkspace  
| where TimeGenerated > ago(30d)
| where OperationName == "QueryEnd" 
| summarize QueryCount=count()
    , Users = dcount(ExecutingUser)
    , AvgCPU = avg(CpuTimeMs)
    , AvgDuration = avg(DurationMs)
by PowerBIWorkspaceId

示例 Power BI 报表模板

使用 GitHub 上的开源 Power BI 报表模板来浏览和获取 Azure Log Analytics Power BI 数据的见解。

以下文章可帮助你详细了解 Power BI 以及它与 Azure Log Analytics 的集成。