计算表方案和用例

在数据流中使用计算表 有好处。 本文介绍计算表的用例,并介绍了它们如何在后台工作。

什么是计算表?

表表示刷新数据流后在数据流中创建的查询的数据输出。 它表示来自源的数据,并选择性地表示应用于它的转换。 有时,你可能想要创建新的表,而这个表是基于之前引入的表生成的。

尽管可以重复创建表并对其应用新转换的查询,但此方法有缺点:数据引入两次,数据源上的负载将翻倍。

计算表解决了这两个问题。 计算表类似于其他表,因为它们从源获取数据,你可以应用进一步的转换来创建它们。 但其数据源自使用的存储数据流,而不是原始数据源。 也就是说,它们以前是由数据流创建的,然后重复使用。

可以通过在同一数据流中引用表或通过引用在不同数据流中创建的表来创建计算表。

突出显示计算表的屏幕截图。

为何使用计算表?

在一个表中执行所有转换步骤可能很慢。 这种速度放缓的原因可能有很多—数据源可能很慢,或者你执行的转换可能需要在两个或更多个查询中复制。 最好先从源引入数据,然后在一个或多个表中重复使用它。 在这种情况下,可以选择创建以下两种表:一种表直接从数据源获取数据;另一种表(即计算表)是基于对已经写入到数据流所使用的数据湖中的数据创建的,且数据经过了更多转换操作。 此更改可以提高数据的性能和可重用性,从而节省时间和资源。

例如,如果两个表共享了哪怕只有部分转换逻辑,但如果没有计算表,还是必须执行两次转换。

显示数据转换两次的图像。

但是,如果使用计算表,则转换的通用(共享)部分将处理一次,并将其存储在 Azure Data Lake Storage 中。 然后,将接着常见转换的输出结果继续处理剩余的转换。 总的来说,此处理速度要快得多。

显示了常见转换在计算表中执行一次,并将结果存储在数据湖中,之后进行剩余唯一转换的图像。

计算表充当了转换操作的源代码库,因为仅需执行一次转换而非多次,大大提升了转换效率。 数据源上的负载也会减少。

使用计算表的示例方案

如果要在 Power BI 中生成聚合表以加快数据模型的速度,可以通过引用原始表并向其应用更多转换来生成聚合表。 使用此方法时,无需从来源(即原始表的部分)重复进行转换操作。

例如,下图显示了“订单”表。

“订单”表的屏幕截图。

使用此表中的引用,可以生成计算表。

创建计算表。

屏幕截图显示如何从订单表创建计算表。 首先右键单击“查询”窗格中的“订单”表,然后从下拉菜单中选择“引用”选项。 此操作将创建计算表,这里将其重命名为“订单”汇总表。

计算表还可以进行进一步的转换。 例如,可以使用 Group By 在客户级别聚合数据。

突出显示“客户”列的“订单”汇总表的屏幕截图。

这意味着“订单聚合”表从“订单”表中获取数据,而不是再次从数据源中获取。 由于一些需要执行的转换已在 Orders 表中完成,因此性能更好,数据转换速度更快。

其他数据流中的计算表

还可以在其他数据流中创建计算表。 可以通过使用 Microsoft Power Platform 数据流连接器从数据流中获取数据来创建它。

从 Power Platform 数据流获取数据。

突出显示了从 Power Query 的“选择数据源”窗口中选择 Power Platform 数据流连接器的图像。 此外,还包括一个说明,指出一个数据流表可以在另一个数据流表的数据的基础上构建,该表已保留在存储中。

计算表用于在表中持久保存数据,供其他表引用,以缩短从数据源读取的时间并共享一些常见转换操作。 可以通过数据流连接器从其他数据流获取数据或引用同一数据流中的另一个查询来实现这种减少。

计算表:是否需转换?

现在,你已知道计算表对于提高数据转换的性能非常有利,因此要问的一个好问题是,转换是否应始终延迟到计算表,还是应将其应用于源表。 也就是说,数据是否应始终被引入到一个表中,然后在计算后的表中进行转换? 什么是利弊?

在不转换文本/CSV 文件的情况下加载数据

当数据源不支持查询折叠(如文本/CSV 文件)时,从源获取数据时应用转换没有什么好处,尤其是在数据卷很大时。 源表应仅从 Text/CSV 文件加载数据,而无需应用任何转换。 然后,计算表可以从源表获取数据,并在引入的数据的基础上执行转换。

你可能会问,创建仅引入数据的源表的价值是什么? 此类表仍然很有用,因为如果源中的数据用于多个表,则会减少数据源上的负载。 此外,其他人和数据流现在可以重复使用数据。 计算表在数据量较大或数据源通过本地数据网关访问时特别有用,因为它们会减少来自网关的流量以及数据源背后的负载。

对 SQL 表执行一些常见转换

如果数据源支持查询折叠,则最好在源表中执行某些转换操作,因为查询已折叠到数据源,只会从中提取经过转换的数据。 这些更改可提高整体性能。 应将下游计算表中常见的转换集应用于源表中,以便可以将其折叠到源中。 其他仅适用于下游表的转换应在计算表中完成。