Exemples d’utilisation d’une requête fédérée - 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.

Exemples d’utilisation d’une requête fédérée

Les exemples suivants illustrent l’exécution d’une requête fédérée. Exécutez le SQL à l'aide de votre SQL client connecté à la base de données Amazon Redshift.

Exemple d'utilisation d'une requête fédérée avec Postgre SQL

L'exemple suivant montre comment configurer une requête fédérée qui fait référence à une base de données Amazon Redshift, à une base de données Aurora SQL Postgre et à Amazon S3. Cet exemple illustre le fonctionnement des requêtes fédérées. Pour l’exécuter sur votre propre environnement, modifiez-la afin qu’elle s’adapte à votre environnement. Pour connaître les conditions préalables à cette fin, consultez Commencer à utiliser des requêtes fédérées dans Postgre SQL.

Créez un schéma externe qui fait référence à une base de SQL données Aurora Postgre.

CREATE EXTERNAL SCHEMA apg FROM POSTGRES DATABASE 'database-1' SCHEMA 'myschema' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Créez un autre schéma externe qui référence Amazon S3, qui utilise Amazon Redshift Spectrum. En outre, définissez l’autorisation d’utiliser le schéma sur public.

CREATE EXTERNAL SCHEMA s3 FROM DATA CATALOG DATABASE 'default' REGION 'us-west-2' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-S3'; GRANT USAGE ON SCHEMA s3 TO public;

Affiche le nombre de lignes dans la table Amazon Redshift.

SELECT count(*) FROM public.lineitem; count ---------- 25075099

Afficher le nombre de lignes dans le SQL tableau Aurora Postgre.

SELECT count(*) FROM apg.lineitem; count ------- 11760

Affiche le nombre de lignes dans Amazon S3.

SELECT count(*) FROM s3.lineitem_1t_part; count ------------ 6144008876

Créez une vue des tables depuis Amazon RedshiftSQL, Aurora Postgre et Amazon S3. Cette vue est utilisée pour exécuter votre requête fédérée.

CREATE VIEW lineitem_all AS SELECT l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus, l_shipdate::date,l_commitdate::date,l_receiptdate::date, l_shipinstruct ,l_shipmode,l_comment FROM s3.lineitem_1t_part UNION ALL SELECT * FROM public.lineitem UNION ALL SELECT * FROM apg.lineitem with no schema binding;

Affiche le nombre de lignes dans la vue lineitem_all avec un prédicat pour limiter les résultats.

SELECT count(*) from lineitem_all WHERE l_quantity = 10; count ----------- 123373836

Découvrez le nombre de ventes pour un article en janvier de chaque année.

SELECT extract(year from l_shipdate) as year, extract(month from l_shipdate) as month, count(*) as orders FROM lineitem_all WHERE extract(month from l_shipdate) = 1 AND l_quantity < 2 GROUP BY 1,2 ORDER BY 1,2; year | month | orders ------+-------+--------- 1992 | 1 | 196019 1993 | 1 | 1582034 1994 | 1 | 1583181 1995 | 1 | 1583919 1996 | 1 | 1583622 1997 | 1 | 1586541 1998 | 1 | 1583198 2016 | 1 | 15542 2017 | 1 | 15414 2018 | 1 | 15527 2019 | 1 | 151

Exemple d’utilisation d’un nom en casse mixte

Pour interroger une base de données SQL distante Postgre prise en charge dont le nom est composé à la fois de base de données, de schéma, de table ou de colonne, définissez sur. enable_case_sensitive_identifier true Pour plus d’informations sur le paramètre de cette session, consultez enable_case_sensitive_identifier.

SET enable_case_sensitive_identifier TO TRUE;

En général, les noms de base de données et de schéma sont en minuscules. L'exemple suivant montre comment vous connecter à une base de données SQL distante Postgre prise en charge qui possède des noms en minuscules pour la base de données et le schéma et des noms mixtes pour les tables et les colonnes.

Créez un schéma externe qui fait référence à une base de données Aurora Postgre dont le nom de SQL base de données est en minuscules (dblower) et le nom de schéma en minuscules (). schemalower

CREATE EXTERNAL SCHEMA apg_lower FROM POSTGRES DATABASE 'dblower' SCHEMA 'schemalower' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Dans la session où la requête s’exécute, définissez enable_case_sensitive_identifier sur true.

SET enable_case_sensitive_identifier TO TRUE;

Exécutez une requête fédérée pour sélectionner toutes les données de la base de données PostgreSQL. La table (MixedCaseTab) et la colonne (MixedCaseName) ont des noms en casse mixte. Le résultat est une ligne (Harry).

select * from apg_lower."MixedCaseTab";
MixedCaseName ------- Harry

L'exemple suivant montre comment vous connecter à une base de données SQL distante Postgre prise en charge dont le nom est composé à la fois de majuscules et de minuscules pour la base de données, le schéma, la table et la colonne.

Définissez enable_case_sensitive_identifier sur true avant de créer le schéma externe. Si enable_case_sensitive_identifier n’est pas défini sur true avant de créer le schéma externe, une erreur de non-existence de la base de données (database does not exist) se produit.

Créez un schéma externe qui fait référence à une base de données Aurora Postgre dont le nom SQL de base de données () et le nom de schéma (UpperDBUpperSchema) sont composés de majuscules et de minuscules.

CREATE EXTERNAL SCHEMA apg_upper FROM POSTGRES DATABASE 'UpperDB' SCHEMA 'UpperSchema' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Exécutez une requête fédérée pour sélectionner toutes les données de la base de données PostgreSQL. La table (MixedCaseTab) et la colonne (MixedCaseName) ont des noms en casse mixte. Le résultat est une ligne (Harry).

select * from apg_upper."MixedCaseTab";
MixedCaseName ------- Harry

Exemple d'utilisation d'une requête fédérée avec My SQL

L'exemple suivant montre comment configurer une requête fédérée qui fait référence à une SQL base de données Aurora My. Cet exemple illustre le fonctionnement d’une requête fédérée. Pour l’exécuter sur votre propre environnement, modifiez-la afin qu’elle s’adapte à votre environnement. Pour connaître les conditions préalables à cette fin, consultez Commencer à utiliser des requêtes fédérées sur My SQL.

Cet exemple dépend des prérequis suivants :

Créez un schéma externe qui fait référence à une base de SQL données Aurora My.

CREATE EXTERNAL SCHEMA amysql FROM MYSQL DATABASE 'functional' URI 'endpoint to remote hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Exécutez un exemple de SQL sélection de la SQL table Aurora My pour afficher une ligne de la table des employés dans Aurora MySQL.

SELECT level FROM amysql.employees LIMIT 1; level ------- 8