Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.
Utilizzo di DescribeStatement con un SDK AWS
Gli esempi di codice seguenti mostrano come utilizzare DescribeStatement.
Gli esempi di operazioni sono estratti di codice da programmi più grandi e devono essere eseguiti nel contesto. È possibile visualizzare questa operazione nel contesto nel seguente esempio di codice:
- Java
-
- SDK per Java 2.x
-
/**
* Checks the status of an SQL statement asynchronously and handles the completion of the statement.
*
* @param sqlId the ID of the SQL statement to check
* @return a {@link CompletableFuture} that completes when the SQL statement's status is either "FINISHED" or "FAILED"
*/
public CompletableFuture<Void> checkStatementAsync(String sqlId) {
DescribeStatementRequest statementRequest = DescribeStatementRequest.builder()
.id(sqlId)
.build();
return getAsyncDataClient().describeStatement(statementRequest)
.thenCompose(response -> {
String status = response.statusAsString();
logger.info("... Status: {} ", status);
if ("FAILED".equals(status)) {
throw new RuntimeException("The Query Failed. Ending program");
} else if ("FINISHED".equals(status)) {
return CompletableFuture.completedFuture(null);
} else {
// Sleep for 1 second and recheck status
return CompletableFuture.runAsync(() -> {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
throw new RuntimeException("Error during sleep: " + e.getMessage(), e);
}
}).thenCompose(ignore -> checkStatementAsync(sqlId)); // Recursively call until status is FINISHED or FAILED
}
}).whenComplete((result, exception) -> {
if (exception != null) {
// Handle exceptions
logger.info("Error: {} ", exception.getMessage());
} else {
logger.info("The statement is finished!");
}
});
}
- Python
-
- SDK per Python (Boto3)
-
class RedshiftDataWrapper:
"""Encapsulates Amazon Redshift data."""
def __init__(self, client):
"""
:param client: A Boto3 RedshiftDataWrapper client.
"""
self.client = client
def describe_statement(self, statement_id):
"""
Describes a SQL statement.
:param statement_id: The SQL statement identifier.
:return: The SQL statement result.
"""
try:
response = self.client.describe_statement(Id=statement_id)
return response
except ClientError as err:
logging.error(
"Couldn't describe statement. Here's why: %s: %s",
err.response["Error"]["Code"],
err.response["Error"]["Message"],
)
raise
Il codice seguente crea un’istanza dell’oggetto RedshiftDataWrapper.
client = boto3.client("redshift-data")
redshift_data_wrapper = RedshiftDataWrapper(client)
Per un elenco completo delle guide per gli sviluppatori di SDK AWS ed esempi di codice, consulta la sezione Utilizzo del servizio con un SDK AWS. Questo argomento include anche informazioni su come iniziare e dettagli sulle versioni precedenti dell'SDK.