Tipos de datos de UDF de Python
Las UDF de Python pueden utilizar cualquier tipo de datos estándar de Amazon Redshift para los argumentos de entrada y el valor de retorno de la función. Además de los tipos de datos estándar, las UDF admiten el tipo de datos ANYELEMENT, que Amazon Redshift convierte de forma automática a un tipo de datos estándar en función de los argumentos proporcionados durante el tiempo de ejecución. Las UDF escalares pueden devolver un tipo de datos de ANYELEMENT. Para obtener más información, consulte Tipo de datos ANYELEMENT.
Durante la ejecución, Amazon Redshift convierte los argumentos de tipos de datos de Amazon Redshift a tipos de datos de Python para su procesamiento. Luego, convierte el valor de retorno del tipo de datos de Python al tipo de datos de Amazon Redshift correspondiente. Para obtener más información acerca de los tipos de datos de Amazon Redshift, consulte Tipos de datos.
En la siguiente tabla, se relacionan los tipos de datos de Amazon Redshift y los de Python.
Tipos de datos de Amazon Redshift | Tipo de datos de Python |
---|---|
smallint integer bigint short long |
int |
decimal o numeric |
decimal |
double real |
float |
boolean |
bool |
char varchar |
cadena |
Marca de tiempo |
datetime |
Tipo de datos ANYELEMENT
ANYELEMENT es un tipo de datos polimórfico. Esto significa que, si una función se declara con ANYELEMENT para el tipo de datos de un argumento, la función puede aceptar cualquier tipo de datos estándar de Amazon Redshift como entrada para ese argumento cuando se llama a la función. El argumento ANYELEMENT se establece según el tipo de datos que, de hecho, pasan a él cuando se solicita la función.
Si una función usa distintos tipos de datos ANYELEMENT, todos deben resolverse según el mismo tipo de datos real cuando se solicita la función. Todos los tipos de datos de los argumentos ANYELEMENT se establecen según el tipo de datos real del primer argumento que pasa a un ANYELEMENT. Por ejemplo, una función declarada como f_equal(anyelement, anyelement)
tomará dos valores de entrada cualquiera, siempre que sean del mismo tipo de datos.
Si el valor de retorno de una función se declara como ANYELEMENT, al menos un argumento de entrada debe ser en ANYELEMENT. El tipo de datos real del valor de retorno es el mismo que el tipo de datos real proporcionado para el argumento de entrada ANYELEMENT.