

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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
<a name="federated_query_example"></a>

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
<a name="federated_query_example_postgres"></a>

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](getting-started-federated.md). 

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
<a name="federated_query_example_postgres-mixed"></a>

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\$1case\$1sensitive\$1identifier](r_enable_case_sensitive_identifier.md). 

```
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
<a name="federated_query_example_mysql"></a>

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)](getting-started-federated-mysql.md). 

L'esempio dipende dai seguenti prerequisiti: 
+ Un segreto che è stato impostato in Secrets Manager per il database Aurora MySQL. A questo segreto viene fatto riferimento nelle policy di accesso e nei ruoli IAM. Per ulteriori informazioni, consultare [Creazione di un segreto e di un ruolo IAM per l'utilizzo di query federate](federated-create-secret-iam-role.md). 
+ Un gruppo di sicurezza impostato che collega Amazon Redshift e Aurora MySQL. 

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