介绍
记录你要使用的诊断信息后,下一步就是能够理解这些诊断信息所表达的内容。
最好充分了解查询诊断架构中每个列的含义,本简短教程不会重复此作。 此处有完整的说明。
通常,生成可视化效果时,最好使用完整的详细表。 由于无论行数如何,你可能看到的是某种描述在不同资源中花费的时间如何相加,或者发出的本机查询是什么。
如文章“诊断记录”中所述,我正在处理相同表(或几乎相同)的 OData 和 SQL 跟踪,即 Northwind 数据库中的 Customers 表。 具体而言,我将专注于客户普遍关心的问题,以及更容易解释的一组跟踪数据之一:完全刷新数据模型。
生成可视化效果
在分析跟踪时,可以通过多种方法进行评估。 在本文中,我们将重点介绍两个可视化拆分-一个显示你关心的详细信息,另一个用于轻松查看各种因素的时间贡献。 对于第一个可视化,将使用一个表格。 你可以选择任何你喜欢的字段,但推荐选择以下字段来轻松、高层次地了解正在发生的事情:
对于第二个可视化效果,一种选择是使用堆积柱形图。 在“Axis”参数中,可能需要使用“Id”或“Step”。 如果我们正在查看“刷新”,因为它与编辑器本身中的步骤无关,我们可能只想查看“Id”。 对于“Legend”参数,应设置“Category”或“Operation”(具体取决于所需的粒度)。 对于“值”,请设置“独占持续时间”(并确保它不是 %,以便获取原始持续时间值)。 最后,对于工具提示,设置“最早开始时间”。
生成可视化效果后,请确保按“最早 开始时间”升序排序,以便查看发生的顺序。
虽然确切的需求可能有所不同,但这种图表组合是用于查看众多诊断文件并满足多种用途的一个良好起点。
解释可视化图形
如上所述,可以尝试通过查询诊断来回答许多问题,但我们看到的两个问题是询问花费的时间,并询问发送到源的查询是什么。
询问如何利用时间是很简单的,对于大多数连接器来说,时间的使用方式会类似。 如其他地方所述,包含查询诊断的警告是,根据连接器,你将看到截然不同的功能。 例如,许多基于 ODBC 的连接器不会准确记录发送到实际后端系统的查询,因为 Power Query 只看到它发送到 ODBC 驱动程序的内容。
如果想要了解时间的花费方式,我们只需查看上面生成的可视化效果。
现在,由于我们在此处使用的示例查询的时间值太小了,因此,如果想要处理 Power BI 报表时间的方式,最好在 Power Query 编辑器中将 独占持续时间 列转换为“秒”。 完成此转换后,我们可以查看图表,并大致了解花费时间的位置。
对于我的 OData 结果,我在图像中看到,大部分时间都用于从数据源检索数据,如果我选择图例上的“数据源”项,系统会显示与向数据源发送查询相关的所有不同操作。
如果我们执行相同的操作并生成类似的可视化效果,但使用 SQL 跟踪而不是 ODATA 跟踪,我们可以看到两个数据源之间的对比!
如果选择数据源表,就像使用 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% 的操作相关联。 如果您打开 路径,您会发现后者实际上是前者的子节点。 这意味着第一个查询基本上自行添加了少量时间,实际数据检索由“内部”查询跟踪。
这些是极端值,但它们位于可能看到的边界内。