Étape 4 : Interrogation de vos données dans Amazon S3 - Amazon Redshift

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.

Étape 4 : Interrogation de vos données dans Amazon S3

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.

Pour interroger vos données dans Amazon S3
  1. Obtenez le nombre de lignes dans la table MYSPECTRUM_SCHEMA.SALES.

    select count(*) from myspectrum_schema.sales;
    count 
    ------
    172462
  2. 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, vous disposez d'une table nommée EVENT dans votre base de données. 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);
  3. 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. Vous pouvez éventuellement télécharger et consulter les données source pour le 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_SCHEMA.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
  4. 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)