Python UDF データ型
Python UDF の入力引数および戻り値には標準の Amazon Redshift データ型を使用できます。標準のデータ型に加えて、UDF ではデータ型 ANYELEMENT をサポートします。これは、Amazon Redshift が実行時に提供される引数に基づいて標準のデータ型に自動的に変換します。スカラー UDF は、ANYELEMENT のデータ型を返すことができます。詳細については、「ANYELEMENT データ型」を参照してください。
実行中に、Amazon Redshift は、処理を行うために引数を Amazon Redshift データ型から Python データ型に変換します。次に、戻り値を Python データ型から対応する Amazon Redshift データ型に変換します。Amazon Redshift のデータ型の詳細については、「データ型」を参照してください。
次の表は Amazon Redshift データ型と Python データ型のマッピングを示しています。
Amazon Redshift のデータ型 | Python データ型 |
---|---|
smallint integer bigint short long |
int |
decimal または numeric |
decimal |
double real |
float |
boolean |
ブール |
char varchar |
文字列 |
timestamp |
datetime |
ANYELEMENT データ型
ANYELEMENT は、ポリモーフィックなデータ型です。引数のデータ型として ANYELEMENT を使用して関数が宣言されている場合、その関数は、呼び出されたときに、標準の Amazon Redshift データ型をその引数の入力として受け入れることができます。ANYELEMENT 引数は、関数が呼び出されたときに、それに実際に渡されるデータ型に設定されます。
1 つの関数が複数の ANYELEMENT データ型を使用する場合、これらのデータ型のすべてが、関数が呼び出されたときに、同一の実際のデータ型に解決される必要があります。すべての ANYELEMENT 引数データ型が、ANYELEMENT に最初に渡される引数の実際のデータ型に設定されます。たとえば、f_equal(anyelement, anyelement)
として宣言されている関数は、これら 2 つの入力値が同じデータ型である限り、両方の入力値をとります。
関数の戻り値が ANYELEMENT として宣言されている場合は、少なくとも 1 つの入力引数が ANYELEMENT である必要があります。戻り値の実際のデータ型は、ANYELEMENT 入力引数に指定されている実際のデータ型と同じになります。