

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Conceitos básicos do Amazon Redshift Spectrum
<a name="c-getting-started-using-spectrum"></a>

Neste tutorial, você aprenderá como usar o Amazon Redshift Spectrum para consultar dados diretamente dos arquivos no Amazon S3. Se você já tiver um cluster e um cliente SQL, poderá concluir este tutorial com configuração mínima. 

**nota**  
As consultas do Redshift Spectrum estão sujeitas a cobranças adicionais. O custo da execução de consultas de exemplo neste tutorial é nominal. Para obter mais informações sobre preços, consulte [Definição de preços do Amazon Redshift Spectrum](https://aws.amazon.com/redshift/pricing/#redshift-spectrum-pricing).

## Pré-requisitos
<a name="c-getting-started-using-spectrum-prerequisites"></a>

Para usar o Redshift Spectrum, é necessário um cluster do Amazon Redshift e um cliente SQL conectado ao cluster, de modo que você possa executar comandos de SQL. O cluster e os arquivos de dados do Amazon S3 devem estar localizados na mesma Região da AWS. 

Consulte informações sobre como criar um cluster do Amazon Redshift em [Clusters provisionados do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html) no *Guia de conceitos básicos do Amazon Redshift*. Para ter informações sobre formas de se conectar a um cluster, consulte [Connecting to Amazon Redshift data warehouses](https://docs.aws.amazon.com/redshift/latest/gsg/database-tasks.html) no *Guia de conceitos básicos do Amazon Redshift*.

Em alguns dos exemplos a seguir, os dados de exemplo estão na região Leste dos EUA (Norte da Virgínia) (`us-east-1`), então você precisa de um cluster que também esteja em `us-east-1`. Ou você pode usar o Amazon S3 para copiar objetos de dados dos seguintes buckets e pastas para o seu bucket na Região da AWS onde o cluster está localizado: 
+ `s3://redshift-downloads/tickit/spectrum/customers/*`
+ `s3://redshift-downloads/tickit/spectrum/sales_partition/*`
+ `s3://redshift-downloads/tickit/spectrum/sales/*`
+ `s3://redshift-downloads/tickit/spectrum/salesevent/*`

Execute um comando do Amazon S3 semelhante ao apresentado a seguir para copiar dados de exemplo localizados na região Leste dos EUA (Norte da Virgínia) para sua Região da AWS. Antes de executar o comando, crie o bucket e as pastas no bucket para que correspondam ao comando copy do Amazon S3. A saída do comando copy do Amazon S3 confirma que os arquivos são copiados para o *nome-do-bucket* na Região da AWS desejada.

```
aws s3 cp s3://redshift-downloads/tickit/spectrum/ s3://bucket-name/tickit/spectrum/ --copy-props none --recursive
```

## Conceitos básicos do Amazon Redshift Spectrum usando o AWS CloudFormation
<a name="c-getting-started-using-spectrum-cfn"></a>

Como alternativa às etapas a seguir, é possível acessar o template Redshift Spectrum DataLake AWS CloudFormation para criar uma pilha com um bucket do Amazon S3 que você pode consultar. Para obter mais informações, consulte [Iniciar a pilha do AWS CloudFormation e consultar seus dados no Amazon S3](#c-getting-started-using-spectrum-query-s3-data-cfn).

## Conceitos básicos detalhados do Amazon Redshift Spectrum
<a name="c-getting-started-using-spectrum-steps"></a>

Para começar a usar o Amazon Redshift Spectrum, siga as seguintes etapas:
+ [Etapa 1. Criar uma função do IAM para o Amazon Redshift](#c-getting-started-using-spectrum-create-role) 
+ [Etapa 2: Associar uma função do IAM ao cluster](#c-getting-started-using-spectrum-add-role) 
+ [Etapa 3: Criar um esquema e uma tabela externos](#c-getting-started-using-spectrum-create-external-table) 
+ [Etapa 4: Consultar os dados no Amazon S3](#c-getting-started-using-spectrum-query-s3-data) 

## Etapa 1. Criar uma função do IAM para o Amazon Redshift
<a name="c-getting-started-using-spectrum-create-role"></a>

O cluster precisa de autorização para acessar o catálogo de dados externo no AWS Glue ou no Amazon Athena e os arquivos de dados no Amazon S3. Para fornecer essa autorização, referencie a função do AWS Identity and Access Management (IAM) que é associada ao cluster. Para obter mais informações sobre como usar funções com o Amazon Redshift, consulte [Autorização das operações COPY e UNLOAD usando as funções do IAM](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html).

**nota**  
Em determinados casos, é possível migrar o catálogo de dados do Athena para um catálogo de dados do AWS Glue. Isso poderá ser feito se o cluster estiver em uma região da AWS compatível com o AWS Glue e se você tiver tabelas externas do Redshift Spectrum no catálogo de dados do Athena. Para usar o catálogo de dados do AWS Glue com o Redshift Spectrum, talvez seja necessário alterar as políticas do IAM. Para obter mais informações, consulte [Atualizar para o catálogo de dados do AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/glue-athena.html#glue-upgrade) no *Manual do usuário do Athena*.

Ao criar uma função para o Amazon Redshift, escolha uma das seguintes abordagens:
+ Se você estiver usando o Redshift Spectrum com um catálogo de dados do Athena ou um catálogo de dados do AWS Glue, siga as etapas descritas em [Para criar uma função do IAM para o Amazon Redshift](#spectrum-get-started-create-role). 
+ Se você estiver usando o Redshift Spectrum com um AWS Glue Data Catalog habilitado para AWS Lake Formation, siga as etapas descritas nestes procedimentos:
  +  [Para criar uma função do IAM para o Amazon Redshift usando um AWS Glue Data Catalog habilitado para o AWS Lake Formation](#spectrum-get-started-create-role-lake-formation) 
  +  [Para conceder permissões SELECT na tabela para consultar no banco de dados do Lake Formation](#spectrum-get-started-grant-lake-formation-table) <a name="spectrum-get-started-create-role"></a>

**Para criar uma função do IAM para o Amazon Redshift**

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/home?#home).

1. No painel de navegação, selecione **Roles**.

1. Escolha **Criar Perfil**.

1. Selecione **Serviço da AWS** como a entidade confiável e, depois, **Redshift** como caso de uso.

1. Em **Caso de uso para outros Serviços da AWS**, selecione **Redshift: personalizável** e **Próximo**.

1. A página **Add permissions policy** (Adicionar política de permissões) é exibida. Escolha `AmazonS3ReadOnlyAccess` e `AWSGlueConsoleFullAccess` se estiver usando o catálogo de dados do AWS Glue. Ou escolha `AmazonAthenaFullAccess` se estiver usando o catálogo de dados do Athena. Escolha **Próximo**.
**nota**  
A política `AmazonS3ReadOnlyAccess` concede ao seu cluster acesso somente leitura a todos os buckets do Amazon S3. Para conceder acesso apenas ao bucket de dados de amostra da AWS, crie uma nova política e adicione as permissões a seguir.  

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Resource": "arn:aws:s3:::redshift-downloads/*"
           }
       ]
   }
   ```

1. Para **Role name (Nome da função)**, digite um nome para sua função, por exemplo, **myspectrum\$1role**.

1. Revise as informações e escolha **Create role**.

1. No painel de navegação, selecione **Roles**. Escolha o nome de sua nova função para visualizar o resumo e copie o **Nome de recurso da Amazon (ARN) da função** em sua área de transferência. Esse valor é o nome de recurso da Amazon (ARN) para a função que você acaba de criar. Esse valor é usado quando tabelas externas são criadas para referenciar os arquivos de dados no Amazon S3.<a name="spectrum-get-started-create-role-lake-formation"></a>

**Para criar uma função do IAM para o Amazon Redshift usando um AWS Glue Data Catalog habilitado para o AWS Lake Formation**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Policies**.

   Se essa for a primeira vez que você escolhe **Políticas**, a página **Bem-vindo às políticas gerenciadas** será exibida. Escolha **Começar**.

1. Escolha **Criar política**. 

1. Opte por criar a política na guia **JSON**. 

1. Cole no documento de política JSON a seguir, que concede acesso ao catálogo de dados, mas nega as permissões de administrador para o Lake Formation.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "RedshiftPolicyForLF",
               "Effect": "Allow",
               "Action": [
                   "glue:*",
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Ao terminar, escolha **Review (Revisar)** para revisar a política. O validador de política indica se há qualquer erro de sintaxe.

1. Na página **Review policy (Revisar política)**, em **Name (Nome)**, insira **myspectrum\$1policy** para dar um nome à política que você está criando. Insira uma **Description (Descrição)** (opcional). Revise o **Resumo** da política para ver as permissões que são concedidas pela política. Em seguida, escolha **Criar política** para salvar seu trabalho.

   Depois de criar uma política, você pode conceder acesso aos usuários.

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
+ Usuários e grupos no Centro de Identidade do AWS IAM:

  Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.
+ Usuários gerenciados no IAM com provedor de identidades:

  Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
+ Usuários do IAM:
  + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
  + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.<a name="spectrum-get-started-grant-lake-formation-table"></a>

**Para conceder permissões SELECT na tabela para consultar no banco de dados do Lake Formation**

1. Abra o console do Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. No painel de navegação, escolha **Permissões do data lake** e **Conceder**.

1. Siga as instruções em [Concessão das permissões da tabela usando o nome do recurso nomeado](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-table-permissions.html) no *Guia do desenvolvedor do AWS Lake Formation*. Forneça as informações a seguir:
   + Para a **Função do IAM**, selecione a função do IAM criada, `myspectrum_role`. Ao executar o editor de consulta do Amazon Redshift, ele usa essa função do IAM para conceder permissão aos dados. 
**nota**  
Para conceder permissão SELECT na tabela em um catálogo de dados habilitado para o Lake Formation para consulta, faça o seguinte:  
Registre o caminho dos dados no Lake Formation. 
Conceda aos usuários permissão para esse caminho no Lake Formation. 
As tabelas criadas podem ser encontradas no caminho registrado no Lake Formation. 

1. Selecione **Conceder**.

**Importante**  
Como prática recomendada, permita o acesso somente aos objetos subjacentes do Amazon S3 por meio de permissões do Lake Formation. Para impedir o acesso não aprovado, remova qualquer permissão concedida aos objetos do Amazon S3 fora do Lake Formation. Se você já tiver acessado objetos do Amazon S3 antes de configurar o Lake Formation, remova políticas do IAM ou permissões de bucket que tenham sido configuradas anteriormente. Para obter mais informações, consulte [Atualizar permissões de dados do AWS Glue para o modelo do AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html) e [Permissões do Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/lake-formation-permissions.html). 

## Etapa 2: Associar uma função do IAM ao cluster
<a name="c-getting-started-using-spectrum-add-role"></a>

Agora, você tem uma função do IAM que autoriza o Amazon Redshift a acessar o catálogo de dados externo e o Amazon S3 para você. Nesse ponto, você deve associar essa função a seu cluster do Amazon Redshift.

**Para associar uma função do IAM a um cluster**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon Redshift em [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/).

1. No menu de navegação, escolha **Clusters** e o nome do cluster que deseja atualizar. 

1. Em **Actions (Ações)**, escolha **Manage IAM roles (Gerenciar funções do IAM)**. A página **IAM roles (Funções do IAM)** é exibida. 

1. Escolha **Enter ARN** (Digitar ARN) e insira um ARN ou um perfil do IAM ou escolha um perfil do IAM na lista. Depois, escolha **Add IAM role (Adicionar função do IAM)** para adicioná-la à lista **Attached IAM roles (Funções do IAM anexadas)**. 

1. Escolha **Done (Concluído)** para associar a função do IAM ao cluster. O cluster é modificado para concluir a alteração. 

## Etapa 3: Criar um esquema e uma tabela externos
<a name="c-getting-started-using-spectrum-create-external-table"></a>

Crie tabelas externas em um esquema externo. O esquema externo faz referência a um banco de dados no catálogo de dados externo e fornece o ARN da função do IAM que autoriza o cluster a acessar o Amazon S3 em seu nome. É possível criar um banco de dados externo em um catálogo de dados do Amazon Athena, no AWS Glue Data Catalog ou em uma metastore do Apache Hive, como o Amazon EMR. Neste exemplo, você cria o banco de dados externo em um catálogo de dados do Amazon Athena ao criar o esquema externo do Amazon Redshift. Para obter mais informações, consulte [Esquemas externos no Amazon Redshift Spectrum](c-spectrum-external-schemas.md). <a name="spectrum-get-started-create-external-table"></a>

**Para criar um esquema e uma tabela externos**

1. Para criar um esquema externo, substitua o nome de recurso da Amazon (ARN) da função do IAM no comando a seguir pelo ARN da função que você criou na [etapa 1](#c-getting-started-using-spectrum-create-role). Execute o comando no cliente SQL.

   ```
   create external schema myspectrum_schema 
   from data catalog 
   database 'myspectrum_db' 
   iam_role 'arn:aws:iam::123456789012:role/myspectrum_role'
   create external database if not exists;
   ```

1. Para criar uma tabela externa, execute o seguinte comando CREATE EXTERNAL TABLE.
**nota**  
O cluster e o bucket do Amazon S3 devem estar na mesma Região da AWS. Neste exemplo, o comando CREATE EXTERNAL TABLE, o bucket do Amazon S3 com os dados de exemplo está localizado na Região da AWS Leste dos EUA (Norte da Virgínia). Para ver os dados de origem, baixe o arquivo [https://s3.amazonaws.com/redshift-downloads/tickit/spectrum/sales/sales_ts.000](https://s3.amazonaws.com/redshift-downloads/tickit/spectrum/sales/sales_ts.000).   
Você pode modificar este exemplo para ser executado em umaRegião da AWS diferente. Crie um bucket do Amazon S3 na Região da AWS desejada. Copie os dados de vendas com um comando copy do Amazon S3. Depois, atualize a opção de local do bucket no comando `CREATE EXTERNAL TABLE` de exemplo.  

   ```
   aws s3 cp s3://redshift-downloads/tickit/spectrum/sales/ s3://bucket-name/tickit/spectrum/sales/ --copy-props none --recursive
   ```
A saída do comando copy do Amazon S3 confirma que o arquivo foi copiado para o *nome-do-bucket* na Região da AWS desejada.  

   ```
   copy: s3://redshift-downloads/tickit/spectrum/sales/sales_ts.000 to s3://bucket-name/tickit/spectrum/sales/sales_ts.000
   ```

   ```
   create external table myspectrum_schema.sales(
   salesid integer,
   listid integer,
   sellerid integer,
   buyerid integer,
   eventid integer,
   dateid smallint,
   qtysold smallint,
   pricepaid decimal(8,2),
   commission decimal(8,2),
   saletime timestamp)
   row format delimited
   fields terminated by '\t'
   stored as textfile
   location 's3://redshift-downloads/tickit/spectrum/sales/'
   table properties ('numRows'='172000');
   ```

## Etapa 4: Consultar os dados no Amazon S3
<a name="c-getting-started-using-spectrum-query-s3-data"></a>

Após criar as tabelas externas, você pode consultá-las usando as mesmas instruções SELECT usadas nas consultas de outras tabelas do Amazon Redshift. Essas consultas com instruções SELECT incluem junções de tabelas, agregação de dados e filtragem de predicados. <a name="spectrum-get-started-query-s3-data"></a>

**Para consultar os dados no Amazon S3**

1. Obtenha o número de linhas na tabela MYSPECTRUM\$1SCHEMA.SALES. 

   ```
   select count(*) from myspectrum_schema.sales;
   ```

   ```
   count 
   ------
   172462
   ```

1. Mantenha suas tabelas de fatos maiores no Amazon S3 e suas tabelas de dimensões menores no Amazon Redshift como prática recomendada. Se você tiver carregado os dados de exemplo apresentados em [Carregar dados de amostra](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html), já deverá ter uma tabela chamada EVENT no banco de dados. Caso contrário, crie a tabela EVENT usando o comando a seguir.

   ```
   create table event(
   eventid integer not null distkey,
   venueid smallint not null,
   catid smallint not null,
   dateid smallint not null sortkey,
   eventname varchar(200),
   starttime timestamp);
   ```

1. Carregue a tabela EVENT substituindo o ARN da função do IAM no comando COPY a seguir pelo ARN da função que você criou em [Etapa 1. Criar uma função do IAM para o Amazon Redshift](#c-getting-started-using-spectrum-create-role). Opcionalmente, você pode baixar e visualizar os [dados de origem para o `allevents_pipe.txt`](https://s3.amazonaws.com/redshift-downloads/tickit/allevents_pipe.txt) de um bucket do Amazon S3 na Região da AWS `us-east-1`.

   ```
   copy event from 's3://redshift-downloads/tickit/allevents_pipe.txt' 
   iam_role 'arn:aws:iam::123456789012:role/myspectrum_role'
   delimiter '|' timeformat 'YYYY-MM-DD HH:MI:SS' region 'us-east-1';
   ```

   O exemplo a seguir une a tabela externa MYSPECTRUM\$1SCHEMA.SALES do Amazon S3 com a tabela local EVENT do Amazon Redshift para encontrar o total de vendas para os dez eventos principais.

   ```
   select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event
   where myspectrum_schema.sales.eventid = event.eventid
   and myspectrum_schema.sales.pricepaid > 30
   group by myspectrum_schema.sales.eventid
   order by 2 desc;
   ```

   ```
   eventid | sum     
   --------+---------
       289 | 51846.00
      7895 | 51049.00
      1602 | 50301.00
       851 | 49956.00
      7315 | 49823.00
      6471 | 47997.00
      2118 | 47863.00
       984 | 46780.00
      7851 | 46661.00
      5638 | 46280.00
   ```

1. Visualize o plano da consulta para a consulta anterior. As etapas `S3 Seq Scan`, `S3 HashAggregate` e `S3 Query Scan` foram executadas com os dados do Amazon S3.

   ```
   explain
   select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) 
   from myspectrum_schema.sales, event
   where myspectrum_schema.sales.eventid = event.eventid
   and myspectrum_schema.sales.pricepaid > 30
   group by myspectrum_schema.sales.eventid
   order by 2 desc;
   ```

   ```
   QUERY PLAN                                                                                                                                                                                
   -----------------------------------------------------------------------------
   XN Limit  (cost=1001055770628.63..1001055770628.65 rows=10 width=31)                                                                                                                      
     ->  XN Merge  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                               
           Merge Key: sum(sales.derived_col2)                                                                                                                                                
           ->  XN Network  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                       
                 Send to leader                                                                                                                                                              
                 ->  XN Sort  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                    
                       Sort Key: sum(sales.derived_col2)                                                                                                                                     
                       ->  XN HashAggregate  (cost=1055770620.49..1055770620.99 rows=200 width=31)                                                                                           
                             ->  XN Hash Join DS_BCAST_INNER  (cost=3119.97..1055769620.49 rows=200000 width=31)                                                                             
                                   Hash Cond: ("outer".derived_col1 = "inner".eventid)                                                                                                       
                                   ->  XN S3 Query Scan sales  (cost=3010.00..5010.50 rows=200000 width=31)                                                                                  
                                         ->  S3 HashAggregate  (cost=3010.00..3010.50 rows=200000 width=16)                                                                                  
                                               ->  S3 Seq Scan myspectrum_schema.sales location:"s3://redshift-downloads/tickit/spectrum/sales" format:TEXT  (cost=0.00..2150.00 rows=172000 width=16)
                                                     Filter: (pricepaid > 30.00)                                                                                                             
                                   ->  XN Hash  (cost=87.98..87.98 rows=8798 width=4)                                                                                                        
                                         ->  XN Seq Scan on event  (cost=0.00..87.98 rows=8798 width=4)
   ```

## Iniciar a pilha do AWS CloudFormation e consultar seus dados no Amazon S3
<a name="c-getting-started-using-spectrum-query-s3-data-cfn"></a>

Depois de criar um cluster do Amazon Redshift e se conectar ao cluster, você pode instalar o template do AWS CloudFormation Redshift Spectrum DataLake e consultar seus dados.

O CloudFormation instala o modelo Redshift Spectrum Getting Started DataLake e cria uma pilha contendo: 
+ Uma função chamada `myspectrum_role` associada ao cluster do Redshift
+ Um esquema externo chamado `myspectrum_schema`
+ Uma tabela externa chamada `sales` em um bucket do Amazon S3
+ Uma tabela do Redshift chamada `event` carregada com dados

**Para iniciar sua pilha Redshift Spectrum Getting Started DataLake CloudFormation**

1. Selecione [https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=DataLake&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataLake.yml](https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=DataLake&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataLake.yml) (Iniciar pilha do CFN). O console do CloudFormation abrirá com o modelo Datalake.yml selecionado.

   Você também pode baixar e personalizar o [modelo do CFN](https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataLake.yml), depois abrir o console do CloudFormation ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) e criar uma pilha com o modelo personalizado. 

1. Escolha **Próximo**.

1. Em **Parameters** (Parâmetros), digite o nome do cluster do Amazon Redshift, o nome do banco de dados e o nome de usuário do banco de dados.

1. Escolha **Próximo**.

   São exibidas as opções de pilha.

1. Selecione **Next** (Próximo) para aceitar as configurações padrão.

1. Revise as informações e, em **Recursos**, selecione **Estou ciente de que o AWS CloudFormation pode criar recursos do IAM**.

1. Selecione **Criar pilha**.

Se ocorrer um erro durante a criação da pilha, consulte estas informações:
+ Acesse a guia **Events** (Eventos) do CloudFormation para obter informações que podem ajudar você a solucionar o erro.
+ Exclua a pilha do DataLake CloudFormation antes de tentar a realizar a operação novamente.
+ Verifique se você está conectado ao banco de dados do Amazon Redshift.
+ Verifique se inseriu as informações corretas do nome do cluster, nome do banco de dados e nome de usuário do banco de dados do Amazon Redshift.

### Consultar seus dados no Amazon S3
<a name="c-getting-started-spectrum-cfn-query-s3-data"></a>

Consulte tabelas externas usando as mesmas instruções SELECT usadas nas consultas de outras tabelas do Amazon Redshift. Essas consultas com instruções SELECT incluem junções de tabelas, agregação de dados e filtragem de predicados. 

A consulta a seguir retorna o número de linhas na tabela externa `myspectrum_schema.sales`. 

```
select count(*) from myspectrum_schema.sales;
```

```
count 
------
172462
```

### Unir uma tabela externa com uma tabela local
<a name="c-getting-started-spectrum-cfn-table-join"></a>

O exemplo a seguir une a tabela externa `myspectrum_schema.sales` e a tabela local `event` para encontrar as vendas totais para os 10 eventos principais.

```
select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event
where myspectrum_schema.sales.eventid = event.eventid
and myspectrum_schema.sales.pricepaid > 30
group by myspectrum_schema.sales.eventid
order by 2 desc;
```

```
eventid | sum     
--------+---------
    289 | 51846.00
   7895 | 51049.00
   1602 | 50301.00
    851 | 49956.00
   7315 | 49823.00
   6471 | 47997.00
   2118 | 47863.00
    984 | 46780.00
   7851 | 46661.00
   5638 | 46280.00
```

### Visualizar o plano de consulta
<a name="c-getting-started-spectrum-cfn-query-plan"></a>

Visualize o plano da consulta para a consulta anterior. Observe que as etapas `S3 Seq Scan`, `S3 HashAggregate` e `S3 Query Scan` foram executadas com os dados do Amazon S3.

```
explain
select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) 
from myspectrum_schema.sales, event
where myspectrum_schema.sales.eventid = event.eventid
and myspectrum_schema.sales.pricepaid > 30
group by myspectrum_schema.sales.eventid
order by 2 desc;
```

```
QUERY PLAN                                                                                                                                                                                
-----------------------------------------------------------------------------
XN Limit  (cost=1001055770628.63..1001055770628.65 rows=10 width=31)                                                                                                                      
  ->  XN Merge  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                               
        Merge Key: sum(sales.derived_col2)                                                                                                                                                
        ->  XN Network  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                       
              Send to leader                                                                                                                                                              
              ->  XN Sort  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                    
                    Sort Key: sum(sales.derived_col2)                                                                                                                                     
                    ->  XN HashAggregate  (cost=1055770620.49..1055770620.99 rows=200 width=31)                                                                                           
                          ->  XN Hash Join DS_BCAST_INNER  (cost=3119.97..1055769620.49 rows=200000 width=31)                                                                             
                                Hash Cond: ("outer".derived_col1 = "inner".eventid)                                                                                                       
                                ->  XN S3 Query Scan sales  (cost=3010.00..5010.50 rows=200000 width=31)                                                                                  
                                      ->  S3 HashAggregate  (cost=3010.00..3010.50 rows=200000 width=16)                                                                                  
                                            ->  S3 Seq Scan spectrum.sales location:"s3://redshift-downloads/tickit/spectrum/sales" format:TEXT  (cost=0.00..2150.00 rows=172000 width=16)
                                                  Filter: (pricepaid > 30.00)                                                                                                             
                                ->  XN Hash  (cost=87.98..87.98 rows=8798 width=4)                                                                                                        
                                      ->  XN Seq Scan on event  (cost=0.00..87.98 rows=8798 width=4)
```