

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Introducción a Amazon Redshift Spectrum
<a name="c-getting-started-using-spectrum"></a>

En este tutorial, aprenderá a utilizar Amazon Redshift Spectrum para consultar datos directamente en los archivos de Amazon S3. Si ya tiene un clúster y un cliente SQL, puede completar este tutorial con la configuración mínima. 

**nota**  
Las consultas de Redshift Spectrum ocasionan cargos adicionales. El costo de ejecución de las consultas de muestra en este tutorial es nominal. Para obtener más información acerca de los precios, consulte [Precios de Amazon Redshift Spectrum](https://aws.amazon.com/redshift/pricing/#redshift-spectrum-pricing).

## Requisitos previos
<a name="c-getting-started-using-spectrum-prerequisites"></a>

Para usar Redshift Spectrum, necesita un clúster de Amazon Redshift y un cliente SQL que se conecte al clúster, de modo que pueda ejecutar comandos SQL. El clúster y los archivos de datos de Amazon S3 deben estar en la misma Región de AWS. 

Para obtener más información sobre cómo crear un clúster de Amazon Redshift, consulte [Introducción a los almacenamientos de datos aprovisionados de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html) en la *Guía de introducción a Amazon Redshift*. Para obtener información sobre las formas de conectarse a un clúster, consulte [Conexión a los almacenamientos de datos de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/database-tasks.html) en la *Guía de introducción a Amazon Redshift*.

En algunos de los ejemplos siguientes, los datos de muestra se encuentran en la región Este de EE. UU. (Norte de Virginia) (`us-east-1`), por lo que necesita un clúster que también esté en `us-east-1`. O bien, puede usar Amazon S3 para copiar objetos de datos desde los siguientes buckets y carpetas en su bucket en el Región de AWS donde se encuentra el clúster: 
+ `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/*`

Ejecute un comando de Amazon S3 similar al siguiente para copiar los datos de muestra que se encuentran en el Este de EE. UU. (Norte de Virginia) en su Región de AWS. Antes de ejecutar el comando, cree el bucket y las carpetas del bucket para que coincidan con el comando copy de Amazon S3. El resultado del comando copy de Amazon S3 confirma que los archivos se han copiado en el *nombre-bucket* de la Región de AWS que desea.

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

## Introducción a Redshift Spectrum con AWS CloudFormation
<a name="c-getting-started-using-spectrum-cfn"></a>

Como alternativa a los siguientes pasos, puede acceder a la plantilla DataLake de AWS CloudFormation de Redshift Spectrum para crear una pila con un bucket de Amazon S3 en la que luego pueda realizar consultas. Para obtener más información, consulte [Lanzamiento de su pila de AWS CloudFormation y, a continuación, consulta de sus datos en Amazon S3](#c-getting-started-using-spectrum-query-s3-data-cfn).

## Introducción paso a paso a Redshift Spectrum
<a name="c-getting-started-using-spectrum-steps"></a>

Para empezar a usar Amazon Redshift Spectrum, siga los pasos que se indican a continuación:
+ [Paso 1. Crear un rol de IAM para Amazon Redshift](#c-getting-started-using-spectrum-create-role) 
+ [Paso 2: Asociar el rol de IAM a su clúster](#c-getting-started-using-spectrum-add-role) 
+ [Paso 3: Crear un esquema externo y una tabla externa](#c-getting-started-using-spectrum-create-external-table) 
+ [Paso 4: Consultar sus datos en Amazon S3](#c-getting-started-using-spectrum-query-s3-data) 

## Paso 1. Crear un rol de IAM para Amazon Redshift
<a name="c-getting-started-using-spectrum-create-role"></a>

El clúster necesita autorización para obtener acceso al catálogo de datos externo de AWS Glue o Amazon Athena, y a los archivos de datos de Amazon S3. Para proporcionar esa autorización, se referencia un rol de AWS Identity and Access Management (IAM) que se adjunta a su clúster. Para obtener más información acerca del uso de roles con Amazon Redshift, consulte [Autorización de uso de las operaciones COPY y UNLOAD mediante roles de IAM](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html).

**nota**  
En ciertos casos, puede migrar su catálogo de datos de Athena a un catálogo de datos de AWS Glue. Puede hacer esto si su clúster está en una región de AWS donde se admite AWS Glue y tiene tablas externas de Redshift Spectrum en el catálogo de datos de Athena. Para usar el catálogo de datos de AWS Glue con Redshift Spectrum, es posible que tenga que cambiar las políticas de IAM. Para obtener más información, consulte [Actualización al catálogo de datos de AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/glue-athena.html#glue-upgrade) en la *Guía del usuario de Athena*.

Cuando cree un rol para Amazon Redshift, elija uno de los siguientes enfoques:
+ Si está utilizando Redshift Spectrum con un catálogo de datos de Athena o un catálogo de datos de AWS Glue, siga los pasos descritos en [Para crear un rol de IAM para Amazon Redshift](#spectrum-get-started-create-role). 
+ Si está utilizando Redshift Spectrum con un AWS Glue Data Catalog que está habilitado para AWS Lake Formation, siga los pasos descritos en estos procedimientos:
  +  [Para crear un rol de IAM para Amazon Redshift mediante un AWS Glue Data Catalog habilitado para AWS Lake Formation](#spectrum-get-started-create-role-lake-formation) 
  +  [Para otorgar permisos SELECT en la tabla para realizar consultas en la base de datos de Lake Formation](#spectrum-get-started-grant-lake-formation-table) <a name="spectrum-get-started-create-role"></a>

**Para crear un rol de IAM para Amazon Redshift**

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/home?#home).

1. Seleccione **Roles** en el panel de navegación.

1. Elija **Create role** (Crear rol).

1. Elija **Servicio de AWS** como entidad de confianza y, a continuación, elija **Redshift** como caso de uso.

1. En **Caso de uso para otros Servicios de AWS**, elija **Redshift - Personalizable** y, a continuación, elija **Siguiente**.

1. Aparece la página **Add permissions policy** (Agregar política de permisos). Elija `AmazonS3ReadOnlyAccess` y `AWSGlueConsoleFullAccess`, si está utilizando el catálogo de datos AWS Glue. O bien, elija `AmazonAthenaFullAccess` si está utilizando el catálogo de datos de Athena. Elija **Next** (Siguiente).
**nota**  
La política `AmazonS3ReadOnlyAccess` proporciona al clúster acceso de solo lectura a todos los buckets de Amazon S3. Para conceder acceso solo al bucket de datos de muestra de AWS, cree una política nueva y agregue los siguientes permisos.  

****  

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

1. En **Role Name (Nombre de la función)**, escriba un nombre para la función; por ejemplo, **myspectrum\$1role**.

1. Revise la información y seleccione **Create role** (Crear función).

1. Seleccione **Roles** en el panel de navegación. Elija el nombre de la nueva función para ver el resumen y copie el **ARN de función** en el portapapeles. Esta valor es el nombre de recurso de Amazon (ARN) de la función que acaba de crear. Usa ese valor cuando crea tablas externas para referenciar sus archivos de datos en Amazon S3.<a name="spectrum-get-started-create-role-lake-formation"></a>

**Para crear un rol de IAM para Amazon Redshift mediante un AWS Glue Data Catalog habilitado para AWS Lake Formation**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Policies** (Políticas).

   Si es la primera vez que elige **Policies** (Políticas), aparecerá la página **Welcome to Managed Policies** (Bienvenido a políticas administradas). Elija **Get Started** (Comenzar).

1. Elija **Create Policy** (Crear política). 

1. Elija crear la política en la pestaña **JSON**. 

1. Pegue el siguiente documento de política JSON, el cual concede acceso al catálogo de datos, pero deniega el permiso de administrador para Lake Formation.

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

****  

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

------

1. Cuando haya terminado, seleccione **Review** (Revisar) para revisar la política. El validador de políticas notifica los errores de sintaxis.

1. En la página **Review policy** (Revisar política), en el campo **Name** (Nombre), ingrese **myspectrum\$1policy** para asignarle un nombre a la política que está creando. (Opcional) Introduzca una **descripción**. Revise el **Summary** (Resumen) de la política para ver los permisos concedidos por su política. A continuación, elija **Create policy** (Crear política) para guardar su trabajo.

   Después de crear una política, puede proporcionar acceso a los clientes.

Para dar acceso, agregue permisos a los usuarios, grupos o roles:
+ Usuarios y grupos en AWS IAM Identity Center:

  Cree un conjunto de permisos. Siga las instrucciones de [Creación de un conjunto de permisos](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) en la *Guía del usuario de AWS IAM Identity Center*.
+ Usuarios gestionados en IAM a través de un proveedor de identidades:

  Cree un rol para la federación de identidades. Siga las instrucciones descritas en [Creación de un rol para un proveedor de identidad de terceros (federación)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) en la *Guía del usuario de IAM*.
+ Usuarios de IAM:
  + Cree un rol que el usuario pueda aceptar. Siga las instrucciones descritas en [Creación de un rol para un usuario de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) en la *Guía del usuario de IAM*.
  + (No recomendado) Adjunte una política directamente a un usuario o agregue un usuario a un grupo de usuarios. Siga las instrucciones descritas en [Adición de permisos a un usuario (consola)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) de la *Guía del usuario de IAM*.<a name="spectrum-get-started-grant-lake-formation-table"></a>

**Para otorgar permisos SELECT en la tabla para realizar consultas en la base de datos de Lake Formation**

1. Abra la consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En el panel de navegación, elija **Permisos de lago de datos** y, a continuación, elija **Otorgar**.

1. Siga las instrucciones de [Otorgar permisos de tabla mediante el método de recurso designado](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-table-permissions.html) de la *Guía para desarrolladores de AWS Lake Formation*. Proporcione la información siguiente:
   + En **IAM role** (Rol de IAM), elija el rol de IAM que creó, `myspectrum_role`. Cuando se ejecuta el editor de consultas de Amazon Redshift, este utiliza el rol de IAM para dar permiso a los datos. 
**nota**  
Si desea otorgar permisos SELECT en la tabla de un catálogo de datos habilitado para Lake Formation para realizar consultas, haga lo siguiente:  
Registre la ruta para los datos en Lake Formation. 
Otorgue a los usuarios permisos para la ruta en Lake Formation. 
Las tablas creadas se pueden encontrar en la ruta registrada en Lake Formation. 

1. Elija **Conceder**.

**importante**  
Como práctica recomendada, permita el acceso únicamente a los objetos de Amazon S3 subyacentes a través de permisos de Lake Formation. Para evitar accesos no aprobados, quite cualquier permiso que haya otorgado a los objetos de Amazon S3 fuera de Lake Formation. Si ya ha accedido a objetos de Amazon S3 antes de configurar Lake Formation, quite las políticas de IAM o los permisos de los buckets que se hayan configurado con anterioridad. Para obtener más información, consulte [Actualización de permisos de datos de AWS Glue en el modelo de AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html) y [Permisos de Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/lake-formation-permissions.html). 

## Paso 2: Asociar el rol de IAM a su clúster
<a name="c-getting-started-using-spectrum-add-role"></a>

Ahora, dispone de un rol de IAM que autoriza a Amazon Redshift a acceder al catálogo de datos externo y a Amazon S3 por usted. A esta altura, debe asociar ese rol a su clúster de Amazon Redshift.

**Asociar un rol de IAM con un clúster**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon Redshift en [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/).

1. En el menú de navegación, elija **Clusters** (Clústeres) y, a continuación, elija el nombre del clúster que desea actualizar. 

1. En **Actions** (Acciones), seleccione **Manage IAM roles** (Administrar funciones de IAM). Aparece la página **IAM roles** (Roles de IAM). 

1. Seleccione **Enter ARN** (Introducir ARN) e introduzca un ARN o un rol de IAM o seleccione un rol de IAM de la lista. Luego elija **Add IAM role (Agregar un rol de IAM)** para agregarlo a la lista de **Attached IAM roles (Roles de IAM agregados)**. 

1. Seleccione **Done** (Hecho) para asociar el rol de IAM al clúster. El clúster se modifica para completar el cambio. 

## Paso 3: Crear un esquema externo y una tabla externa
<a name="c-getting-started-using-spectrum-create-external-table"></a>

Crear tablas externas en un esquema externo. El esquema externo referencia una base de datos en el catálogo de datos externo y proporciona el ARN del rol de IAM que autoriza a su clúster a obtener acceso a Amazon S3 en su nombre. Puede crear una base de datos externa en un catálogo de datos de Amazon Athena, AWS Glue Data Catalog, o un metastore de Apache Hive, como Amazon EMR. En este ejemplo, crea la base de datos externa en un catálogo de datos de Amazon Athena cuando crea el esquema externo de Amazon Redshift. Para obtener más información, consulte [Esquemas externos en Amazon Redshift Spectrum](c-spectrum-external-schemas.md). <a name="spectrum-get-started-create-external-table"></a>

**Pasos para crear un esquema externo y una tabla externa**

1. Para crear un esquema externo, reemplace el ARN de la función de IAM en el siguiente comando por el ARN de la función que creó en el [Paso 1](#c-getting-started-using-spectrum-create-role). Luego, ejecute el comando en 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 crear una tabla externa, ejecute el siguiente comando CREATE EXTERNAL TABLE.
**nota**  
Su clúster y el bucket de Amazon S3 deben estar en el mismo Región de AWS. Para este ejemplo de comando CREATE EXTERNAL TABLE, el bucket de Amazon S3 con los datos de muestra se encuentra en la Región de AWS Este de EE. UU. (Norte de Virginia). Para ver los datos de origen, descargue el [archivo `sales_ts.000`](https://s3.amazonaws.com/redshift-downloads/tickit/spectrum/sales/sales_ts.000).   
Puede modificar este ejemplo para que se ejecute en otra Región de AWS. Cree un bucket de Amazon S3 en la Región de AWS que desee. Cree los datos de ventas con un comando copy de Amazon S3. A continuación, actualice la opción de ubicación en el comando `CREATE EXTERNAL TABLE` de ejemplo para su bucket.  

   ```
   aws s3 cp s3://redshift-downloads/tickit/spectrum/sales/ s3://bucket-name/tickit/spectrum/sales/ --copy-props none --recursive
   ```
El resultado del comando copy de Amazon S3 confirma que el archivo se ha copiado en el *nombre-bucket* de la Región de AWS que desea.  

   ```
   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');
   ```

## Paso 4: Consultar sus datos en Amazon S3
<a name="c-getting-started-using-spectrum-query-s3-data"></a>

Una vez creadas las tablas externas, puede consultarlas con las mismas instrucciones SELECT que usa para consultar otras tablas de Amazon Redshift. Estas consultas de la instrucción SELECT incluyen tablas combinadas, datos de agregación y filtrado de predicados. <a name="spectrum-get-started-query-s3-data"></a>

**Para consultar los datos en Amazon S3**

1. Obtenga la cantidad de filas en la tabla MYSPECTRUM\$1SCHEMA.SALES. 

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

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

1. Como práctica recomendada, es conveniente que guarde las tablas de hechos más grandes en Amazon S3 y las tablas de dimensiones más pequeñas en Amazon Redshift. Si cargó los datos de muestra en [Cargar datos](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html), tendrá una tabla llamada EVENT en la base de datos. Si no es así, cree la tabla EVENT utilizando el siguiente comando.

   ```
   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. Cargue la tabla EVENT reemplazando el ARN del rol de IAM en el siguiente comando COPY por el ARN del rol que creó en [Paso 1. Crear un rol de IAM para Amazon Redshift](#c-getting-started-using-spectrum-create-role). Si lo desea, puede descargar y ver los [ datos de origen para `allevents_pipe.txt`](https://s3.amazonaws.com/redshift-downloads/tickit/allevents_pipe.txt)desde un bucket de Amazon S3 en la Región de 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';
   ```

   En el siguiente ejemplo, se combina la tabla externa de Amazon S3 MYSPECTRUM\$1SCHEMA.SALES con la tabla local de Amazon Redshift EVENT para obtener el total de ventas de los 10 principales eventos.

   ```
   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. Vea el plan de consulta de la consulta anterior. Observe los pasos `S3 Seq Scan`, `S3 HashAggregate` y `S3 Query Scan` que se ejecutaron sobre los datos de 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)
   ```

## Lanzamiento de su pila de AWS CloudFormation y, a continuación, consulta de sus datos en Amazon S3
<a name="c-getting-started-using-spectrum-query-s3-data-cfn"></a>

Una vez que haya creado un clúster de Amazon Redshift y se haya conectado a él, podrá instalar su plantilla DataLake de AWS CloudFormation de Redshift Spectrum y, a continuación, consultar sus datos.

CloudFormation instala la plantilla DataLake de Introducción a Redshift Spectrum y crea una pila que comprende lo siguiente: 
+ un rol denominado `myspectrum_role` asociado a su clúster de Redshift
+ un esquema externo denominado `myspectrum_schema`
+ una tabla externa denominada `sales` en un bucket de Amazon S3
+ una tabla de Redshift denominada `event` con datos cargados

**Para lanzar la pila DataLake de CloudFormation de Introducción a Redshift Spectrum.**

1. Elija [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) (Lanzar pila de CFN). La consola de CloudFormation se abre con la plantilla Datalake.yml seleccionada.

   También puede descargar y personalizar la [plantilla CFN](https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataLake.yml) de introducción a DataLake CloudFormation de Redshift Spectrum y, después, abrir la consola de CloudFormation ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) y crear una pila con la plantilla personalizada. 

1. Elija **Siguiente**.

1. En la opción **Parameters** (Parámetros), ingrese el nombre del clúster de Amazon Redshift, el nombre de la base de datos y su correspondiente nombre de usuario.

1. Elija **Next** (Siguiente).

   Aparecerán las opciones de la pila.

1. Elija **Next** (Siguiente) para aceptar la configuración predeterminada.

1. Revise la información y, en la opción **Capabilities** (Capacidades), elija **I acknowledge that AWS CloudFormation might create IAM resources** (Acepto que CFN podría crear recursos de IAM).

1. Seleccione **Creación de pila**.

Si se produce un error durante la creación de la pila, consulte la siguiente información:
+ Consulte la pestaña **Events** (Eventos) de CloudFormation para obtener información que pueda serle de utilidad para resolver el error.
+ Elimine la pila DataLake de CloudFormation antes de reintentar la operación.
+ Asegúrese de que se ha conectado a su base de datos de Amazon Redshift.
+ Asegúrese de que ingresó la información adecuada relativa al nombre del clúster de Amazon Redshift, el nombre de la base de datos y su correspondiente nombre de usuario.

### Consulta de los datos en Amazon S3
<a name="c-getting-started-spectrum-cfn-query-s3-data"></a>

Las tablas externas se consultan con las mismas instrucciones SELECT que se utilizan para hacerlo con otras tablas de Amazon Redshift. Estas consultas de la instrucción SELECT incluyen tablas combinadas, datos de agregación y filtrado de predicados. 

La siguiente consulta devuelve la cantidad de filas de la tabla externa `myspectrum_schema.sales`. 

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

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

### Combinación de una tabla externa con una tabla local
<a name="c-getting-started-spectrum-cfn-table-join"></a>

En el siguiente ejemplo, se combina la tabla externa `myspectrum_schema.sales` con la tabla local `event` para obtener el total de ventas de los 10 eventos principales.

```
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
```

### Visualización del plan de consulta
<a name="c-getting-started-spectrum-cfn-query-plan"></a>

Vea el plan de consulta de la consulta anterior. Tenga en cuenta los pasos `S3 Seq Scan`, `S3 HashAggregate` y `S3 Query Scan` que se ejecutaron sobre los datos de 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)
```