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
Tipi di dati delle funzioni definite dall'utente Python
Le funzioni definite dall'utente Python possono usare qualsiasi tipo di dati di Amazon Redshift standard per gli argomenti di input e il valore restituito della funzione. Oltre ai tipi di dati standard, le funzioni definite dall'utente supportano il tipo di dati ANYELEMENT, convertito automaticamente da Amazon Redshift in un tipo di dati standard in base agli argomenti specificati in fase di runtime. Le funzioni definite dall'utente scalari possono restituire un tipo di dati ANYELEMENT. Per ulteriori informazioni, consultare Tipo di dati ANYELEMENT.
Durante l'esecuzione, Amazon Redshift converte gli argomenti da tipi di dati Amazon Redshift a tipi di dati Python per l'elaborazione. Quindi converte il valore restituito dal tipo di dati Python al tipo di dati Amazon Redshift corrispondente. Per ulteriori informazioni sui tipi di dati di Amazon Redshift, consultare Tipi di dati.
La tabella seguente indica la mappatura dei tipi di dati Amazon Redshift ai tipi di dati Python.
| Tipo di dati di Amazon Redshift | Tipo di dati Python |
|---|---|
|
smallint integer bigint short Long |
int |
decimal o numeric |
decimal |
|
double real |
float |
booleano |
bool |
char varchar |
string |
timestamp |
datetime |
Tipo di dati ANYELEMENT
ANYELEMENT è un tipo di dati polimorfico. Ciò significa che se una funzione viene dichiarata usando ANYELEMENT come tipo di dati di un argomento, la funzione può accettare qualsiasi tipo di dati Amazon Redshift standard come input per l'argomento quando viene chiamata. L'argomento ANYELEMENT viene impostato sul tipo di dati effettivamente passato all'argomento quando viene chiamata la funzione.
Se una funzione usa più tipi di dati ANYELEMENT, questi devono tutti essere risolti nello stesso tipo di dati effettivo quando viene chiamata la funzione. Tutti i tipi di dati dell'argomento ANYELEMENT sono impostati sull'effettivo tipo di dati del primo argomento passato a ANYELEMENT. Ad esempio, una funzione dichiarata come f_equal(anyelement, anyelement) accetta uno qualsiasi tra due valori di input, purché abbiano lo stesso tipo di dati.
Se il valore restituito di una funzione viene dichiarato come ANYELEMENT, almeno un argomento di input deve essere ANYELEMENT. Il tipo di dati effettivo per il valore restituito sarà lo stesso del tipo di dati effettivo specificato per l'argomento di input ANYELEMENT.