在Power BI中可视化和解释查询诊断

记录要使用的诊断后,下一步是了解他们所说的内容。

最好很好地了解查询诊断架构中的每个列的含义。 本教程不介绍该信息。 有关完整说明,请参阅 查询诊断

通常,生成可视化效果时,请使用完整的详细表。 无论它包含多少行,你看到的很可能是某种展示:在不同资源上花费的时间是如何累计起来的,或者生成的原生查询语句是什么。

如关于记录诊断信息的文章中所述,此示例使用来自 Northwind 的 Customers 表的 OData 和 SQL 跟踪日志。 具体而言,重点是客户提出的常见请求,以及一组易于解释的跟踪:完全刷新数据模型。

生成可视化效果

审查跟踪时,你可以通过多种方式对其进行评估。 本文介绍两个可视化效果。 第一个可视化效果显示你关心的详细信息,另一个可视化效果显示各种因素的时间贡献。 对于第一个可视化,请使用表格。 你可以选取喜欢的任何字段,但为了简单、深入地了解所发生的事情,请使用以下字段:

对于第二个可视化效果,请使用堆积柱形图。 在 Axis 参数中,使用 ID步骤。 如果你正在查看“刷新”,因为它与编辑器本身中的步骤无关,你可能只想查看 ID。对于 Legend 参数,请设置 类别操作 (具体取决于所需的粒度)。 对于 Value 参数,请设置 独占持续时间 ,并确保它不是 %,以便获取原始持续时间值。 最后,对于 工具提示 参数,设置最早的 开始时间

生成可视化效果后,请确保按 最早 的开始时间 升序排序,以便查看事件发生的顺序。

查询诊断的屏幕截图,其中包含跟踪表以及按类别和 ID 划分的持续时间堆积条形图。

虽然您的具体需求可能有所不同,但对于查看大量诊断文件以及满足多种用途而言,这组图表是一个很好的起点。

解释可视化效果

如前所述,查询诊断可以帮助你回答许多问题。 两个最常见的问题是时间是如何分配的,以及向源端发送了什么查询请求。

了解时间是如何分配的很简单,而且对于大多数连接器来说,情况都差不多。 但是,如其他地方所述,根据连接器,你会看到截然不同的功能。 例如,许多基于 ODBC 的连接器不提供Power Query发送到 ODBC 驱动程序的查询的准确记录。

若要查看时间的花费方式,请查看之前生成的可视化效果。

由于此处使用的示例查询的时间值太小,因此如果要处理Power BI报告时间的方式,最好在Power Query编辑器中将独占持续时间列转换为秒。 进行此转换后,可以查看图表并清楚地了解时间的花费位置。

对于 OData 结果,下图显示大部分时间都在从源检索数据。 如果选择图例上的 数据源 项,则会显示与向数据源发送查询相关的所有不同操作。

OData 查询诊断的屏幕截图,其中详细跟踪表和持续时间图表突出显示了数据源时间。

如果执行所有相同的操作并生成类似的可视化效果,但使用 SQL 跟踪而不是 ODATA 跟踪,可以查看两个数据源的比较方式。

详细跟踪表的屏幕截图,其中显示了 SQL 评估以及按 ID 和类别比较独占持续时间的图表。

如果选择数据源表(如 ODATA 诊断),则会看到第一个评估(此图像中的 2.3)发送元数据查询,第二个评估将检索你关心的数据。 该示例检索的数据量很小,因此数据检索耗时也很短(整个第二次求值耗时不到十分之一秒,而数据检索本身耗时不到二十分之一秒),但并非在所有情况下都能达到这种速度。

如前所述,选择图例上的 “数据源 ”类别以查看发出的查询。

深入了解数据

查看路径

检查此数据时,你可能会注意到花费的时间似乎异常。 例如,在 OData 查询中,你可能会看到数据源查询具有以下值:

Request:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle%20eq%20%27Sales%20Representative%27&$select=CustomerID%2CCountry HTTP/1.1
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7

<Content placeholder>

Response:
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7
Content-Length: 435

<Content placeholder>

此数据源查询关联到一个操作,例如该操作仅占独占持续时间的 1%。 同时,也有类似的方法:

Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1

Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK

此数据源查询与某个占用了近 75% 的独占持续时间的操作相关联。 如果您打开 路径,您会发现后者实际上是前者的子节点。 这一发现意味着,第一个查询本身基本上只会额外增加少量时间,而实际的数据检索时间则由 inner 查询来体现。

这些值是极端的,但它们位于你可能看到的边界内。