Menggunakan fungsi yang ditentukan pengguna (UDF) dalam tampilan terwujud - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan fungsi yang ditentukan pengguna (UDF) dalam tampilan terwujud

Anda dapat menggunakan UDF skalar dalam tampilan terwujud Amazon Redshift. Tentukan ini baik dalam python atau SQL dan referensikan mereka dalam definisi tampilan terwujud.

Mereferensikan UDF dalam tampilan yang terwujud

Prosedur berikut menunjukkan cara menggunakan UDF yang melakukan perbandingan aritmatika sederhana, dalam definisi tampilan terwujud.

  1. Buat tabel untuk digunakan dalam definisi tampilan terwujud.

    CREATE TABLE base_table (a int, b int);
  2. Buat fungsi skalar yang ditentukan pengguna dalam python yang mengembalikan nilai boolean yang menunjukkan apakah bilangan bulat lebih besar dari bilangan bulat perbandingan.

    CREATE OR REPLACE FUNCTION udf_python_bool(x1 int, x2 int) RETURNS bool IMMUTABLE AS $$ return x1 > x2 $$ LANGUAGE plpythonu;

    Secara opsional, buat UDF yang mirip secara fungsional dengan SQL, yang dapat Anda gunakan untuk membandingkan hasil dengan yang pertama.

    CREATE OR REPLACE FUNCTION udf_sql_bool(int, int) RETURNS bool IMMUTABLE AS $$ select $1 > $2; $$ LANGUAGE SQL;
  3. Buat tampilan terwujud yang memilih dari tabel yang Anda buat dan referensi UDF.

    CREATE MATERIALIZED VIEW mv_python_udf AS SELECT udf_python_bool(a, b) AS a FROM base_table;

    Secara opsional, Anda dapat membuat tampilan terwujud yang mereferensikan SQL UDF.

    CREATE MATERIALIZED VIEW mv_sql_udf AS SELECT udf_sql_bool(a, b) AS a FROM base_table;
  4. Tambahkan data ke tabel dan segarkan tampilan terwujud.

    INSERT INTO base_table VALUES (1,2), (1,3), (4,2);
    REFRESH MATERIALIZED VIEW mv_python_udf;

    Secara opsional, Anda dapat menyegarkan tampilan terwujud yang mereferensikan SQL UDF.

    REFRESH MATERIALIZED VIEW mv_sql_udf;
  5. Kueri data dari tampilan terwujud Anda.

    SELECT * FROM mv_python_udf ORDER BY a;

    Hasil kueri adalah sebagai berikut:

    a ----- false false true

    Ini mengembalikan true untuk set nilai terakhir karena nilai untuk kolom a (4) lebih besar dari nilai untuk kolom b (2).

  6. Secara opsional, Anda dapat menanyakan tampilan terwujud yang mereferensikan SQL UDF. Hasil untuk fungsi SQL cocok dengan hasil dari versi Python.

    SELECT * FROM mv_sql_udf ORDER BY a;

    Hasil kueri adalah sebagai berikut:

    a ----- false false true

    Ini mengembalikan true set nilai terakhir untuk dibandingkan.

  7. Gunakan pernyataan DROP dengan CASCADE untuk menghapus fungsi yang ditentukan pengguna dan tampilan terwujud yang mereferensikannya.

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