SVL_UDF_LOG - Amazon Redshift

SVL_UDF_LOG

사용자 정의 함수(UDF)를 실행하는 중에 생성되는 시스템 정의 오류 및 경고 메시지를 기록합니다.

SVL_UDF_LOG는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.

이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 SYS_UDF_LOG에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.

테이블 열

열 명칭 데이터 유형 설명
쿼리 bigint 쿼리 ID. 이 ID를 사용하여 다양한 다른 시스템 테이블 및 보기를 조인할 수 있습니다.
message message 함수에 의해 생성되는 메시지.
생성 완료 타임스탬프 로그가 생성된 시간.
traceback char(4096) 사용 가능한 경우, 이 값은 UDF에 대한 스택 트레이스백을 제공합니다. 자세한 내용을 보려면 Python Standard Library의 traceback 섹션을 참조하세요.
funcname character(256) 실행 중인 UDF의 이름.
노드 정수 메시지가 생성된 노드.
slice 정수 메시지가 생성된 조각.
seq 정수 조각에서의 메시지 시퀀스.

샘플 쿼리

다음 예는 UDF가 시스템 정의 오류를 처리하는 방법을 보여 줍니다. 첫 번째 블록은 인수의 역을 반환하는 UDF 함수의 정의를 보여 줍니다. 두 번째 블록에서처럼 함수를 실행하고 0개의 인수를 제공하면 함수가 오류를 반환합니다. 세 번째 문은 SVL_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 a 0 argument to create an error Select f_udf_inv(0) from sales; -- Query SVL_UDF_LOG to view the message Select query, created, message::varchar from svl_udf_log; query | created | message -------+----------------------------+--------------------------------------------------------- 2211 | 2015-08-22 00:11:12.04819 | ZeroDivisionError: long division or modulo by zero\nNone

다음 예는 UDF에 로깅 및 경고 메시지를 추가하므로 0으로 나누기 연산은 오류 메시지와 함께 중단되는 대신 경고 메시지를 생성합니다.

-- Create a function to find the inverse of a number and log a warning 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;

다음 예제는 함수를 실행한 다음 SVL_UDF_LOG를 쿼리하여 메시지를 조회합니다.

-- Run the function with a 0 argument to trigger the warning Select f_udf_inv_log(0) from sales; -- Query SVL_UDF_LOG to view the message Select query, created, message::varchar from svl_udf_log; query | created | message ------+----------------------------+---------------------------------- 0 | 2015-08-22 00:11:12.04819 | You attempted to divide by zero. Returning zero instead of error.