Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、ブログ記事
マテリアライズドビューでのユーザー定義関数 (UDF) の使用
Amazon Redshift マテリアライズドビューではスカラー UDF を使用できます。これらを Python または SQL で定義し、マテリアライズドビュー定義で参照します。
マテリアライズドビューでの UDF の参照
以下の手順は、マテリアライズドビュー定義で簡単な算術比較を行う UDF を使用する方法を示しています。
マテリアライズドビュー定義で使用するテーブルを作成します。
CREATE TABLE base_table (a int, b int);Python で、整数が比較整数より大きいかどうかを示すブール値を返すスカラーユーザー定義関数を作成します。
CREATE OR REPLACE FUNCTION udf_python_bool(x1 int, x2 int) RETURNS bool IMMUTABLE AS $$ return x1 > x2 $$ LANGUAGE plpythonu;オプションで、SQL で機能的に類似した UDF を作成し、それを使用して最初の UDF と結果を比較できます。
CREATE OR REPLACE FUNCTION udf_sql_bool(int, int) RETURNS bool IMMUTABLE AS $$ select $1 > $2; $$ LANGUAGE SQL;作成したテーブルから選択し、UDF を参照するマテリアライズドビューを作成します。
CREATE MATERIALIZED VIEW mv_python_udf AS SELECT udf_python_bool(a, b) AS a FROM base_table;オプションで、SQL UDF を参照するマテリアライズドビューを作成できます。
CREATE MATERIALIZED VIEW mv_sql_udf AS SELECT udf_sql_bool(a, b) AS a FROM base_table;テーブルにデータを追加し、マテリアライズドビューを更新します。
INSERT INTO base_table VALUES (1,2), (1,3), (4,2);REFRESH MATERIALIZED VIEW mv_python_udf;オプションで、SQL UDF を参照するマテリアライズドビューを更新できます。
REFRESH MATERIALIZED VIEW mv_sql_udf;マテリアライズドビューからデータをクエリします。
SELECT * FROM mv_python_udf ORDER BY a;このクエリの結果は以下のようになります。
a ----- false false true列
aの値 (4) は列bの値 (2) より大きいため、これは最後の値のセットに対してtrueを返します。-
オプションで、SQL UDF を参照するマテリアライズドビューをクエリできます。SQL 関数の結果は、Python バージョンの結果と一致します。
SELECT * FROM mv_sql_udf ORDER BY a;このクエリの結果は以下のようになります。
a ----- false false trueこれは、比較する最後の値のセットについて
trueを返します。 CASCADE を指定した DROP ステートメントを使用して、ユーザー定義関数とそれを参照するマテリアライズドビューを削除します。
DROP FUNCTION udf_python_bool(int, int) CASCADE;DROP FUNCTION udf_sql_bool(int, int) CASCADE;