カテゴリ:

システム関数 (システム制御)

SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG

Snowflakeオープンカタログ に通知を送信して、 Open Catalog のSnowflake管理の Apache Iceberg™ テーブル を最新のテーブル変更で更新し、通知が正常に送信されたかどうかを、失敗した場合はエラーコードとエラーメッセージとともに返します。

通知は、 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_typeUPDATE または DROP を指定する必要があります。

デフォルト: 引数が指定されていない場合、カタログ同期統合に関係なく、必要な引数で指定されたドメイン内のすべてのテーブルに通知が送信されます。例えば、 domainSCHEMA を、 entity_nameschema1 を指定し、 catalog_sync_integration_name にデフォルトを使用した場合、 schema1 以下のすべてのテーブルに通知されます。この引数は、通知の範囲を単一のカタログ同期統合に限定するために使用されます。

戻り値

この関数は、以下に説明するプロパティを持つ JSON オブジェクトを返します。

プロパティ

説明

TABLENAME

通知が送信されたテーブル名。完全修飾テーブル名(Database.Schema.Table)として表示されます。

NOTIFICATIONSTATUS

通知のステータス。通知が Open Catalog に正常に送信された場合は TRUE を、正常に送信されなかった場合は FALSE を返します。

ERRORCODE

通知送信失敗のエラーコード。通知が正常に送信された場合、このフィールドは空です。

ERRORMESSAGE

通知が失敗した理由を説明するエラーメッセージ。通知が正常に送信された場合、このフィールドは空です。

使用上の注意

domainentity_namenotification_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

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'))));
Copy