

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs 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.

# SYS\_UDF\_LOG
<a name="SYS_UDF_LOG"></a>

Merekam pesan kesalahan dan peringatan yang ditentukan sistem yang dihasilkan selama eksekusi fungsi yang ditentukan pengguna (UDF). 

SYS\_UDF\_LOG hanya terlihat oleh pengguna super. Untuk informasi selengkapnya, lihat [Visibilitas data dalam tabel dan tampilan sistem](cm_chap_system-tables.md#c_visibility-of-data).

## Kolom tabel
<a name="SYS_UDF_LOG-table-rows"></a>


| Nama kolom | Jenis data | Deskripsi | 
| --- | --- | --- | 
| query\_id | bigint | Pengidentifikasi kueri. | 
| function\_name | text | Nama fungsi yang ditentukan pengguna. | 
| record\_time | timestamp | Waktu rekaman itu dibuat. | 
| urutan | integer | Urutan pesan log tunggal. | 
| pesan | text | Teks pesan log. | 

## Kueri Sampel
<a name="SYS_UDF_LOG-sample-queries"></a>

Contoh berikut menunjukkan bagaimana UDFs menangani kesalahan yang ditentukan sistem. Blok pertama menunjukkan definisi untuk fungsi UDF yang mengembalikan kebalikan dari argumen. Ketika Anda menjalankan fungsi dan memberikan 0 sebagai argumen Anda, fungsi mengembalikan kesalahan. Pernyataan terakhir mengembalikan pesan kesalahan login SYS\_UDF\_LOG.

```
-- Create a function to find the inverse of a number.
CREATE OR REPLACE FUNCTION f_udf_inv(a int) 

RETURNS float 

IMMUTABLE AS $$return 1/a 

$$ LANGUAGE plpythonu; 

-- Run the function with 0 to create an error.
Select f_udf_inv(0); 

-- Query SYS_UDF_LOG to view the message.
Select query_id, record_time, message::varchar from sys_udf_log; 


query_id    |    record_time              |                 message
----------+----------------------------+-------------------------------------------------------
2211        | 2023-08-23 15:53:11.360538 |  ZeroDivisionError: integer division or modulo by zero line 2, in f_udf_inv\n return 1/a\n
```

Contoh berikut menambahkan logging dan pesan peringatan ke UDF sehingga operasi pembagian dengan nol menghasilkan pesan peringatan alih-alih berhenti dengan pesan kesalahan.

```
-- Create a function to find the inverse of a number and log a warning if you input 0.
CREATE OR REPLACE FUNCTION f_udf_inv_log(a int)
  RETURNS float IMMUTABLE
 AS $$ 
  import logging
  logger = logging.getLogger() #get root logger
  if a==0:
    logger.warning('You attempted to divide by zero.\nReturning zero instead of error.\n') 
    return 0
  else:
     return 1/a
$$ LANGUAGE plpythonu;

-- Run the function with 0 to trigger the warning.
Select f_udf_inv_log(0);

-- Query SYS_UDF_LOG to view the message.
Select query_id, record_time, message::varchar from sys_udf_log;

 query_id |        record_time         |                                    message
----------+----------------------------+-------------------------------------------------------------------------------
     0   | 2023-08-23 16:10:48.833503 | WARNING: You attempted to divide by zero.\nReturning zero instead of error.\n
```