View a markdown version of this page

Kesalahan pencatatan dan peringatan di Python UDF - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

Kesalahan pencatatan dan peringatan di Python UDF

Anda dapat menggunakan modul logging Python untuk membuat pesan kesalahan dan peringatan yang ditentukan pengguna di UDF Anda. Setelah eksekusi kueri, Anda dapat menanyakan SVL_UDF_LOG tampilan sistem untuk mengambil pesan yang dicatat.

catatan

Pencatatan UDF mengkonsumsi sumber daya cluster dan dapat mempengaruhi kinerja sistem. Sebaiknya terapkan logging hanya untuk pengembangan dan pemecahan masalah.

Selama eksekusi query, log handler menulis pesan ke tampilan sistem SVL_UDF_LOG, bersama dengan nama fungsi, node, dan irisan yang sesuai. Penangan log menulis satu baris ke SVL_UDF_LOG per pesan, per irisan. Pesan dipotong menjadi 4096 byte. Log UDF dibatasi hingga 500 baris per irisan. Ketika log penuh, penangan log membuang pesan lama dan menambahkan pesan peringatan ke SVL_UDF_LOG.

catatan

Penangan log Amazon Redshift UDF lolos dari karakter newlines (\n), pipe (|), dan backslash () dengan karakter backslash (\). \

Secara default, level log UDF diatur ke PERINGATAN. Pesan dengan tingkat log WARNING, ERROR, dan CRITICAL dicatat. Pesan dengan tingkat keparahan yang lebih rendah INFO, DEBUG, dan NOTSET diabaikan. Untuk mengatur level log UDF, gunakan metode logger Python. Misalnya, berikut ini menetapkan tingkat log ke INFO.

logger.setLevel(logging.INFO)

Untuk informasi selengkapnya tentang menggunakan modul logging Python, lihat Fasilitas logging untuk Python dalam dokumentasi Python.

Contoh berikut membuat fungsi bernama f_pyerror yang mengimpor modul logging Python, membuat instance logger, dan mencatat kesalahan.

CREATE OR REPLACE FUNCTION f_pyerror() RETURNS INTEGER VOLATILE AS $$ import logging logger = logging.getLogger() logger.setLevel(logging.INFO) logger.info('Your info message here') return 0 $$ language plpythonu;

Contoh berikut menanyakan SVL_UDF_LOG untuk melihat pesan yang dicatat dalam contoh sebelumnya.

select funcname, node, slice, trim(message) as message from svl_udf_log; funcname | query | node | slice | message ------------+-------+------+-------+------------------ f_pyerror | 12345 | 1| 1 | Your info message here