

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Mise en route avec Amazon Redshift Spectrum
<a name="c-getting-started-using-spectrum"></a>

Dans ce tutoriel, vous apprenez à utiliser Amazon Redshift Spectrum pour interroger des données directement à partir de fichiers sur Amazon S3. Si vous disposez déjà d’un cluster et d’un client SQL, vous pouvez effectuer ce tutoriel avec un effort de configuration minimal. 

**Note**  
Les requêtes Redshift Spectrum engendrent des frais supplémentaires. Le coût inhérent à l’exécution des exemples de requêtes de ce tutoriel est minime. Pour plus d’informations sur la tarification, consultez [Tarification Amazon Redshift Spectrum](https://aws.amazon.com/redshift/pricing/#redshift-spectrum-pricing).

## Conditions préalables
<a name="c-getting-started-using-spectrum-prerequisites"></a>

Pour utiliser Redshift Spectrum, vous avez besoin d’un cluster Amazon Redshift et d’un client SQL qui est connecté à votre cluster afin que vous puissiez exécuter des commandes SQL. Le cluster et les fichiers de données dans Amazon S3 doivent se trouver dans la même Région AWS. 

Pour plus d’informations sur la création et la configuration des clusters Amazon Redshift, consultez [Commencer avec les entrepôts de données alloués Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html) dans le *Guide de démarrage Amazon Redshift*. Pour connaître les différentes méthodes de connexion à un cluster, consultez [Connexion aux entrepôts de données Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/database-tasks.html) dans le *Guide de démarrage Amazon Redshift*.

Dans certains des exemples qui suivent, les données d’exemple se trouvent dans la région USA Est (Virginie du Nord) (`us-east-1`) et vous avez donc besoin d’un cluster qui figure également dans `us-east-1`. Vous pouvez également utiliser Amazon S3 pour copier des objets de données depuis les compartiments et dossiers suivants vers votre compartiment Région AWS où se trouve votre cluster : 
+ `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/*`

Exécutez une commande Amazon S3 similaire à la suivante pour copier les données d’exemple situées dans la région USA Est (Virginie du Nord) vers votre Région AWS. Avant d’exécuter cette commande, créez votre compartiment et vos dossiers dans votre compartiment pour qu’ils correspondent à votre commande de copie Amazon S3. La sortie de la commande de copie Amazon S3 confirme que les fichiers sont copiés *bucket-name* dans le fichier de votre choix Région AWS.

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

## Commencer à utiliser Redshift Spectrum en utilisant AWS CloudFormation
<a name="c-getting-started-using-spectrum-cfn"></a>

Comme alternative aux étapes suivantes, vous pouvez accéder au DataLake AWS CloudFormation modèle Redshift Spectrum pour créer une pile avec un compartiment Amazon S3 que vous pouvez interroger. Pour de plus amples informations, veuillez consulter [Lancez votre AWS CloudFormation stack, puis interrogez vos données dans Amazon S3](#c-getting-started-using-spectrum-query-s3-data-cfn).

## Mise en route avec Amazon Redshift Spectrum étape par étape
<a name="c-getting-started-using-spectrum-steps"></a>

Suivez ces étapes pour commencer à utiliser Amazon Redshift Spectrum :
+ [Étape 1. Créer un rôle IAM pour Amazon Redshift](#c-getting-started-using-spectrum-create-role) 
+ [Étape 2 : Association du rôle IAM au cluster](#c-getting-started-using-spectrum-add-role) 
+ [Étape 3 : Création d’un schéma externe et d’une table externe](#c-getting-started-using-spectrum-create-external-table) 
+ [Étape 4 : Interrogation de vos données dans Amazon S3](#c-getting-started-using-spectrum-query-s3-data) 

## Étape 1. Créer un rôle IAM pour Amazon Redshift
<a name="c-getting-started-using-spectrum-create-role"></a>

Votre cluster a besoin d'une autorisation pour accéder à votre catalogue de données externe dans AWS Glue Amazon Athena et à vos fichiers de données dans Amazon S3. Pour fournir cette autorisation, vous référencez un rôle Gestion des identités et des accès AWS (IAM) qui est attaché à votre cluster. Pour plus d’informations sur l’utilisation des rôles avec Amazon Redshift, consultez [Autoriser les opérations de COPY et UNLOAD à l’aide des rôles IAM](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html).

**Note**  
Dans certains cas, vous pouvez migrer votre catalogue de données Athena vers un catalogue de AWS Glue données. Vous pouvez le faire si votre cluster se trouve dans une AWS région prise en charge et si le catalogue de données Athena contient des tables externes Redshift Spectrum. AWS Glue Pour utiliser le catalogue de AWS Glue données avec Redshift Spectrum, vous devrez peut-être modifier vos politiques IAM. Pour plus d’informations, consultez [Mise à niveau vers le catalogue de données AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/glue-athena.html#glue-upgrade) dans le *Guide de l’utilisateur Athena*.

Lorsque vous créez un rôle pour Amazon Redshift, choisissez une des approches suivantes :
+ Si vous utilisez Redshift Spectrum avec un catalogue de données Athena ou AWS Glue un catalogue de données, suivez les étapes décrites dans. [Pour créer un rôle IAM pour Amazon Redshift](#spectrum-get-started-create-role) 
+ Si vous utilisez Redshift Spectrum avec un AWS Glue Data Catalog qui est activé pour AWS Lake Formation, suivez les étapes décrites dans les procédures suivantes :
  +  [Pour créer un rôle IAM pour Amazon Redshift à l'aide d'un AWS Glue Data Catalog AWS Lake Formation](#spectrum-get-started-create-role-lake-formation) 
  +  [Pour accorder des droits SELECT sur la table à interroger dans la base de données Lake Formation](#spectrum-get-started-grant-lake-formation-table) <a name="spectrum-get-started-create-role"></a>

**Pour créer un rôle IAM pour Amazon Redshift**

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

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Sélectionnez **Create role** (Créer un rôle).

1. Choisissez **Service AWS ** comme entité de confiance, puis choisissez **Redshift** comme cas d’utilisation.

1. **Sous **Cas d'utilisation pour les autres Services AWS**, choisissez **Redshift - Personnalisable**, puis cliquez sur Suivant.**

1. La page **Add permissions policy** (Ajouter une politique d’autorisations) s’affiche. Choisissez `AmazonS3ReadOnlyAccess` et`AWSGlueConsoleFullAccess`, si vous utilisez le catalogue AWS Glue de données. Ou choisissez `AmazonAthenaFullAccess` si vous utilisez le catalogue de données Athena. Choisissez **Suivant**.
**Note**  
La politique `AmazonS3ReadOnlyAccess` accorde à votre cluster un accès en lecture seule à tous les compartiments Amazon S3. Pour accorder l'accès uniquement à l' AWS exemple de compartiment de données, créez une nouvelle politique et ajoutez les autorisations suivantes.  

****  

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

1. Pour **Nom du rôle**, indiquez le nom de votre rôle, par exemple **myspectrum\$1role**.

1. Passez en revue les informations, puis choisissez **Créer un rôle**.

1. Dans le panneau de navigation, choisissez **Rôles**. Choisissez le nom de votre nouveau rôle pour afficher le récapitulatif, puis copiez l’**ARN de rôle** dans le presse-papiers. Il s’agit de l’ARN (Amazon Resource Name) du rôle que vous venez de créer. Vous utilisez cette valeur lorsque vous créez des tables externes pour référencer vos fichiers de données sur Amazon S3.<a name="spectrum-get-started-create-role-lake-formation"></a>

**Pour créer un rôle IAM pour Amazon Redshift à l'aide d'un AWS Glue Data Catalog AWS Lake Formation**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Politiques**.

   Si vous sélectionnez **Politiques** pour la première fois, la page **Bienvenue dans les politiques gérées** s’affiche. Sélectionnez **Get started (Mise en route)**.

1. Choisissez **Create Policy** (Créer une politique). 

1. Choisissez de créer la politique dans l’onglet **JSON**. 

1. Collez le document de politique JSON suivant, qui accorde l’accès au catalogue de données mais refuse les autorisations d’administrateur pour Lake Formation.

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

****  

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

------

1. Lorsque vous avez terminé, choisissez **Review** (Vérifier) pour vérifier la politique. Le programme de validation des politiques signale les éventuelles erreurs de syntaxe.

1. Sur la page **Vérifier la politique**, dans le champ **Nom**, saisissez **myspectrum\$1policy** pour nommer la politique que vous créez. (Facultatif) Entrez une **description**. Vérifiez le **récapitulatif** de politique pour voir les autorisations accordées par votre politique. Sélectionnez ensuite **Créer une politique** pour enregistrer votre travail.

   Une fois que vous avez créé une politique, vous pouvez fournir un accès à vos utilisateurs.

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
+ Utilisateurs et groupes dans AWS IAM Identity Center :

  Créez un jeu d’autorisations. Suivez les instructions de la rubrique [Création d’un jeu d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) du *Guide de l’utilisateur AWS IAM Identity Center *.
+ Utilisateurs gérés dans IAM par un fournisseur d’identité :

  Créez un rôle pour la fédération d’identité. Suivez les instructions de la rubrique [Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*.
+ Utilisateurs IAM :
  + Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique [Création d’un rôle pour un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.
  + (Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique [Ajout d’autorisations à un utilisateur (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) du *Guide de l’utilisateur IAM*.<a name="spectrum-get-started-grant-lake-formation-table"></a>

**Pour accorder des droits SELECT sur la table à interroger dans la base de données Lake Formation**

1. Ouvrez la console Lake Formation à l'adresse [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Dans le volet de navigation, sélectionnez **Autorisations de lac de données**, puis **Accorder**.

1. Suivez les instructions de la page [Octroi d’autorisations de table à l’aide de la méthode de ressource nommée](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-table-permissions.html) dans le *Guide du développeur AWS Lake Formation *. Saisissez les informations suivantes :
   + Pour le **rôle IAM**, choisissez celui que vous avez créé, `myspectrum_role`. Lorsque vous exécutez l’éditeur de requêtes Amazon Redshift, il utilise ce rôle IAM pour l’autorisation des données. 
**Note**  
Pour accorder l’autorisation SELECT sur la table d’un catalogue de données Lake Formation afin d’interroger, procédez comme suit :  
Enregistrez le chemin d’accès aux données dans Lake Formation. 
Accordez les autorisations utilisateur sur ce chemin dans Lake Formation.. 
Les tables créées se trouvent dans le chemin enregistré dans Lake Formation.. 

1. Choisissez **Accorder**.

**Important**  
La bonne pratique consiste à n’autoriser l’accès qu’aux objets Amazon S3 sous-jacents par le biais des autorisations Lake Formation. Pour empêcher tout accès non approuvé, supprimez toute autorisation accordée aux objets Amazon S3 en dehors de Lake Formation. Si vous accédiez précédemment aux objets Amazon S3 avant de configurer Lake Formation, supprimez toutes les politiques IAM ou les autorisations de compartiment qui étaient précédemment configurées. Pour plus d'informations, consultez les sections [Mise à niveau AWS Glue des autorisations de données vers les autorisations du AWS Lake Formation modèle](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html) [et de Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/lake-formation-permissions.html). 

## Étape 2 : Association du rôle IAM au cluster
<a name="c-getting-started-using-spectrum-add-role"></a>

Vous avez maintenant un rôle IAM qui autorise Amazon Redshift à accéder au catalogue de données externe et à Amazon S3 pour vous. At this point, you must associate that role with your Amazon Redshift cluster.

**Pour associer un rôle IAM à un cluster**

1. Connectez-vous à la console Amazon Redshift AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)

1. Dans le menu de navigation, choisissez **Clusters**, puis le nom du cluster que vous souhaitez mettre à jour. 

1. Sous **Actions**, choisissez **Gérer les rôles IAM**. La page **Rôles IAM** apparaît. 

1. Choisissez **Enter ARN** (Entrer l’ARN), puis entrez un ARN ou un rôle IAM, ou choisissez un rôle IAM dans la liste. Choisissez ensuite **Ajouter un rôle IAM** pour l’ajouter à la liste des **Rôles IAM attachés**. 

1. Choisissez **Terminé** pour associer le rôle IAM au cluster. Le cluster est modifié pour finaliser la modification. 

## Étape 3 : Création d’un schéma externe et d’une table externe
<a name="c-getting-started-using-spectrum-create-external-table"></a>

Créez des tables externes dans un schéma externe. Le schéma externe référence une base de données dans le catalogue de données externe et fournit le rôle IAM ARN qui autorise votre cluster à accéder à Amazon S3 en votre nom. Vous pouvez créer une base de données externe dans un catalogue de données Amazon Athena ou dans un métastore Apache Hive, tel qu'Amazon EMR. AWS Glue Data Catalog Pour cet exemple, vous créez la base de données externe dans un catalogue de données Amazon Athena lorsque vous créez le schéma externe Amazon Redshift. Pour de plus amples informations, consultez [Schémas externes dans Amazon Redshift Spectrum](c-spectrum-external-schemas.md). <a name="spectrum-get-started-create-external-table"></a>

**Pour créer un schéma externe et une table externe**

1. Pour créer un schéma externe, remplacez l’ARN de rôle IAM dans la commande ci-après par l’ARN de rôle que vous avez créé à l’[étape 1](#c-getting-started-using-spectrum-create-role). Ensuite, exécutez la commande dans votre client 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. Pour créer une table externe, exécutez la commande CREATE EXTERNAL TABLE suivante.
**Note**  
Votre cluster et le compartiment Amazon S3 doivent se trouver dans la même Région AWS. Pour cet exemple de commande CREATE EXTERNAL TABLE, le compartiment Amazon S3 contenant les exemples de données est situé dans l'est des États-Unis (Virginie du Nord) Région AWS. Pour voir les données sources, téléchargez le [fichier `sales_ts.000`](https://s3.amazonaws.com/redshift-downloads/tickit/spectrum/sales/sales_ts.000). .   
Vous pouvez modifier cet exemple pour l'exécuter dans un autre Région AWS. Créez un compartiment Amazon S3 dans le compartiment de votre choix Région AWS. Copiez les données de vente à l’aide d’une commande de copie Amazon S3. Ensuite, mettez à jour l’option d’emplacement dans l’exemple de commande `CREATE EXTERNAL TABLE` sur votre compartiment.  

   ```
   aws s3 cp s3://redshift-downloads/tickit/spectrum/sales/ s3://bucket-name/tickit/spectrum/sales/ --copy-props none --recursive
   ```
Le résultat de la commande de copie Amazon S3 confirme que le fichier a été copié *bucket-name* dans le fichier de votre choix Région AWS.  

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

## Étape 4 : Interrogation de vos données dans Amazon S3
<a name="c-getting-started-using-spectrum-query-s3-data"></a>

Une fois vos tables externes créées, vous pouvez les interroger à l’aide des mêmes instructions SELECT que vous utilisez pour interroger d’autres tables Amazon Redshift. Ces requêtes d’instruction SELECT incluent la jonction des tables, le regroupement des données et le filtrage des prédicats. <a name="spectrum-get-started-query-s3-data"></a>

**Pour interroger vos données dans Amazon S3**

1. Obtenez le nombre de lignes dans la table MYSPECTRUM\$1SCHEMA.SALES. 

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

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

1. En guise de bonne pratique, gardez vos plus grandes tables de faits dans Amazon S3 et vos plus petites tables de dimensions dans Amazon Redshift. Si vous avez chargé les exemples de données dans [Charger des données](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html), votre base de données comprend une table nommée EVENT. Sinon, créez la table EVENT en exécutant la commande suivante.

   ```
   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. Chargez la table EVENT en remplaçant l’ARN de rôle IAM dans la commande COPY ci-après par l’ARN de rôle que vous avez créé dans [Étape 1. Créer un rôle IAM pour Amazon Redshift](#c-getting-started-using-spectrum-create-role). Vous pouvez éventuellement télécharger et consulter les [données source pour le `allevents_pipe.txt`](https://s3.amazonaws.com/redshift-downloads/tickit/allevents_pipe.txt) depuis un compartiment Amazon S3 dans Région 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';
   ```

   L’exemple suivant joint la table Amazon S3 externe MYSPECTRUM\$1SCHEMA.SALES à la table Amazon Redshift locale EVENT afin de déterminer le total des ventes pour les 10 principaux événements.

   ```
   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. Affichez le plan de la requête précédente. Observez les étapes `S3 Seq Scan`, `S3 HashAggregate` et `S3 Query Scan` qui ont été exécutées par rapport aux données sur 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)
   ```

## Lancez votre AWS CloudFormation stack, puis interrogez vos données dans Amazon S3
<a name="c-getting-started-using-spectrum-query-s3-data-cfn"></a>

Une fois que vous avez créé un cluster Amazon Redshift et que vous vous y êtes connecté, vous pouvez installer votre DataLake AWS CloudFormation modèle Redshift Spectrum, puis interroger vos données.

CloudFormation installe le modèle Redshift Spectrum Getting DataLake Started et crée une pile contenant les éléments suivants : 
+ Un rôle nommé `myspectrum_role` associé à votre cluster Redshift
+ Un schéma externe nommé `myspectrum_schema`
+ Une table externe nommée `sales` dans un compartiment Amazon S3
+ Une table Redshift nommée `event` chargée de données

**Pour lancer votre stack Redshift Spectrum Getting Started DataLake CloudFormation**

1. Choisissez [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). La CloudFormation console s'ouvre avec le modèle DataLake .yml sélectionné.

   Vous pouvez également télécharger et personnaliser le [modèle DataLake CloudFormation CFN](https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataLake.yml) Redshift Spectrum Getting Started, puis ouvrir la CloudFormation console ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) et créer une pile avec le modèle personnalisé. .

1. Choisissez **Suivant**.

1. Sous **Parameters (Paramètres)**, saisissez le nom du cluster Amazon Redshift, le nom de base de données et le nom d’utilisateur de votre base de données.

1. Choisissez **Suivant**.

   Les options de pile apparaissent.

1. Choisissez **Next (Suivant)** pour accepter les paramètres par défaut.

1. Passez en revue les informations et sous **Fonctionnalités**, puis sélectionnez **Je reconnais que cela AWS CloudFormation pourrait créer des ressources IAM**.

1. Sélectionnez **Créer la pile**.

Si une erreur se produit pendant la création de la pile, consultez les informations suivantes :
+ Consultez l'onglet CloudFormation **Événements** pour obtenir des informations qui peuvent vous aider à résoudre l'erreur.
+ Supprimez la DataLake CloudFormation pile avant de recommencer l'opération.
+ Assurez-vous que vous êtes connecté à votre base de données Amazon Redshift.
+ Assurez-vous d’avoir saisi les informations correctes pour le nom de cluster Amazon Redshift, le nom de base de données et le nom d’utilisateur de la base de données.

### Interrogation de vos données dans Amazon S3
<a name="c-getting-started-spectrum-cfn-query-s3-data"></a>

Vous interrogez les tables externes à l’aide des mêmes instructions SELECT que vous utilisez pour interroger d’autres tables Amazon Redshift. Ces requêtes d’instruction SELECT incluent la jonction des tables, le regroupement des données et le filtrage des prédicats. 

La requête suivante renvoie le nombre de lignes dans la table externe `myspectrum_schema.sales`. 

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

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

### Joindre une table externe à une table locale
<a name="c-getting-started-spectrum-cfn-table-join"></a>

L’exemple suivant joint la table externe `myspectrum_schema.sales` à la table locale `event` afin de déterminer le total des ventes pour les 10 principaux événements.

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

### Affichage du plan de requête
<a name="c-getting-started-spectrum-cfn-query-plan"></a>

Affichez le plan de la requête précédente. Observez les étapes `S3 Seq Scan`, `S3 HashAggregate` et `S3 Query Scan` qui ont été exécutées par rapport aux données sur 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)
```