Amazon Redshift ne prendra plus en charge la création de nouveaux UDFs Python à partir du patch 198. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement jusqu’au 30 juin 2026. Pour plus d’informations, consultez le billet de blog .
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.
À utiliser GetStatementResultavec un AWS Kit SDK
Les exemples de code suivants illustrent comment utiliser GetStatementResult.
Les exemples d’actions sont des extraits de code de programmes de plus grande envergure et doivent être exécutés en contexte. Vous pouvez voir cette action en contexte dans l’exemple de code suivant :
- .NET
-
- SDK pour .NET (v4)
-
/// <summary>
/// Get the results of a statement execution.
/// </summary>
/// <param name="statementId">The statement ID.</param>
/// <returns>A list of result rows.</returns>
public async Task<List<List<Field>>> GetStatementResultAsync(string statementId)
{
try
{
var request = new GetStatementResultRequest
{
Id = statementId
};
var response = await _redshiftDataClient.GetStatementResultAsync(request);
return response.Records;
}
catch (Amazon.RedshiftDataAPIService.Model.ResourceNotFoundException ex)
{
Console.WriteLine($"Statement not found: {ex.Message}");
throw;
}
catch (Exception ex)
{
Console.WriteLine($"Couldn't get statement result. Here's why: {ex.Message}");
throw;
}
}
- Java
-
- SDK pour Java 2.x
-
Vérifiez le résultat de l’instruction.
/**
* Asynchronously retrieves the results of a statement execution.
*
* @param statementId the ID of the statement for which to retrieve the results
* @return a {@link CompletableFuture} that completes when the statement result has been processed
*/
public CompletableFuture<Void> getResultsAsync(String statementId) {
GetStatementResultRequest resultRequest = GetStatementResultRequest.builder()
.id(statementId)
.build();
return getAsyncDataClient().getStatementResult(resultRequest)
.handle((response, exception) -> {
if (exception != null) {
logger.info("Error getting statement result {} ", exception.getMessage());
throw new RuntimeException("Error getting statement result: " + exception.getMessage(), exception);
}
// Extract and print the field values using streams if the response is valid.
response.records().stream()
.flatMap(List::stream)
.map(Field::stringValue)
.filter(value -> value != null)
.forEach(value -> System.out.println("The Movie title field is " + value));
return response;
}).thenAccept(response -> {
// Optionally add more logic here if needed after handling the response
});
}
- Python
-
- Kit SDK for Python (Boto3)
-
class RedshiftDataWrapper:
"""Encapsulates Amazon Redshift data."""
def __init__(self, client):
"""
:param client: A Boto3 RedshiftDataWrapper client.
"""
self.client = client
def get_statement_result(self, statement_id):
"""
Gets the result of a SQL statement.
:param statement_id: The SQL statement identifier.
:return: The SQL statement result.
"""
try:
result = {
"Records": [],
}
paginator = self.client.get_paginator("get_statement_result")
for page in paginator.paginate(Id=statement_id):
if "ColumnMetadata" not in result:
result["ColumnMetadata"] = page["ColumnMetadata"]
result["Records"].extend(page["Records"])
return result
except ClientError as err:
logging.error(
"Couldn't get statement result. Here's why: %s: %s",
err.response["Error"]["Code"],
err.response["Error"]["Message"],
)
raise
Le code suivant instancie l' RedshiftDataWrapper objet.
client = boto3.client("redshift-data")
redshift_data_wrapper = RedshiftDataWrapper(client)
- SAP ABAP
-
- Kit SDK pour SAP ABAP
-
Vérifiez le résultat de l’instruction.
TRY.
" Example values: iv_statement_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
" Handle pagination for large result sets
DO.
lo_result_page = lo_rsd->getstatementresult(
iv_id = iv_statement_id
iv_nexttoken = lv_next_token
).
" Collect records from this page
lt_page_records = lo_result_page->get_records( ).
APPEND LINES OF lt_page_records TO lt_all_records.
" Check if there are more pages
lv_next_token = lo_result_page->get_nexttoken( ).
IF lv_next_token IS INITIAL.
EXIT. " No more pages
ENDIF.
ENDDO.
" For the last call, set oo_result for return value
oo_result = lo_result_page.
lv_record_count = lines( lt_all_records ).
MESSAGE |Retrieved { lv_record_count } record(s).| TYPE 'I'.
CATCH /aws1/cx_rsdresourcenotfoundex.
MESSAGE 'Statement not found or results not available.' TYPE 'I'.
CATCH /aws1/cx_rsdinternalserverex.
MESSAGE 'Internal server error.' TYPE 'I'.
ENDTRY.
Pour obtenir la liste complète des guides de développement du AWS SDK et des exemples de code, consultezUtiliser ce service avec un AWS Kit SDK. Cette rubrique comprend également des informations sur le démarrage et sur les versions précédentes du kit SDK.