

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# TABELA DE CACHE
<a name="sql-commands-cache-table"></a>

O comando CACHE TABLE armazena em cache os dados de uma tabela existente ou cria e armazena em cache uma nova tabela contendo os resultados da consulta.

**nota**  
Os dados em cache persistem durante toda a consulta.

A sintaxe, os argumentos e alguns exemplos vêm da Referência SQL do [Apache Spark](https://spark.apache.org/docs/latest/api/sql/).

## Sintaxe
<a name="CACHE-TABLE-syntax"></a>

O comando CACHE TABLE suporta três padrões de sintaxe:

**Colunas de saída não permitidas, restrição de consulta e CACHE TABLE**  
A [restrição de colunas de saída não permitidas](https://docs.aws.amazon.com/clean-rooms/latest/userguide/disallowed-columns.html) na regra de análise personalizada é aplicada em tabelas em cache. Uma tabela em cache não pode referenciar uma coluna de saída não permitida em sua cláusula SELECT. Para usar uma coluna com uma restrição de coluna de saída não permitida em uma parte subsequente da consulta, converta a tabela em cache em uma expressão de tabela comum (CTE).

Com AS (sem parênteses): cria e armazena em cache uma nova tabela com base nos resultados da consulta. 

```
CACHE TABLE {{cache_table_identifier}} AS {{query}};
```

Com AS e parênteses: funciona de forma semelhante à primeira sintaxe, mas usa parênteses para agrupar explicitamente a consulta.

```
CACHE TABLE {{cache_table_identifier}} AS ( {{query}} );
```

Sem AS: armazena em cache uma tabela existente, usando a instrução SELECT para filtrar quais linhas devem ser armazenadas em cache. 

```
CACHE TABLE {{cache_table_identifier}} {{query}}; 
```

Em que:
+ Todas as declarações devem terminar com ponto e vírgula (;)
+ `query`normalmente é uma instrução SELECT
+ Os parênteses ao redor da consulta são opcionais com AS
+ A palavra-chave AS é opcional

## Parâmetros
<a name="CACHE-TABLE-parameters"></a>

 *identificador\_tabela\_cache*   
O nome da tabela em cache. Pode incluir um qualificador de nome de banco de dados opcional.

 *AS*   
Uma palavra-chave usada ao criar e armazenar em cache uma nova tabela a partir dos resultados da consulta.

*query*  
Uma instrução SELECT ou outra consulta que define os dados a serem armazenados em cache.

## Exemplos
<a name="CACHE-TABLE-examples"></a>

Nos exemplos a seguir, a tabela em cache persiste durante toda a consulta. Após o armazenamento em cache, as consultas subsequentes que fazem referência {{cache\_table\_identifier}} serão lidas da versão em cache em vez de serem recalculadas ou lidas. {{sourceTable}} Isso pode melhorar o desempenho da consulta para dados acessados com frequência. 

### Crie e armazene em cache uma tabela filtrada a partir dos resultados da consulta
<a name="create-cache-filterd-table"></a>

O primeiro exemplo demonstra como criar e armazenar em cache uma nova tabela a partir dos resultados da consulta. Esse comando usa a `AS` palavra-chave sem parênteses ao redor da declaração. `SELECT` Ele cria uma nova tabela chamada '`cache_table_identifier`' contendo somente as linhas de '`sourceTable`' onde o status é '`active'`. Ele executa a consulta, armazena os resultados na nova tabela e armazena em cache o conteúdo da nova tabela. O '`sourceTable`' original permanece inalterado e as consultas subsequentes devem fazer referência a '`cache_table_identifier`' para usar os dados em cache.

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

### Resultados da consulta em cache com instruções SELECT entre parênteses
<a name="cache-query-results"></a>

O segundo exemplo demonstra como armazenar em cache os resultados de uma consulta como uma nova tabela com um nome especificado (`cache_table_identifier`), usando parênteses ao redor da instrução. `SELECT` Esse comando cria uma nova tabela chamada '`cache_table_identifier`' contendo somente as linhas de '`sourceTable`' em que o status é '`active'`. Ele executa a consulta, armazena os resultados na nova tabela e armazena em cache o conteúdo da nova tabela. O '`sourceTable`' original permanece inalterado. As consultas subsequentes devem fazer referência a '`cache_table_identifier`' para usar os dados em cache.

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

### Armazene em cache uma tabela existente com condições de filtro
<a name="cache-existing-table"></a>

O terceiro exemplo demonstra como armazenar em cache uma tabela existente usando uma sintaxe diferente. Essa sintaxe, que omite a palavra-chave '`AS`' e os parênteses, normalmente armazena em cache as linhas especificadas de uma tabela existente chamada '`cache_table_identifier`' em vez de criar uma nova tabela. A `SELECT` instrução atua como um filtro para determinar quais linhas devem ser armazenadas em cache.

**nota**  
O comportamento exato dessa sintaxe varia entre os sistemas de banco de dados. Sempre verifique a sintaxe correta para seu AWS serviço específico.

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