NOTIFICATION_HISTORY
NOTIFICATION_HISTORY
NOTIFICATION_HISTORY 테이블 함수는 Snowflake를 통해 전송된 알림의 이력을 쿼리하는 데 사용할 수 있어요.
본문
이 테이블 함수는 Snowflake를 통해 전송된 알림의 이력을 쿼리하는 데 사용할 수 있어요. 이 알림에는 다음이 포함돼요:
- 태스크(task)의 오류에 대한 알림
- Snowpipe의 오류에 대한 알림
SYSTEM$SEND_EMAIL또는SYSTEM$SEND_SNOWFLAKE_NOTIFICATION을 호출하여 전송한 알림
반환되는 행은 다음을 나타내요:
- 처리 중인 요청
- 알림 전송에 실패한 시도
- 성공적으로 전송된 알림
STATUS 열은 각 행이 무엇을 나타내는지 표시해요. 함수의 출력 예제를 참조해요.
구문 (Syntax)
NOTIFICATION_HISTORY(
[ START_TIME => <constant_expr> ]
[, END_TIME => <constant_expr> ]
[, INTEGRATION_NAME => '<string>' ]
[, RESULT_LIMIT => <integer> ] )
인자 (Arguments)
모든 인자는 선택 사항이에요.
- START_TIME=> constant_expr , END_TIME=> constant_expr — 알림이 전송된 시간 구간(
TIMESTAMP_LTZ형식)이에요.START_TIME을 지정하지 않으면END_TIME이전 24시간부터 범위가 시작돼요.END_TIME을 지정하지 않으면 기본값은CURRENT_TIMESTAMP예요. 최대 시간 구간은 14일이에요. - INTEGRATION_NAME => 'string' — 알림과 연결된 통합의 정규화된 이름이에요. 이 인자를 생략하면 함수는 모든 알림을 반환해요. 기본값: 빈 문자열.
- RESULT_LIMIT => integer — 함수가 반환하는 최대 행 수를 지정하는 숫자예요. 범위: 1 ~ 10000, 기본값: 100.
출력 (Output)
함수는 다음 열을 반환해요:
| 열 이름 (Column Name) | 데이터 타입 (Data Type) | 설명 (Description) |
|---|---|---|
| CREATED | TIMESTAMP_LTZ | 알림이 생성된 타임스탬프 |
| PROCESSED | TIMESTAMP_LTZ | 알림 전송을 마지막으로 시도한 타임스탬프 |
| MESSAGE_SOURCE | VARCHAR | 알림을 생성한 객체 또는 기능의 유형. 유효한 값: BUDGET(예산의 알림), TASK(태스크의 알림), SNOWPIPE(Snowpipe의 알림), STORED_PROCEDURE(SYSTEM$SEND_EMAIL 또는 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 저장 프로시저 호출로 전송된 이메일 알림) |
| INTEGRATION_NAME | VARCHAR | 이 알림에 사용된 통합의 이름 |
| STATUS | VARCHAR | 알림의 상태. 유효한 값: QUEUED(알림 전송 요청이 처리 중), SUCCESS(알림이 성공적으로 전송됨), RETRIABLE_FAILURE(알림 전송 시도가 실패했으며 시스템이 알림을 다시 전송할 것), FAILURE(여러 번의 알림 전송 시도가 실패했으며 더 이상 알림 전송 시도가 없을 것) |
| ERROR_MESSAGE | VARCHAR | 알림이 실패한 경우 실패 이유에 대한 세부 정보. 참고: 웹훅(webhook) 알림의 경우 이 열은 HTTP 응답 본문을 포함하며, 이는 민감한 데이터를 포함할 수 있어요. 이 데이터를 사용하기 전에 반드시 정리(sanitize)해요. |
| ID | VARCHAR | 알림 전송 요청의 고유 ID. Snowflake가 알림 전송에 실패하고 알림을 다시 전송하려 하면 함수는 각 시도에 대해 행을 반환해요. 각 시도의 행은 ID 열에 동일한 값을 가지지만 ATTEMPT 열에는 다른 값을 가져요. |
| ATTEMPT | INTEGER | 알림 전송을 시도한 횟수 |
| MESSAGE_SOURCE_INFO | OBJECT | 알림의 소스에 대한 정보를 포함하는 객체. 이 객체의 필드는 소스 유형에 따라 달라져요. 예산 알림의 경우 객체는 budget_id(예산 식별자), budget_name(예산 이름) 필드를 포함해요. 태스크 오류 알림의 경우 객체는 name(태스크 그래프 이름), graph_run_group_id(그래프 실행 식별자), attempt_number(이 태스크 실행을 시도한 횟수를 나타내는 정수) 필드를 포함해요. Snowpipe 오류 알림의 경우 객체는 파이프 이름을 지정하는 pipe_name 필드를 포함해요. SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 또는 SYSTEM$SEND_EMAIL 저장 프로시저 호출로 전송된 알림의 경우 객체는 저장 프로시저를 호출한 문의 ID를 지정하는 query_id 필드를 포함해요. |
사용 메모 (Usage notes)
ACCOUNTADMIN역할, 통합 소유자(즉 통합에 대한OWNERSHIP권한을 가진 역할) 또는 통합에 대한USAGE권한을 가진 역할에 대해서만 결과를 반환해요.- 정보 스키마 테이블 함수를 호출할 때 세션에 사용 중인
INFORMATION_SCHEMA스키마가 있어야 하거나 함수 이름이 정규화되어야 해요. 자세한 내용은 Snowflake Information Schema를 참조해요.
예제 (Examples)
함수 호출 예제
다음 예제는 이 함수를 호출하는 방법을 보여줘요:
가장 최근 알림 검색
지난 24시간 동안 생성된 가장 최근 알림을 검색해요:
SELECT * FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY());
시간 및 통합 이름별 알림 검색
my_integration이라는 통합을 사용하여 지난 1시간 동안 생성된 가장 최근 알림을 검색해요:
SELECT * FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
START_TIME=>DATEADD('hour',-1,CURRENT_TIMESTAMP()),
END_TIME=>CURRENT_TIMESTAMP(),
RESULT_LIMIT=>100,
INTEGRATION_NAME=>'my_integration'));
함수 출력 예제
두 번의 시도가 실패하고 세 번째 시도가 진행 중일 때의 출력 예제
이 예제는 출력에서 열의 하위 집합을 선택해요:
SELECT id, attempt, created, processed, status
FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY());
출력에는 하나의 알림을 전송하려는 시도를 나타내는 행이 포함돼요. 출력에서:
ID열은 전송 중인 알림을 식별해요.- 알림을 전송하기 위한 처음 두 번의 시도는 실패했지만 시스템이 알림을 다시 전송할 수 있어요(
STATUS열의 값RETRIABLE_FAILURE로 표시). STATUS열의 값QUEUED로 표시된 것처럼 세 번째 시도가 처리 중이에요.
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
| ID | ATTEMPT | CREATED | PROCESSED | STATUS |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
| 10ae695e-93c3 | 3 | 2023-12-05 15:10:15.194 -0800 | NULL | QUEUED |
| 10ae695e-93c3 | 2 | 2023-12-05 15:10:15.194 -0800 | 2023-12-05 15:11:21.443 -0800 | RETRIABLE_FAILURE |
| 10ae695e-93c3 | 1 | 2023-12-05 15:10:15.194 -0800 | 2023-12-05 15:10:21.443 -0800 | RETRIABLE_FAILURE |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
두 번의 시도가 실패하고 세 번째 시도가 성공할 때의 출력 예제
이 예제는 출력에서 열의 하위 집합을 선택해요:
SELECT id, attempt, created, processed, status
FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY());
출력에는 하나의 알림을 전송하려는 시도를 나타내는 행이 포함돼요. 출력에서:
ID열은 전송 중인 알림을 식별해요.- 알림을 전송하기 위한 처음 두 번의 시도는 실패했지만 시스템이 알림을 다시 전송할 수 있어요(
STATUS열의 값RETRIABLE_FAILURE로 표시). - 세 번째 시도는 성공했으며,
STATUS열의 값SUCCESS로 표시돼요.
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
| ID | ATTEMPT | CREATED | PROCESSED | STATUS |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
| 10ae695e-93c3 | 3 | 2023-12-05 15:10:15.194 -0800 | 2023-12-05 15:12:21.443 -0800 | SUCCESS |
| 10ae695e-93c3 | 2 | 2023-12-05 15:10:15.194 -0800 | 2023-12-05 15:11:21.443 -0800 | RETRIABLE_FAILURE |
| 10ae695e-93c3 | 1 | 2023-12-05 15:10:15.194 -0800 | 2023-12-05 15:10:21.443 -0800 | RETRIABLE_FAILURE |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
더 알아보기 (Learn more)
- 테이블 함수 (Table functions)
- 정보 스키마 (Snowflake Information Schema)
- 알림 함수 (Notification functions)