NOTIFICATION_HISTORY

NOTIFICATION_HISTORY

NOTIFICATION_HISTORY 테이블 함수는 Snowflake를 통해 전송된 알림의 이력을 쿼리하는 데 사용할 수 있어요.

출처: NOTIFICATION_HISTORY

본문

이 테이블 함수는 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)