Esempio di utilizzo di una query federata - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempio di utilizzo di una query federata

Negli esempi seguenti viene illustrato come eseguire una query federata. Esegui l'istruzione SQL utilizzando il client SQL connesso al database Amazon Redshift.

Esempio di utilizzo di una query federata con PostgreSQL

Nell'esempio seguente viene illustrato come configurare una query federata che faccia riferimento a un database Amazon Redshift, un database Aurora PostgreSQL e Amazon S3. Questo esempio illustra come funzionano le query federate. Per eseguirlo nel proprio ambiente, modificarlo in base al proprio ambiente. Per i prerequisiti per l'esecuzione, vedere Nozioni di base sull'utilizzo di query federate su PostgreSQL.

Creare uno schema esterno che faccia riferimento a un database Aurora PostgreSQL.

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

Creare un altro schema esterno che faccia riferimento ad Amazon S3, che utilizza Amazon Redshift Spectrum. e concedere a public l'autorizzazione per utilizzare lo schema.

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;

Mostrare il conteggio delle righe nella tabella Amazon Redshift.

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

Mostrare il conteggio delle righe nella tabella Aurora PostgreSQL.

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

Mostrare il conteggio delle righe in Amazon S3.

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

Creare una vista delle tabelle da Amazon Redshift, Aurora PostgreSQL e Amazon S3. Questa visualizzazione viene utilizzata per eseguire la query federata.

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;

Mostrare il conteggio delle righe nella visualizzazione lineitem_all con un predicato per limitare i risultati.

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

Scoprire quante vendite di un determinato articolo sono state effettuate nel mese di gennaio di ogni anno.

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

Esempio di utilizzo di un nome con formato maiuscole/minuscole misto

Per eseguire una query su un database remoto PostgreSQL supportato con un nome di un database, schema, tabella o colonna con lettere maiuscole e minuscole, impostare enable_case_sensitive_identifier su true. Per ulteriori informazioni su questo parametro di sessione, consultare enable_case_sensitive_identifier.

SET enable_case_sensitive_identifier TO TRUE;

In genere, i nomi di schemi e database sono in lettere minuscole. Nell'esempio seguente viene illustrato come connettersi a un database remoto PostgreSQL supportato con nomi minuscoli per database e schema e nomi con maiuscole e minuscole per tabella e colonna.

Creare uno schema esterno che faccia riferimento a un database Aurora PostgreSQL con un nome di database in minuscolo (dblower) e il nome dello schema in minuscolo (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';

Nella sessione in cui viene eseguita la query, impostare enable_case_sensitive_identifier su true.

SET enable_case_sensitive_identifier TO TRUE;

Eseguire una query federata per selezionare tutti i dati dal database PostgreSQL. La tabella (MixedCaseTab) e la colonna (MixedCaseName) hanno nomi con lettere maiuscole e minuscole. Il risultato è una riga (Harry).

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

Nell'esempio seguente viene illustrato come connettersi a un database remoto PostgreSQL supportato con nomi con lettere maiuscole e minuscole per database, schema, tabella e colonna.

Impostare enable_case_sensitive_identifier su true prima di creare lo schema esterno. Se enable_case_sensitive_identifier non è impostato su true prima della creazione dello schema esterno, si verifica un errore di database che non esiste.

Creare uno schema esterno che faccia riferimento a un database Aurora PostgreSQL con un nome di database (UpperDB) e di schema (UpperSchema) con lettere maiuscole e minuscole.

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

Eseguire una query federata per selezionare tutti i dati dal database PostgreSQL. La tabella (MixedCaseTab) e la colonna (MixedCaseName) hanno nomi con lettere maiuscole e minuscole. Il risultato è una riga (Harry).

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

Esempio di utilizzo di una query federata con MySQL

Nell'esempio seguente viene illustrato come impostare una query federata che faccia riferimento a un database Aurora MySQL. Questo esempio illustra come funzionano le query federate. Per eseguirlo nel proprio ambiente, modificarlo in base al proprio ambiente. Per i prerequisiti per l'esecuzione, vedere Nozioni di base sull'utilizzo di query federate su MySQL (anteprima).

L'esempio dipende dai seguenti prerequisiti:

Creare uno schema esterno che faccia riferimento a un database Aurora MySQL.

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

Eseguire un esempio di selezione SQL della tabella Aurora MySQL per visualizzare una riga dalla tabella dei dipendenti in Aurora MySQL.

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