Tipi di dati delle funzioni definite dall'utente Python - Amazon Redshift

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.