카테고리:

시스템 함수 (시스템 제어)

SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG

Open Catalog 에서 Snowflake가 관리하는 Apache Iceberg™ 테이블 을 최신 테이블 변경 사항으로 업데이트하라는 알림을 Snowflake Open Catalog 에 보내고, 오류 코드와 실패에 대한 오류 메시지(해당되는 경우)와 함께 알림이 성공적으로 전송되었는지 여부를 반환합니다.

알림은 Open Catalog 로 동기화된 Snowflake 관리 Iceberg 테이블을 최신 테이블 변경 사항으로 업데이트된 상태로 유지하는 메커니즘입니다. 테이블이 Open Catalog 에 동기화되면 알림이 지속적으로 해당 테이블로 전송됩니다. 그러나 알림이 테이블에 전송되지 않는 경우 이 함수를 호출하여 함수에서 반환하는 오류 메시지를 사용하여 동기화 실패의 원인을 진단할 수 있습니다.

구문

SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG( '<domain>' , '<entity_name>' [ , '<notification_type>'] [ , '<catalog_sync_integration_name>'] )
Copy

인자

필수:

domain

알림을 보낼 도메인입니다. 다음 도메인 중 하나를 지정할 수 있습니다.

  • DATABASE

  • SCHEMA

  • TABLE

예를 들어, 특정 스키마에 속한 테이블에 알림을 보내려면 SCHEMA 를 지정합니다.

entity_name

주어진 domain 에 대한 엔터티의 이름입니다. 주어진 도메인에 따라 entity_name 은 데이터베이스, 스키마 또는 테이블의 이름을 지정합니다.

선택 사항:

notification_type

Open Catalog 에 보낼 알림의 유형입니다. 다음 알림 유형 중 하나를 지정할 수 있습니다.

  • UPDATE: Open Catalog 의 테이블 상태를 업데이트합니다. 테이블이 아직 없으면 Open Catalog 가 테이블을 생성합니다.

  • DROP: Open Catalog 에 테이블이 있으면 삭제합니다.

기본값: UPDATE

catalog_sync_integration_name

알림 범위를 지정할 Open Catalog 의 카탈로그 통합 이름입니다. 특정 테이블에 대한 CATALOG_SYNC 매개 변수가 이 카탈로그 통합으로 설정된 경우에만 알림이 해당 테이블로 전송됩니다.

중요

catalog_sync_integration_name 의 값을 지정해야 하는 경우 기본값을 사용하려고 notification_type 을 비워두면 안 됩니다. 즉, 기본값을 사용하는 대신 catalog_sync_integration_name 의 값을 지정해야 하는 경우 먼저 notification_type 에 대해 UPDATE 또는 DROP 을 지정해야 합니다.

기본값: 인자가 지정되지 않으면 카탈로그 동기화 통합과 관계없이 필수 인자로 지정된 도메인에 있는 모든 테이블에 알림이 전송됩니다. 예를 들어, domain 에는 SCHEMA, entity_name 에는 schema1 을 지정하고 catalog_sync_integration_name 에는 기본값을 사용하는 경우 schema1 아래의 모든 테이블에 알림이 전송됩니다. 이 인자는 알림 범위를 단일 카탈로그 동기화 통합으로 제한하는 데 사용됩니다.

반환

이 함수는 아래에 설명된 속성이 있는 JSON 오브젝트를 반환합니다.

속성

설명

TABLENAME

알림이 전송된 테이블 이름입니다. 이는 정규화된 테이블 이름(Database.Schema.Table)으로 표시됩니다.

NOTIFICATIONSTATUS

알림의 상태입니다. 알림이 Open Catalog 로 성공적으로 전송되면 TRUE 를 반환하고, 성공적으로 전송되지 않으면 FALSE 를 반환합니다.

ERRORCODE

알림 전송 실패에 대한 오류 코드입니다. 알림이 성공적으로 전송된 경우 이 필드는 비어 있습니다.

ERRORMESSAGE

알림이 실패한 이유를 설명하는 오류 메시지입니다. 알림이 성공적으로 전송된 경우 이 필드는 비어 있습니다.

사용법 노트

domain, entity_name, notification_type, catalog_sync_integration_name 은 모두 문자열 데이터 타입이므로, 각각을 작은따옴표로 묶어야 합니다.

Snowflake의 testSchema 스키마에 속하고 Open Catalog 와 동기화된 Open Catalog 의 Snowflake 관리 Iceberg 테이블에 UPDATE 알림을 보냅니다.

SELECT VALUE[0]::STRING AS tableName,
       VALUE[1]::BOOLEAN notificationStatus,
       VALUE[2]::STRING errorCode,
       VALUE[3]::STRING errorMessage
  FROM TABLE(FLATTEN(PARSE_JSON(
    SELECT SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG(
      'SCHEMA',
      'testSchema'))));
Copy

my_catalog_sync_integration 카탈로그 통합을 통해 Open Catalog 와 동기화되고 icebergTable 로 명명된 Open Catalog 의 모든 Snowflake 관리 Iceberg 테이블에 DROP 알림을 보냅니다.

SELECT VALUE[0]::STRING AS tableName,
       VALUE[1]::BOOLEAN notificationStatus,
       VALUE[2]::STRING errorCode,
       VALUE[3]::STRING errorMessage
   FROM TABLE(FLATTEN(PARSE_JSON(
     SELECT SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG(
       'TABLE',
       'icebergTable',
       'DROP',
       'my_catalog_sync_integration'))));
Copy