マテリアライズドビューでのユーザー定義関数 (UDF) の使用 - Amazon Redshift

マテリアライズドビューでのユーザー定義関数 (UDF) の使用

Amazon Redshift マテリアライズドビューではスカラー UDF を使用できます。これらを Python または SQL で定義し、マテリアライズドビュー定義で参照します。

マテリアライズドビューでの UDF の参照

以下の手順は、マテリアライズドビュー定義で簡単な算術比較を行う UDF を使用する方法を示しています。

  1. マテリアライズドビュー定義で使用するテーブルを作成します。

    CREATE TABLE base_table (a int, b int);
  2. 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;
  3. 作成したテーブルから選択し、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;
  4. テーブルにデータを追加し、マテリアライズドビューを更新します。

    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;
  5. マテリアライズドビューからデータをクエリします。

    SELECT * FROM mv_python_udf ORDER BY a;

    このクエリの結果は以下のようになります。

    a ----- false false true

    a の値 (4) は列 b の値 (2) より大きいため、これは最後の値のセットに対して true を返します。

  6. オプションで、SQL UDF を参照するマテリアライズドビューをクエリできます。SQL 関数の結果は、Python バージョンの結果と一致します。

    SELECT * FROM mv_sql_udf ORDER BY a;

    このクエリの結果は以下のようになります。

    a ----- false false true

    これは、比較する最後の値のセットについて true を返します。

  7. CASCADE を指定した DROP ステートメントを使用して、ユーザー定義関数とそれを参照するマテリアライズドビューを削除します。

    DROP FUNCTION udf_python_bool(int, int) CASCADE;
    DROP FUNCTION udf_sql_bool(int, int) CASCADE;