计算表方案和用例

在数据流中使用计算表有多种好处。 本文介绍计算表的用例并描述它们在后台的工作方式。

什么是计算表?

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

尽管可以重复进行创建表的查询并对它们应用新的转换,但这种方法有以下缺点:数据被引入两次,并且数据源上的负载加倍。

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

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

屏幕截图,其中突出显示计算表。

为什么要使用计算表?

在一个表中执行所有转换步骤可能很慢。 造成这种速度减慢的原因可能有很多 - 数据源可能很慢,或者可能需要在两个或更多个查询中复制你正在执行的转换。 首先从源引入数据,然后在一个或多个表中重用数据可能是有利的。 在这种情况下,你可以选择创建两个表:一个是从数据源中获取数据的表,另一个是计算表,计算表会对已写入到数据流所使用的数据湖的数据应用其他转换。 这种变化可以提高数据的性能和可重用性,从而可节省时间和资源。

例如,如果两个表共享其转换逻辑的一部分,而没有使用计算表,则必须进行两次转换。

图像,其中显示两次数据转换。

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

图像,其中显示在计算表中完成一次、存储在数据湖中的常见转换以及稍后发生的其余唯一转换。

计算表会提供一个位置作为转换的源代码并加速转换,因为它只需要完成一次而不是多次。 数据源上的负载也会减少。

使用计算表的方案示例

如果要在 Power BI 中构建聚合表以加快数据模型的运行速度,则可以通过引用原始表并对其应用其他转换来构建聚合表。 通过使用此方法,你不需要从源(来自原始表的部分)复制转换。

例如,下图显示了 Orders 表。

Orders 表的屏幕截图。

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

创建计算表。

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

计算表可能有进一步的转换。 例如,你可以使用分组依据在客户级别聚合数据。

“Orders aggregated”表的屏幕截图,表中突出显示了“Customer”列。

这意味着 Orders Aggregated 表从 Orders 表获取数据,而不是再次从数据源获取数据。 由于一些需要完成的转换已经在 Orders 表中完成,因此性能更好并且数据转换更快。

其他数据流中的计算表

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

从 Power Platform 数据流获取数据。

此图像着重显示了 Power Query 选择数据源窗口中的 Power Platform 数据流连接器。 此外,还包括一个说明,指出可以基于另一个数据流表(该数据流表已保存在存储中)的数据来创建一个数据流表。

计算表的概念是将表保存在存储中,并从该表获取其他表,以便你可以减少从数据源读取的时间并共享一些常见的转换。 这缩减可以通过数据流连接器从其他数据流获取数据或引用同一数据流中的另一个查询来实现。

计算表:使用转换还是不使用转换?

现在,你知道计算表对于提高数据转换性能非常有用,那么一个值得询问的问题是:转换是应该始终推迟到计算表,还是应该应用于源表。 也就是说,数据是否应该始终被引入到一个表中,然后在计算表中进行转换? 有什么优点和缺点?

加载数据而不转换文本/CSV 文件

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

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

对 SQL 表执行一些常见转换

如果数据源支持查询折叠,则最好在源表中执行一些转换,因为查询将被折叠到数据源,并且只会从数据源中获取转换后的数据。 这些变化可提高整体性能。 应该在源表中应用下游计算表中常见的一组转换,以便它们可以折叠到源。 仅应用于下游表的其他转换应在计算表中完成。