Power BI 中的高密度行采样

Power BI 中的采样算法改进了对高密度数据进行采样的视觉对象。 例如,每个零售店每年的销售额超过 10,000,可以根据零售店的销售业绩创建一个折线图。 此类销售信息折线图对每个零售店的数据进行数据采样,并创建一个多系列折线图表示基础数据。 确保选择该数据的有意义的表示形式,以说明销售额如何随时间变化。 这种做法在可视化高密度数据时很常见。 本文详细介绍了高密度数据采样。

Screenshot of line charts, showing the high-density sampling data.

注意

本文所述的高密度采样算法同时适用于 Power BI Desktop 和 Power BI 服务。

高密度行采样的工作方式

以前,Power BI 以确定性方式在所有基础数据中选择采样数据点的集合。 例如,对于视觉对象跨越一个日历年的高密度数据,视觉对象中可能会显示 350 个示例数据点,选择每个数据点才能确保视觉对象中呈现出所有数据。 为方便理解,假设要绘制一年内的股票价格,并选择 365 个数据点来创建折线图视觉对象。 一天对应一个数据点。

在这种情况下,每天的股票价格都有很多值。 当然每天都有最高价和最低价,而且可能出现在开市后的任何时间。 在高密度行采样中,如果每天都在上午 10:30 和中午 12:00 获取基础数据采样,则会得到基础数据的代表快照(例如上午 10:30 和中午12:00 的价格), 但可能不会捕获到实际的最高股价和最低股价作为当天的代表数据点。 在此类情况下,采样是基础数据的代表,但不保证它始终能捕获到重要的点,在此示例中即每日最高股价和最低股价。

根据定义,对高密度数据进行采样,以快速合理地创建能响应交互操作的视觉对象。 视觉对象上过多的数据点可能会阻碍它并降低趋势的可见性。 如何对数据进行采样才能提供最佳的可视化效果体验这一疑问推动了采样算法的创建。 在 Power BI Desktop 中,该算法将每个时间片段中重要点的响应、表示和清楚保存以最佳方式组合。

新的行采样算法的工作方式

高密度行采样的算法可以使用具有连续 x 轴的折线图和面积图视觉对象。

对于高密度视觉对象,Power BI 会智能地将数据拆分为高分辨度区块,然后选取重要的点来表示每个区块。 拆分高分辨度数据的过程经过优化,可确保生成的图表在外观上与所有基础数据点的呈现方式没有区别,但速度更快,交互性更强。

高密度行视觉对象的最小值和最大值

以下限制适用于任何可视化效果:

  • 无论有多少个基础数据点或系列,大多数视觉对象上最多可显示 3,500 个数据点(请参阅以下列表中的例外情况)。 例如,如果有 10 个系列,每个系列有 350 个数据点,则视觉对象已达到其总体数据点的上限。 如果有一个系列,则可以有多达 3,500 个数据点,只要算法认为这是基础数据的最佳采样。

  • 一个视觉对象最多可以有 60 个系列。 如果有超过 60 个系列,则拆分数据并创建多个视觉对象,使每个视觉对象拥有少于或等于 60 个系列。 使用切片器来只显示数据段是个好方法,但仅适用于特定系列。 例如,如果要在图例中显示所有子类别,则可以使用切片器根据同一报表页上的整体类别进行筛选。

对于以下视觉对象类型(3500 个数据点限制的例外情况),最大数据限制数更高:

  • 对于 R 视觉对象,最多为 150000 个数据点。
  • Azure 地图视觉对象:30,000 个数据点。
  • 某些散点图配置:10,000 个数据点(散点图默认为 3500)。
  • 使用高密度采样的所有其他视觉对象:3,500。 其他的一些视觉对象可能会可视化更多数据,但它们不会使用采样。

这些参数可确保 Power BI Desktop 中的视觉对象快速呈现,并且可响应与用户的交互,而不会在呈现视觉效果的计算机上导致不必要的计算开销。

评估高密度行视觉对象的代表数据点

当基础数据点的数量超过视觉对象中可以表示的最大数据点数时,称为“分箱”的过程就会开始。 分箱将基础数据分组到称为箱的组中,然后以迭代方式优化这些箱。

算法会创建尽可能多的箱,以便为视觉对象创建最大粒度。 算法会查找每个箱中的最小和最大数据值,确保视觉对象捕获到并显示出重要的值(例如异常值)。 根据分箱结果和 Power BI 对数据的后续评估,系统会确定视觉对象 x 轴的最小分辨度,以确保视觉对象达到最大粒度。

如前所述,对于大多数视觉对象,每个系列的最小粒度为 350 点,最大粒度为 3,500 点。 前面的段落中列出了“例外”。

每个箱由两个数据点表示,这些数据点即视觉对象中箱的代表数据点。 数据点是该箱的最高值和最低值。 通过选择最高值和最低值,装箱过程可确保视觉对象能够捕获和呈现出所有重要的最高值或最低值。

是否觉得这很像是通过大量分析确保捕获偶尔的异常值,并在视觉对象中正确显示出该值,确实是这样。 这正是使用新算法和执行分箱过程的原因。

工具提示和高密度行采样

请务必注意在此分箱过程中,会捕获并显示给定箱中的最小值和最大值,并且将鼠标悬停在数据点上时,工具提示显示数据的方式可能会受影响。 为解释这种情况发生的方式和原因,我们重新回顾一下股票价格示例。

假设要根据股票价格创建一个视觉对象,并且比较两支使用高密度采样的不同股票。 每个系列的基础数据都有很多数据点。 例如,可能每时每刻都在捕捉股票价格。 高密度行采样算法会对每个系列执行独立分箱。

现在假设第一支股票价格在 12:02 上涨,并在 10 秒后迅速下跌。 这是一个重要的数据点。 对该股票装箱时,12:02 的最高值将是该箱的代表数据点。

但是,对于第二支股票,12:02 既没有出现最高值,也没有出现最低值。 该箱中包含的最高值和最低值可能在 12:02 的三分钟后出现。 在这种情况下,创建折线图并将鼠标悬停在 12:02 上时,你将在工具提示中看到第一只股票的值。 这是因为它在 12:02 处急转直下,并且该值被选为该箱的高数据点。 但你不会在工具提示中在 12:02 处看到第二只股票的任何值。 因为在包含 12:02 的箱中,第二支股票没有出现最高值或最低值。 因此在 12:02 时,第二支股票没有任何数据显示,因此不会显示任何工具提示数据。

工具提示经常发生这种情况。 指定箱的最高值和最低值可能与均匀缩放的 x 轴值点不完全匹配,工具提示不会显示该值。

如何启用高密度行采样

默认情况下,该算法为“启用”。 若要更改此设置,请转到“常规”卡中的“格式设置”窗格,你将在底部看到名为“高密度采样”的滑块。 选择该滑块以切换为“打开”或“关闭”。

Screenshot of a high-density line sampling, showing pointers to the Formatting pane, General, and High Density Sampling.

注意事项和限制

高密度行采样的算法是 Power BI 的一个重要改进,但在使用高密度值和数据时需要了解以下注意事项。

  • 由于粒度增加和装箱过程,“工具提示”只能在代表数据与光标对齐时显示值。 有关详细信息,请参阅本文中的“工具提示和高密度行采样”部分。

  • 当整个数据源的大小太大时,该算法会通过删除系列(图例元素)来最大限度导入数据。

    • 在这种情况下,该算法会按字母顺序对图例排序,并按字母顺序从前往后导入图例元素,直到达到数据导入上限,之后将不再导入更多系列。
  • 当基础数据集的系列超过 60 个(这是最大系列数)时,该算法会按字母顺序对系列排序,并删除字母排序在 60 之后的系列。

  • 如果数据中的值的类型不是数字或日期/时间,则 Power BI 将不使用该算法,并还原为以前的(非高密度采样)算法。

  • 该算法不支持“显示不含数据的项目”设置。

  • 与 SQL Server Analysis Services 2016 版或更早版本中托管的模型进行实时连接时,不支持该算法。 Power BI 或 Azure Analysis Services 中托管的模型支持此算法。