プロバイダー・アカウントにイベント・テーブルを設定し、管理します。

このトピックでは、プロバイダーがイベントテーブルを設定し、アプリのイベント共有を管理する方法について説明します。

各地域のプロバイダー組織にイベントテーブルを設置する

コンシューマーが共有するログ・メッセージとトレース・イベントを収集するために、プロバイダーは以下を実行してイベント・テーブルを設定する必要があります:

  1. イベントアカウントとしてのアカウントを設定する

  2. イベント・アカウント にイベント・テーブルを作成する。

  3. イベントアカウント で、イベントテーブルをアクティブなイベントテーブルとして設定する。

重要

コンシューマ^がアプリをインストールする前に、プロバイダーがアプリがインストールされるリージョン内にイベントアカウントとアクティブなイベントテーブルを持っていない場合、トレースイベントとログメッセージは破棄されます。

イベントアカウントとしてのアカウントを設定する

共有ログやイベントを保存するには、プロバイダーはイベントテーブルを保持するアカウントを選択する必要があります。プロバイダーがアクセスできる任意のアカウントを選択できます。ただし、組織で複数のプロバイダーがアプリケーションパッケージを公開している場合は、コンシューマーからの共有イベントを保存する、専用のSnowflakeアカウントの使用を検討してください。

共有イベントを保存するために使用されるアカウントには、次の制限が適用されます。

  • イベントを保存するために使用するアカウントとしてアカウントを設定するには、 ORGADMIN ロールを使用する必要があります。

  • このアカウントには、アクティブ イベントテーブルが必要です。

  • 以下のいずれかに該当するアカウントは指定できません。

    • ロックまたは凍結アカウント。

    • リーダーアカウント。

    • 試用アカウント。

    • Snowflake管理アカウント。

注釈

プロバイダーは、コンシューマーがアプリケーションをインストールしたのと同じリージョンでのみ、ログと共有イベントを収集できます。プロバイダーは、コンシューマーがアプリケーションのイベント共有を構成するすべてのリージョンで共有イベントを保存するためのアカウントを設定する必要があります。

あるリージョンのイベントアカウントとしてアカウントを設定するには、次の例で示すように SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION システム関数を呼び出します。

SELECT SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

条件:

snowflake_region

アカウントがあるSnowflakeリージョンの名前(例: AWS_US_WEST_2, AWS_US_EAST_1)を指定します。

region_group

リージョングループ(例: PUBLIC)を指定します。詳細については、 リージョングループ をご参照ください。

account_name

アカウント名を指定します。指定したリージョンにイベントアカウントとして別のアカウントがすでに設定されている場合、このコマンドを実行すると、イベントアカウントはここで指定したアカウントに変更されます。

イベント・アカウントにイベント・テーブルを作成する

イベントテーブルを作成するには、次の例に示すように CREATE EVENT TABLE コマンドを実行します。

CREATE EVENT TABLE event_db.event_schema.my_event_table;
Copy

このコマンドは、イベント・テーブルを含むデータベースとスキーマを指定します。

イベント・テーブルをアクティブ・イベント・テーブルとして設定する

アカウントは複数のイベントテーブルを持つことができますが、一度にSnowflakeアカウントのアクティブなイベントテーブルとして設定できるのは1つだけです。アクティブなイベントテーブルがないと、コンシューマーが共有するログメッセージとトレースイベントは破棄されます。

イベントテーブルを作成した後、 ALTER ACCOUNT ... SET EVENT_TABLE を使用して、イベントテーブルがアカウントのアクティブテーブルであることを指定します。

ALTER ACCOUNT SET EVENT_TABLE=event_db.event_schema.my_event_table;
Copy

イベントアカウントとしてのアカウントを設定する

リージョンのイベントアカウントの設定を解除するには、 SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION システム関数を呼び出します。

SELECT SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

条件:

snowflake_region

アカウントがあるSnowflakeリージョンの名前(例: AWS_US_WEST_2)を指定します。

region_group

リージョングループ(例: PUBLIC)を指定します。

account_name

アカウント名を指定します。

組織内のイベントアカウントを表示する

プロバイダー組織のイベントアカウントを表示するには、 SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS システム関数を呼び出します:

SELECT SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS()
Copy

注釈

この関数を呼び出すには、 ORGADMIN ロールを使用する必要があります。

このシステム関数は、組織内にあるイベントアカウントのリストを含む JSON 形式の文字列を返します。メタデータがすべてのリージョンに伝搬するのに時間がかかるため、この関数は、ユーザが組織のイベントアカウントを設定または解除した後、最新のイベントアカウントを表示するまでに少し遅延がある場合があります。

アプリケーションパッケージで定義されたログレベルおよびトレースイベントレベルを表示する

次の例に示すように、アプリケーションパッケージで定義されたアプリケーションバージョンのログレベルを表示するには、 SHOW VERSIONS コマンドを使用します。

SHOW VERSIONS
  IN APPLICATION PACKAGE HelloSnowflake;
Copy

イベントテーブルでログおよびイベントを表示する

イベントテーブルに格納されたログとイベントを表示するには、次の例に示すように、 SELECT コマンドを使用します。

SELECT * FROM EVENT_DB.EVENT_SCHEMA.MY_EVENT_TABLE
Copy

イベント・テーブルのクエリの詳細については、以下をご参照ください:

イベントテーブルのカラムについては、 イベントテーブル列 をご参照ください。

プロバイダーが利用できる共有イベント情報

次のセクションでは、Native Apps Frameworkがプロバイダーと共有する情報について説明します。

プロバイダーと共有するアプリケーション イベント コンテキスト

プロバイダーが共有イベントのソースを容易に識別できるように、プロバイダーと共有される際、以下のフィールドがイベントテーブルの RESOURCE_ATTRIBUTES 列に入力されます。

  • snow.application.package.name

  • snow.application.consumer.organization

  • snow.application.consumer.name

  • snow.listing.name

  • snow.listing.global_name

プロバイダーと共有されないフィールド

コンシューマー情報を保護するため、 RESOURCE_ATTRIBUTES 列の以下のフィールドはプロバイダーと共有されません。

  • snow.database.id

  • snow.database.name

  • snow.schema.id

  • snow.executable.id

  • snow.owner.name

  • snow.owner.id

  • snow.warehouse.name

  • snow.warehouse.id

  • snow.query.id

  • snow.session.id

  • snow.session.role.primary.name

  • snow.session.role.primary.id

  • snow.user.name

  • snow.user.id

  • db.user

snow.database.name および snow.query.id フィールドをプロバイダーと直接共有する代わりに、Snowflakeはこれら2つのフィールドのハッシュ値(SHA-1)を以下のフィールドとして共有します。

  • snow.database.hash

  • snow.query.hash

Snowflakeは、これらの属性をマスクするために使用される SHA-1関数 を提供します。コンシューマーは、データベース名とクエリIDのハッシュ値を計算し、プロバイダーに問い合わせる際の参照値として使用できます。