

 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à.

# Uso dell'API dati di Amazon Redshift
<a name="data-api"></a>

L’API dati Amazon Redshift semplifica l’accesso al data warehouse Amazon Redshift eliminando la necessità di gestire driver di database, connessioni, configurazioni di rete, buffering dei dati, credenziali e altro ancora. Puoi eseguire istruzioni SQL utilizzando le operazioni Data API con l' AWS SDK. Per ulteriori informazioni sulle operazioni dell’API dati, consulta la [documentazione di riferimento dell’API dati Amazon Redshift](https://docs.aws.amazon.com/redshift-data/latest/APIReference/).

L'API dati non richiede una connessione permanente al database. Fornisce invece un endpoint HTTP sicuro e l'integrazione con. AWS SDKs Puoi usare l'endpoint per eseguire istruzioni SQL senza gestire connessioni. Le chiamate all'API dati sono asincrone. L'API Data può utilizzare credenziali archiviate nel database Gestione dei segreti AWS o credenziali temporanee del database. Non è necessario utilizzare alcuna password nelle chiamate API con entrambi i metodi di autorizzazione. Per ulteriori informazioni su Gestione dei segreti AWS, consulta [What](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) Is? Gestione dei segreti AWS nella *Guida Gestione dei segreti AWS per l'utente*. È possibile utilizzare anche AWS IAM Identity Center per l'autorizzazione.

Con l'API Data, puoi accedere in modo programmatico ai dati di Amazon Redshift con applicazioni basate su servizi Web, AWS Lambda SageMaker tra cui notebook Amazon AI e. AWS Cloud9 Per ulteriori informazioni su queste applicazioni [AWS Lambda](https://aws.amazon.com/lambda/), consulta [Amazon SageMaker AI](https://aws.amazon.com/sagemaker/) e [AWS Cloud9](https://aws.amazon.com/cloud9/). 

Per ulteriori informazioni sull’API dati, consulta [Get started with the Amazon Redshift Data API](https://aws.amazon.com/blogs/big-data/get-started-with-the-amazon-redshift-data-api/) in *AWS Big Data Blog*.

## Operazioni con l'API dati Amazon Redshift
<a name="data-api-workflow"></a>

Prima di utilizzare l'API dati Amazon Redshift, verificare quanto riportato di seguito: 

1. Determinare se l'utente, come chiamante dell'API dati, è autorizzato. Per ulteriori informazioni sull'autorizzazione , consultare [Autorizzazione di accesso all'API dati di Amazon Redshift](data-api-access.md).

1. Determina se prevedi di chiamare l’API dati con credenziali di autenticazione da Secrets Manager o con credenziali temporanee oppure utilizza AWS IAM Identity Center. Per ulteriori informazioni, consulta [Scelta delle credenziali di autenticazione del database quando si richiama l'API dati di Amazon Redshift](#data-api-calling-considerations-authentication).

1. Se si utilizza Secrets Manager impostare un segreto per le credenziali di autenticazione. Per ulteriori informazioni, consultare [Archiviazione delle credenziali del database in Gestione dei segreti AWS](data-api-secrets.md).

1. Esaminare le considerazioni e le limitazioni quando si chiama l'API dati. Per ulteriori informazioni, consulta [Considerazioni da fare durante la chiamata all'API dati di Amazon Redshift](#data-api-calling-considerations).

1. Chiama l'API Data da AWS Command Line Interface (AWS CLI), dal tuo codice o utilizzando l'editor di query nella console Amazon Redshift. Per esempi di chiamata dalla AWS CLI, consultare [Chiamata dell'API dati](data-api-calling.md).

## Considerazioni da fare durante la chiamata all'API dati di Amazon Redshift
<a name="data-api-calling-considerations"></a>

Considerare quanto riportato di seguito quando si effettua la chiamata dell'API dati:
+ L'API dati di Amazon Redshift può accedere ai database nei cluster sottoposti a provisioning di Amazon Redshift e nei gruppi di lavoro Redshift serverless. Per un elenco delle aree Regioni AWS in cui è disponibile l'API Redshift Data, consulta gli endpoint elencati per [Redshift](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html) Data API nel. *Riferimenti generali di Amazon Web Services* 
+ La durata massima di una query è di 24 ore. 
+ Il numero massimo di query (`STARTED`e `SUBMITTED` query) attive per cluster Amazon Redshift è 500. 
+ La dimensione massima del risultato della query è 500 MB (dopo la compressione gzip). Se una chiamata restituisce più di 500 MB di dati di risposta, la chiamata viene interrotta. 
+ Il tempo massimo di conservazione dei risultati delle query è 24 ore. 
+ La dimensione massima dell'istruzione della query è 100 KB. 
+ L'API dati è disponibile per eseguire query su cluster a nodo singolo e a più nodi dei seguenti tipi di nodo:
  + dc2.large
  + dc2.8xlarge
  + ra3.large
  + ra3.xlplus
  + ra3.4xlarge
  + ra3.16xlarge
+ Il cluster deve trovarsi in un Virtual Private Cloud (VPC) basato sul servizio Amazon VPC. 
+ Per impostazione predefinita, gli utenti con lo stesso ruolo IAM del runner di un’operazione API `ExecuteStatement` o `BatchExecuteStatement` possono intervenire sulla stessa istruzione con le operazioni API `CancelStatement`, `DescribeStatement`, `GetStatementResult`, `GetStatementResultV2` e `ListStatements`. Per agire sulla stessa istruzione SQL di un altro utente, l'utente deve essere in grado di assumere il ruolo IAM dell'utente che ha eseguito l'istruzione SQL. Per ulteriori informazioni su come assumere un ruolo, consulta [Autorizzazione di accesso all'API dati di Amazon Redshift](data-api-access.md). 
+ Le istruzioni SQL nel parametro `Sqls` dell'operazione API `BatchExecuteStatement` vengono eseguite come una singola transazione. Vengono eseguiti in serie nell'ordine dell'array. Le istruzioni SQL successive non vengono avviate fino al completamento dell'istruzione precedente nell'array. Se un'istruzione SQL ha esito negativo, dal momento che viene eseguita come un'unica transazione, viene eseguito il rollback di tutta l'operazione.
+ Il tempo massimo di conservazione per un token client utilizzato nell'operazione API `ExecuteStatement` o `BatchExecuteStatement` è di 8 ore.
+ Se i cluster forniti da Amazon Redshift e il gruppo di lavoro Redshift Serverless sono crittografati utilizzando una chiave gestita dal cliente, Redshift crea una concessione che consente all'API Redshift Data di utilizzare la chiave per le proprie operazioni. Per ulteriori informazioni, consulta [Utilizzo AWS KMS con l'API dati Amazon Redshift](data-api-kms.md). 
+ Ogni API nell'API di dati Redshift ha una quota di transazioni al secondo prima della limitazione (della larghezza di banda della rete) delle richieste. Per la quota, consulta [Quote per l'API di dati Amazon Redshift](amazon-redshift-limits.md#data-api-quotas-account). Se la frequenza della richiesta supera la quota, viene restituito `ThrottlingException` con codice di stato HTTP 400. [https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html) In alcuni casi, questa strategia viene implementata automaticamente per correggere gli errori di limitazione. AWS SDKs
**Nota**  
Per impostazione predefinita AWS Step Functions, i nuovi tentativi non sono abilitati. Se devi chiamare un'API di dati Redshift in una macchina a stati Step Functions, includi il parametro di idempotenza `ClientToken` nella chiamata API di dati Redshift. Il valore di `ClientToken` deve persistere tra un tentativo e l'altro. Nel frammento di esempio seguente di una richiesta all'API `ExecuteStatement`, l'espressione `States.ArrayGetItem(States.StringSplit($$.Execution.Id, ':'), 7)` utilizza una funzione intrinseca per estrarre la parte UUID di `$$.Execution.Id`, che è univoca per ogni esecuzione della macchina a stati. Per ulteriori informazioni, consulta [Intrinsic functions](https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-intrinsic-functions.html) nella *Guida per sviluppatori di AWS Step Functions *.  

  ```
  {
    "Database": "dev",
    "Sql": "select 1;",
    "ClusterIdentifier": "MyCluster",
    "ClientToken.$": "States.ArrayGetItem(States.StringSplit($$.Execution.Id, ':'), 7)"
  }
  ```

## Scelta delle credenziali di autenticazione del database quando si richiama l'API dati di Amazon Redshift
<a name="data-api-calling-considerations-authentication"></a>

Quando si chiama l'API dati, è possibile utilizzare uno dei seguenti metodi di autenticazione per alcune operazioni API. Ogni metodo richiede una diversa combinazione di parametri. 

**AWS IAM Identity Center**  
È possibile accedere all’API dati con un utente single sign-on registrato in AWS IAM Identity Center. Per ulteriori informazioni sulle fasi per configurare Centro identità IAM, consulta [Utilizzo dell’API dati con la propagazione affidabile delle identità](data-api-trusted-identity-propagation.md).

**Gestione dei segreti AWS**  
Con questo metodo, fornisci un segreto memorizzato in Gestione dei segreti AWS cui ha `username` e`password`. `secret-arn` Il segreto specificato contiene le credenziali per la connessione al `database` specificato. Quando ci si connette a un cluster, si forniscono anche il nome del database; se si fornisce un identificatore del cluster (`dbClusterIdentifier`), questo deve corrispondere all'identificatore del cluster archiviato nel segreto. Quando ci si connette a un gruppo di lavoro serverless, si fornisce anche il nome del database. Per ulteriori informazioni, consulta [Archiviazione delle credenziali del database in Gestione dei segreti AWS](data-api-secrets.md).   
Con questo metodo, puoi anche fornire un `region` valore che specifica Regione AWS dove si trovano i tuoi dati. 

**Credenziali temporanee**  
Con questo metodo, scegli una delle seguenti opzioni:  
+ Quando ti connetti a un gruppo di lavoro serverless, specifica il nome del gruppo di lavoro e del database. Il nome utente del database deriva dall'identità IAM. Ad esempio, `arn:iam::123456789012:user:foo` ha il nome utente di database `IAM:foo`. Inoltre, è richiesta l'autorizzazione a richiamare l'operazione `redshift-serverless:GetCredentials`.
+ Quando ti connetti a un cluster come identità IAM, specifica l'identificatore del cluster e il nome del database. Il nome utente del database deriva dall'identità IAM. Ad esempio, `arn:iam::123456789012:user:foo` ha il nome utente di database `IAM:foo`. Inoltre, è richiesta l'autorizzazione a richiamare l'operazione `redshift:GetClusterCredentialsWithIAM`.
+ Quando ti connetti a un cluster come utente del database, specifica l'identificatore del cluster, il nome del database e il nome utente del database. Inoltre, è richiesta l'autorizzazione a richiamare l'operazione `redshift:GetClusterCredentials`. Per informazioni su come unirsi a gruppi di database durante la connessione con questo metodo, vedere [Unirsi a gruppi di database durante la connessione a un cluster](data-api-dbgroups.md).
Con questo metodo, puoi anche fornire un `region` valore che specifica Regione AWS dove si trovano i tuoi dati. 

## Mappatura dei tipi di dati JDBC quando si chiama l'API dati di Amazon Redshift
<a name="data-api-calling-considerations-jdbc"></a>

 La tabella seguente associa i tipi di dati Java Database Connectivity (JDBC) ai tipi di dati specificati nelle chiamate API dati.


****  

|  Tipo di dati JDBC  |  Tipo di dati API dati  | 
| --- | --- | 
| `INTEGER, SMALLINT, BIGINT` | `LONG` | 
| `FLOAT, REAL, DOUBLE` | `DOUBLE` | 
| `DECIMAL` | `STRING` | 
| `BOOLEAN, BIT` | `BOOLEAN` | 
| `BLOB, BINARY, LONGVARBINARY` | `BLOB` | 
| `VARBINARY` | `STRING` | 
| `CLOB` | `STRING` | 
| Altri tipi (inclusi i tipi correlati a data e ora) | `STRING` | 

I valori stringa vengono passati al database Amazon Redshift e convertiti implicitamente in un tipo di dati del database.

**Nota**  
Attualmente, l'API Data non supporta array di identificatori univoci universali (). UUIDs

## Esecuzione di istruzioni SQL con parametri quando si chiama l'API dati di Amazon Redshift
<a name="data-api-calling-considerations-parameters"></a>

È possibile controllare il testo SQL inviato al modulo di gestione di database chiamando l'operazione dell'API dati utilizzando i parametri per parti dell'istruzione SQL. I parametri specificati forniscono un modo flessibile per passare i parametri nel testo SQL senza codificarli. Aiutano a riutilizzare il testo SQL ed evitare problemi di SQL injection.

L'esempio seguente mostra i parametri denominati di un `parameters` campo di un comando `execute-statement` or `batch-execute-statement` AWS CLI .

```
--parameters "[{\"name\": \"id\", \"value\": \"1\"},{\"name\": \"address\", \"value\": \"Seattle\"}]"
```

Considerare le informazioni seguenti durante l'utilizzo dei parametri specificati:
+ I parametri denominati possono essere utilizzati solo per sostituire i valori nelle istruzioni SQL.
  + È possibile sostituire i valori in un'istruzione INSERT, ad esempio`INSERT INTO mytable VALUES(:val1)`.

    I parametri specificati possono essere in qualsiasi ordine e possono essere utilizzati più di una volta nel testo SQL. Nell'opzione dei parametri mostrata nell'esempio precedente, i valori `1` e `Seattle` vengono inseriti nelle colonne della tabella `id` e `address`. Nel testo SQL, specificare i parametri denominati come segue:

    ```
    --sql "insert into mytable values (:id, :address)"
    ```
  + È possibile sostituire i valori in una clausola di condizioni, ad esempio `WHERE attr >= :val1`, `WHERE attr BETWEEN :val1 AND :val2` e `HAVING COUNT(attr) > :val`.
  + Non è possibile sostituire i nomi delle colonne in un'istruzione SQL, ad esempio `SELECT column-name`, `ORDER BY column-name` o `GROUP BY column-name`.

    Ad esempio, l'istruzione SELECT seguente restituisce un errore con sintassi non valida.

    ```
    --sql "SELECT :colname, FROM event" --parameters "[{\"name\": \"colname\", \"value\": \"eventname\"}]"
    ```

    Se si descrive (operazione `describe-statement`) l'istruzione con l'errore di sintassi, il valore `QueryString` restituito non sostituisce il nome della colonna per il parametro (`"QueryString": "SELECT :colname, FROM event"`) e viene segnalato un errore (ERROR: syntax error at or near \\"FROM\\"\\n Position: 12).
  + Non è possibile sostituire i nomi delle colonne in una funzione aggregata, ad esempio `COUNT(column-name)`, `AVG(column-name)` o `SUM(column-name)`.
  + Non è possibile sostituire i nomi delle colonne in una clausola JOIN.
+ Quando viene eseguito l'SQL, i dati vengono trasformati implicitamente in un tipo di dati. Per ulteriori informazioni sul casting del tipo di dati, consultare [Tipi di dati](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html) nella *Guida per gli sviluppatori di database di Amazon Redshift*. 
+ Non è possibile impostare un valore su NULL. L'API dati interpreta questo valore come la stringa letterale `NULL`. Nell'esempio seguente `id` viene sostituito con la stringa letterale `null`. Non il valore SQL NULL. 

  ```
  --parameters "[{\"name\": \"id\", \"value\": \"null\"}]"
  ```
+ Non è possibile impostare un valore con lunghezza zero. L'istruzione SQL dell'API dati non riesce. Nell'esempio seguente si prova a impostare `id` con un valore di lunghezza zero e ciò si traduce in un errore dell'istruzione SQL. 

  ```
  --parameters "[{\"name\": \"id\", \"value\": \"\"}]"
  ```
+ Non è possibile impostare un nome di tabella nell'istruzione SQL con un parametro. L'API dati segue la regola di `PreparedStatement` JDBC. 
+ L'output dell'operazione `describe-statement` restituisce i parametri di query di un'istruzione SQL.
+ Entrambe le `batch-execute-statement` operazioni `execute-statement` e supportano istruzioni SQL con parametri. Durante l'utilizzo`batch-execute-statement`, i parametri vengono condivisi tra tutte le istruzioni SQL del batch. Ogni istruzione SQL può fare riferimento a un sottoinsieme dei parametri forniti, ma ogni parametro deve essere utilizzato da almeno un'istruzione SQL.

## Esecuzione di istruzioni SQL con un token di idempotenza quando si chiama l'API dati di Amazon Redshift
<a name="data-api-calling-considerations-idempotency"></a>

Quando si effettua una richiesta API mutante, di solito restituisce un risultato prima del completamento dei flussi di lavoro asincroni dell'operazione. Le operazioni potrebbero inoltre scadere o riscontrare altri problemi relativi al server prima del completamento, anche se la richiesta ha già restituito un risultato. Ciò potrebbe rendere difficile determinare l'esito della richiesta e potrebbe comportare più tentativi per garantire che l'operazione venga completata correttamente. Tuttavia, se la richiesta originale e i tentativi successivi hanno esito positivo, l'operazione viene completata più volte, il che significa che potresti aggiornare più risorse del previsto.

L'*idempotenza* assicura che una richiesta API venga completata solo una volta. Quando si utilizza una richiesta idempotente, se la richiesta originale viene completata correttamente, tutti i tentativi successivi vengono completati correttamente senza alcuna azione aggiuntiva. Le operazioni delle API dei dati `ExecuteStatement` e `BatchExecuteStatement` hanno un parametro idempotente `ClientToken` opzionale. Il `ClientToken` scade dopo 8 ore.

**Importante**  
Se si effettuano chiamate `ExecuteStatement` e si eseguono `BatchExecuteStatement` operazioni da un AWS SDK, viene generato automaticamente un token client da utilizzare in caso di nuovo tentativo. In questo caso, non è consigliabile utilizzare il parametro `client-token` con le operazioni `ExecuteStatement` e `BatchExecuteStatement`. Visualizza il CloudTrail registro per vedere il. `ClientToken` Per un esempio di CloudTrail registro, vedere[Esempi per l'API di dati di Amazon Redshift](logging-with-cloudtrail.md#data-api-cloudtrail).

Il `execute-statement` AWS CLI comando seguente illustra il `client-token` parametro opzionale per l'idempotenza.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev 
    --client-token b855dced-259b-444c-bc7b-d3e8e33f94g1
```

La tabella seguente mostra alcune risposte comuni che si potrebbero ricevere per richieste API idempotenti e fornisce consigli per effettuare nuovi tentativi.


| Risposta | Raccomandazione | Commenti | 
| --- | --- | --- | 
| 200 (OK) | Non riprovare | La richiesta originale è stata completata con successo. Qualsiasi tentativo successivo ottiene esito positivo. | 
| Codici di risposta serie 400  | Non riprovare | La richiesta presenta uno dei problemi seguenti: [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/redshift/latest/mgmt/data-api.html)<br />Se la richiesta riguarda una risorsa che sta cambiando stato, un nuovo tentativo potrebbe avere esito positivo. | 
| Codici di risposta serie 500  | Riprova | L'errore è causato da un problema AWS sul lato server ed è generalmente temporaneo. Ripeti la richiesta con una strategia di backoff appropriata. | 

Per ulteriori informazioni sui codici di risposta di Amazon Redshift, consulta [Errori comuni](https://docs.aws.amazon.com/redshift/latest/APIReference/CommonErrors.html) nella *Documentazione di riferimento dell'API Amazon Redshift*.

## Esecuzione di istruzioni SQL con il riutilizzo della sessione quando chiami l’API dati Amazon Redshift
<a name="data-api-calling-considerations-session-reuse"></a>

Quando effettui una richiesta API per eseguire un’istruzione SQL, la sessione in cui viene eseguita l’istruzione SQL viene in genere terminata al termine dell’istruzione SQL. Per mantenere la sessione attiva per un determinato numero di secondi, le operazioni `ExecuteStatement` e `BatchExecuteStatement` dell’API dati dispongono di un parametro `SessionKeepAliveSeconds` opzionale. Un campo di risposta `SessionId` contiene l’identità della sessione che può quindi essere utilizzata nelle operazioni `ExecuteStatement` e `BatchExecuteStatement` successive. Nelle chiamate successive puoi specificare un altro codice `SessionKeepAliveSeconds` per modificare il tempo di timeout di inattività. Se il codice `SessionKeepAliveSeconds` non viene modificato, l’impostazione iniziale del timeout di inattività rimane invariata. Durante il riutilizzo della sessione considera quanto segue:
+ Il valore massimo di `SessionKeepAliveSeconds` è 24 ore.
+ La sessione può durare al massimo 24 ore. Dopo 24 ore, la sessione viene chiusa forzatamente e le query in corso vengono terminate.
+ Il numero massimo di sessioni per cluster Amazon Redshift o gruppo di lavoro Redshift serverless è 500.
+ Puoi eseguire solo una query alla volta in una sessione. Devi attendere il completamento di una query prima di eseguire quella successiva nella stessa sessione. In altre parole non puoi eseguire query in parallelo in una sessione fornita.
+ L’API dati non può mettere in coda le query per una determinata sessione.

Per recuperare `SessionId` che viene utilizzato dalle chiamate alle operazioni `ExecuteStatement` e `BatchExecuteStatement`, chiama le operazioni `DescribeStatement` e `ListStatements`.

L’esempio seguente dimostra l’utilizzo dei parametri `SessionKeepAliveSeconds` e `SessionId` per mantenere attiva e riutilizzata una sessione. Innanzitutto, chiamate il `execute-statement` AWS CLI comando con il parametro opzionale `session-keep-alive-seconds` impostato su. `2`

```
aws redshift-data execute-statement 
    --session-keep-alive-seconds 2 
    --sql "select 1" 
    --database dev 
    --workgroup-name mywg
```

La risposta contiene l’identificatore della sessione.

```
{
    "WorkgroupName": "mywg",
    "CreatedAt": 1703022996.436,
    "Database": "dev",
    "DbUser": "awsuser",
    "Id": "07c5ffea-76d6-4786-b62c-4fe3ef529680",
    "SessionId": "5a254dc6-4fc2-4203-87a8-551155432ee4"
}
```

Quindi, chiamate il `execute-statement` AWS CLI comando con `SessionId` il risultato della prima chiamata. E, facoltativamente, specifica il parametro `session-keep-alive-seconds` impostato su `10` per modificare il valore del timeout di inattività.

```
aws redshift-data execute-statement 
    --sql "select 1" 
    --session-id 5a254dc6-4fc2-4203-87a8-551155432ee4
    --session-keep-alive-seconds 10
```

## Recupero dei risultati delle istruzioni SQL
<a name="data-api-calling-considerations-result-format"></a>

Utilizzi diverse operazioni dell’API dati per recuperare i risultati SQL a seconda del formato dei risultati. Quando chiami le operazioni `ExecuteStatement` e `BatchExecuteStatement`, puoi specificare se i risultati sono formattati come JSON o CSV. Se non lo specifichi, il valore predefinito è JSON. Per recuperare i risultati JSON, utilizza l’operazione `GetStatementResult`. Per recuperare i risultati CSV, utilizza l’operazione `GetStatementResultV2`.

I risultati restituiti in formato JSON sono record che includono metadati su ogni colonna. Ogni record è in formato JSON. Ad esempio, la risposta di `GetStatementResult` è simile alla seguente:

```
{
   "ColumnMetadata": [ 
      { 
         "isCaseSensitive": false,
         "isCurrency": false,
         "isSigned": true,
         "label": "?column?",
         "name": "?column?",
         "nullable": 1,
         "precision": 10,
         "scale": 0,
         "schemaName": "",
         "tableName": "",
         "typeName": "int4",
         "length": 0
      }
   ],
   "NextToken": "{{<token>}}",
   "Records": [
        [
            {
                "longValue": 1
            }
        ]
    ],
   "TotalNumRows": {{<number>}}
}
```

I risultati restituiti in formato CSV sono record che includono metadati su ogni colonna. I risultati vengono restituiti in blocchi da 1 MB, in cui ogni blocco può memorizzare un numero qualsiasi di righe in formato CSV. Ogni richiesta restituisce fino a 15 MB di risultati. Se i risultati sono superiori a 15 MB, viene restituito un token di pagina successiva per continuare a recuperare i risultati. Ad esempio, la risposta di `GetStatementResultV2` è simile alla seguente:

```
{
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        }
    ],
    "NextToken": "{{<token>}}",
    "Records": [
        [
            {
                "CSVRecords":"1,2,3\r\n4,5,6\r\n7,8,9\rn, .... 1MB" // First 1MB Chunk
            },
            {
                "CSVRecords":"1025,1026,1027\r\n1028,1029,1030\r\n....2MB" // Second 1MB chunk
            }
            ...
        ]
    ],
    "ResultFormat" : "CSV",
    "TotalNumRows": {{<number>}}
}
```