缓存表 - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

缓存表

CACHE TABLE 命令可以缓存现有表的数据或创建并缓存包含查询结果的新表。

注意

缓存的数据将在整个查询中保留。

语法、参数和一些示例来自 Apache Spark SQL 参考

语法

CACHE TABLE 命令支持三种语法模式:

使用 AS(不带括号):根据查询结果创建并缓存新表。

CACHE TABLE cache_table_identifier AS query;

带有 AS 和圆括号:函数与第一种语法类似,但使用圆括号对查询进行显式分组。

CACHE TABLE cache_table_identifier AS ( query );

不使用 AS:缓存现有表,使用 SELECT 语句筛选要缓存的行。

CACHE TABLE cache_table_identifier query;

其中:

  • 所有语句都应以分号 (;) 结尾

  • query通常是一个 SELECT 语句

  • 对于 AS,查询周围的括号是可选的

  • AS 关键字是可选的

参数

缓存表标识符

缓存表的名称。可以包括可选的数据库名称限定符。

AS

根据查询结果创建和缓存新表时使用的关键字。

query

定义要缓存的数据的 SELECT 语句或其他查询。

示例

在以下示例中,缓存的表将在整个查询中保留。缓存后,引用的后续查询cache_table_identifier将从缓存的版本中读取,而不是重新计算或从中sourceTable读取。这可以提高经常访问的数据的查询性能。

根据查询结果创建并缓存经过筛选的表

第一个示例演示如何根据查询结果创建和缓存新表。此命令在SELECT语句周围使用不带括号的AS关键字。它会创建一个名为 “cache_table_identifier” 的新表,其中仅包含状态为 sourceTable “” 的 “” 中的行active'。它运行查询,将结果存储在新表中,并缓存新表的内容。原始 “sourceTable” 保持不变,后续查询必须引用 “cache_table_identifier” 才能使用缓存的数据。

CACHE TABLE cache_table_identifier AS SELECT * FROM sourceTable WHERE status = 'active';

使用带括号的 SELECT 语句缓存查询结果

第二个示例演示如何使用括号将查询结果缓存为具有指定名称 (cache_table_identifier) 的新表。SELECT此命令创建一个名为 “cache_table_identifier” 的新表,其中仅包含状态为 “sourceTable” 的 “” 中的行active'。它运行查询,将结果存储在新表中,并缓存新表的内容。原来的 “sourceTable” 保持不变。后续查询必须引用 cache_table_identifier “” 才能使用缓存的数据。

CACHE TABLE cache_table_identifier AS ( SELECT * FROM sourceTable WHERE status = 'active' );

使用筛选条件缓存现有表

第三个示例演示如何使用不同的语法缓存现有表。此语法省略了 “AS” 关键字和圆括号,通常从名为 “cache_table_identifier” 的现有表中缓存指定行,而不是创建新表。该SELECT语句充当筛选器,用于确定要缓存哪些行。

注意

此语法的确切行为因数据库系统而异。请务必验证您的特定 AWS 服务的语法是否正确。

CACHE TABLE cache_table_identifier SELECT * FROM sourceTable WHERE status = 'active';