SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG
Snowflake Open Catalog에 알림을 보내 Open Catalog에서 Snowflake 관리형 Apache Iceberg™ 테이블을 최신 테이블 변경 사항으로 업데이트하고, 알림이 성공적으로 전송되었는지 여부를 실패에 대한 오류 코드와 오류 메시지(해당하는 경우)와 함께 반환해요.
알림은 Open Catalog에 동기화되는 Snowflake 관리형 Iceberg 테이블을 최신 테이블 변경 사항으로 유지하기 위한 메커니즘이에요. 테이블이 Open Catalog에 동기화되면 알림이 지속적으로 전송돼요. 그러나 테이블에 알림이 전송되지 않는 경우 이 함수를 호출하고 반환된 오류 메시지를 사용해 동기화 실패 원인을 진단할 수 있어요.
출처: Snowflake SQL Reference - SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG
본문
구문
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG( '<domain>' , '<entity_name>' [ , '<notification_type>'] [ , '<catalog_sync_integration_name>'] )
인자
필수:
-
알림을 보낼 도메인이에요. 다음 도메인 중 하나를 지정할 수 있어요.
- DATABASE
- SCHEMA
- TABLE
예를 들어 특정 스키마 아래의 테이블에 알림을 보내려면 SCHEMA를 지정해요.
-
주어진 도메인의 엔티티 이름이에요. 주어진 도메인에 따라 entity_name은 데이터베이스, 스키마 또는 테이블의 이름을 지정해요.
선택:
- Open Catalog에 보낼 알림 유형이에요. 다음 유형의 알림 중 하나를 지정할 수 있어요.
UPDATE: Open Catalog에서 테이블의 상태를 업데이트해요. 테이블이 아직 존재하지 않으면 Open Catalog가 테이블을 만들어요.DROP: Open Catalog에서 테이블이 존재하면 테이블을 제거해요.- 기본값: UPDATE
- 알림 범위를 지정할 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 객체를 반환해요.
| Property | Description |
|---|---|
| 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'))));
icebergTable이라는 이름이고 my_catalog_sync_integration 카탈로그 통합을 통해 Open Catalog에 동기화되는 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'))));