

 Amazon Redshift tidak akan lagi mendukung pembuatan UDF Python baru mulai Patch 198. UDF Python yang ada akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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
<a name="materialized-view-UDFs"></a>

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

## Merujuk UDF dalam tampilan yang terwujud
<a name="materialized-view-UDFs-examples"></a>

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);
   ```

1. 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;
   ```

1. 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;
   ```

1. 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;
   ```

1. 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).

1. 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.

1. 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;
   ```