使用查询诊断,您可以更好地了解 Power Query 在 Power BI Desktop 中进行创作和刷新时的操作。 虽然我们将在未来扩展此功能,包括添加在完全刷新时使用它的能力,但目前您可以使用此功能来了解您发出的查询类型、在创作刷新期间可能遇到的慢速情况,以及正在发生的后台事件。
若要使用查询诊断,请转到 Power Query 编辑器功能区中的 “工具 ”选项卡。
默认情况下,查询诊断可能需要管理权限才能运行(具体取决于 IT 策略)。 如果发现自己无法运行查询诊断,请打开 Power BI Desktop 选项页,然后在“诊断”选项卡中选择“在查询编辑器中启用”(不需要以管理员身份运行)。 在将数据完全刷新到 Power BI 而不是使用 Power Query 编辑器时,此选择将限制您跟踪诊断的能力。 但确实允许你在预览、创作等时仍然使用它。
每当开始诊断时,Power Query 就会开始跟踪你导致的任何评估。 在大多数用户看来,评估是在按下刷新按钮时,或首次检索数据时进行的。 但有许多操作可能导致需要进行评估,具体取决于连接器。 例如,在 SQL 连接器中,检索要筛选的值列表时,也会启动评估,但它不会与用户查询相关联,并在诊断中表示。 其他系统生成的查询可能包括导航工具或获取数据功能。
按 “诊断步骤”时,Power Query 仅对要查看的步骤运行特殊评估。 然后,它会显示该步骤的诊断,而不显示查询中的其他步骤的诊断。 通过此评估,可以更轻松地缩小问题视图。
如果你正在记录所有来自开始诊断的跟踪,务必要按下停止诊断。 停止诊断使引擎能够收集记录的跟踪并将其解析为正确的输出。 如果没有此步骤,痕迹将会丢失。
诊断类型
我们目前提供三种类型的诊断,其中一种具有两个级别的详细信息。
这些诊断的第一个是主要诊断,其中包含详细视图和汇总视图。 汇总视图旨在让你立即深入了解查询中花费的时间。 详细视图提供了更深入的信息,逐行查看,通常仅供高级用户进行深入诊断使用。
对于此视图,某些功能(如数据源查询列)目前仅在某些连接器上可用。 我们将努力在未来扩展这一覆盖范围的广度。
数据隐私分区可让你更好地了解用于数据隐私的逻辑分区。
注释
Power Query 可能会执行一些你未直接触发的评估。 这些评估中的某些是为了检索元数据,以便我们能够更好地优化查询,或提供更佳的用户体验(例如检索列中显示的‘筛选行’功能中的唯一值列表)。 其他可能涉及到连接器如何处理并行评估的方式。 同时,如果在查询诊断中看到你认为没有意义的重复查询,请随时通过正常的支持渠道联系我们,你的反馈是我们改进产品的重要途径。
汇总视图与详细视图
查询诊断提供两个视图:汇总和详细。 汇总视图将多个相关操作合并成一个操作。 在此过程中,每个操作收集的详细信息将被合并,并对独占持续时间进行求和。 在此过程中不会丢失任何信息。
汇总视图提供了评估期间所发生情况的概览,便于进行简明的高层次审查。 如果特定操作需要进一步细分,可以查看组 ID,并查看在详细视图中分组的相应操作。
解释多个评估的过程
在 Power Query 编辑器中发生刷新时,在后台做了大量作来尝试提供流畅的用户体验。 例如, 刷新预览时,计算器将执行每个给定查询的最后一步。 但在后台,它会依次运行 n-1、n-2 步骤,以此类推。 因此,如果你回溯你的步骤,它已经可用。
为了提高性能,当前实施一些缓存策略,以避免在返回步骤时重新运行最终查询计划的每一个部分。 虽然此缓存对于正常创作很有用,但这意味着,由于以后的计算拉取缓存数据,因此并不总是获得正确的步骤比较信息。
诊断架构
Id
分析录制结果时,请务必按 ID 筛选录制会话,这样独占持续时间百分比等列才有意义。
ID 是复合标识符。 它由两个数字组成,一个数字在点前,一个之后。 对于由单个用户操作产生的所有评估,第一个数字相同。 换句话说,如果按两次刷新,则会有两个不同的数字出现在小数点前面,分别对应每次用户活动。 对于给定的诊断记录,此编号是连续的。
第二个数字表示引擎的评估。 此数字在评估排队的进程生命周期内是按顺序的。 如果运行多个诊断记录会话,此数字会在不同的会话中继续增长。
总之,如果开始录制,请按下“评估”按钮一次,然后停止录制,在诊断中会显示一些 ID。 但是,因为你只采取了一个动作,因此它们都标记为 1.1、1.2、1.3 等。
activityId 与 evaluationId 的组合(以点分隔)为单个录制会话的评估提供唯一标识符。
Query
Power Query 编辑器左侧窗格中的“查询”名称。
步骤
Power Query 编辑器右侧窗格中步骤的名称。 筛选器下拉列表等内容通常与所筛选的步骤相关联,即使不刷新步骤也是如此。
类别
操作的类别。
数据源类型
此数据告知要访问的数据源类型,例如 SQL 或 Oracle。
操作
正在执行的实际操作。 此操作可以包括评估器工作、打开连接、发送查询到数据源等。
开始时间
操作开始的时间。
结束时间
操作结束的时间。
独占持续时间(%)
事件的“独占持续时间”列指的是事件处于活动状态的持续时长。 这与从减去事件的“开始时间”列和结束时间列中的值而得出的“持续时间”值形成对比。 此“持续时间”值表示事件开始时间与结束时间之间的总时间,这可能包括事件处于暂停或非活动状态的时间,而另一个事件正在消耗资源。
独占持续时间 % 在给定评估中累加约为100%,如 ID 列所示。 例如,如果筛选 ID 为 1.x 的行,则独占持续时间百分比将总计约 100%。 如果对给定诊断表中所有行的独占持续时间 % 值求和,则情况并非如此。
独占时间段
独占时间的绝对值,而不是 %。 评估的总持续时间(即,独占持续时间 + 非活动时间)可通过以下两种方式之一计算:
查找名为“Evaluation”的操作。结束时间与开始时间之间的差异即为事件的总持续时间。
用事件中所有操作的最大结束时间减去最小开始时间。 如果为事件收集的信息未计入总持续时间,则会生成一个名为“跟踪缺口”的操作,以考虑这一时间差距。
Resource
您正在访问的数据资源。 此资源的确切格式取决于数据源。
数据源查询
Power Query 进行称为折叠的操作,即尽可能在后端数据源上运行查询的各部分。 在 DirectQuery 模式(通过 Power Query 启用)中,仅转换该折叠运行。 在导入模式中,无法折叠的转换将会在本地运行。
使用“数据源查询”列可以查看针对后端数据源发送的查询或 HTTP 请求/响应。 在编辑器中创作查询时,会发出许多数据源查询。 其中一些查询是呈现预览版的实际最终数据源查询。 但其他人可能用于数据分析、筛选器下拉列表、联接信息、检索架构的元数据以及其他任意数量的小型查询。
一般情况下,不应担心发出的数据源查询数,除非有具体原因需要关注。 相反,应专注于确保检索正确的内容。 此列还可能有助于确定 Power Query 评估是否已完全折叠。
其他信息
我们的连接器检索了大量信息。 其中很多内容参差不齐,并且不太符合标准列层次结构。 此信息将放入附加信息栏的记录中。 从自定义连接器记录的信息也在此处显示。
行计数
数据源查询返回的行数。 未在所有连接器上启用。
内容长度
HTTP 请求返回的内容长度,如常规定义所示。 此架构未在所有连接器中启用,并且对于以区块检索请求的连接器来说并不准确。
用户查询
一个布尔值,指示它是由用户创建并显示在左侧窗格中的查询,还是由其他用户操作生成的。 其他用户操作可以包括选择筛选器或使用获取数据功能中的导航器。
路径
路径表示在单次评估中,作为间隔树中所有操作的一部分进行查看时的操作相对路径。 在树的顶部(根)处,有一个名为评估的单一操作,其路径为“0”。此评估的开始时间对应于整个评估的开始时间。 此评估的结束时间显示整个评估完成的时间。 此顶级操作的专属持续时间为 0,因为它的唯一的目的是充当树的根。
进一步的操作从根目录分支出来。 例如,某个操作可能具有“0/1/5”作为路径。 此路径将理解为:
- 0:树根
- 1:当前操作的父级
- 5:当前操作的索引
操作 "0/1/5" 可能具有子节点,其路径格式为 "0/1/5/8",其中 8 代表子节点的索引。
群组标识符
如果合并两个(或更多)操作会导致细节丢失,则不会执行合并。 分组的设计旨在模拟评估期间执行的“指令”。 在详细视图中,多个操作共享一个组编号,该编号对应于“摘要”视图中聚合的组。
与大多数列一样,组 ID 仅在通过 ID 列筛选后用于特定评估中具有相关性。
数据隐私分区架构
Id
与其他查询诊断结果的 ID 相同。 整数部分表示单个活动 ID,而小数部分表示单个评价。
分区键
对应于用作防火墙分区的查询/步骤。
防火墙组
解释为何必须单独评估此分区的分类,包括有关分区隐私级别的详细信息。
访问的资源
此分区访问的所有资源的资源路径列表,通常唯一标识数据源。
分区输入
当前分区所依赖的分区键列表(此列表可用于生成图形)。
Expression
在分区的查询/步骤的基础上计算的表达式。 在某些情况下,它与查询/步骤相吻合。
开始时间
此分区的评估开始的时间。
结束时间
评估结束此分区的时间。
持续时间
派生自结束时间减去开始时间的值。
独占时长
如果假定分区在单个线程中执行,则独占持续时间是可归因于此分区的“实际”持续时间。
独占持续时间 %
以百分比表示的独占持续时间。
Diagnostics
仅当同时捕获查询诊断“聚合”或“详细”时,才会显示此列,允许用户在两个诊断输出之间对应。
性能计数器架构
运行性能计数器时,每半秒 Power Query 都会拍摄资源利用率的快照。 此快照对非常快速的查询没有用处,但对占用更多资源的查询非常有用。
% 处理器时间
处理器在查询上花费的时间百分比。 由于多个处理器,此百分比可能超过 100%。
处理器总时间
在查询上花费的处理器时间的总持续时间。
每秒 IO 数据字节数
从数据源接收的数据的吞吐量速度(以每秒字节为单位)。
提交(字节)
评估保留的虚拟内存量。
工作集(字节)
评估保留的内存量。