イベントテーブルの概要¶
プロシージャや UDFs を含むSnowflakeオブジェクトがテレメトリーデータを出力すると、Snowflakeはそのデータをイベントテーブルに収集し、そのデータはクエリで利用可能となります。Snowflakeにはデフォルトでイベントテーブルが含まれていますが、新しく作成することもできます。
遠隔測定データを収集するには、アクティブなイベントテーブルがあり、データ収集を許可する 遠隔測定レベルを設定している 必要があります。まだアクティブなイベントテーブルがない場合、Snowflakeはデフォルトのイベントテーブルをアクティブなイベントテーブルにします。
遠隔測定データの収集にはコストがかかります。これらのコストを理解するには (あるいは、これらのコストを削減または回避するには) テレメトリーデータ収集の費用 を参照してください。
イベントテーブルとは何ですか?¶
イベント・テーブルは、あらかじめ定義された列のセットを持つ特別な種類のデータベーステーブルです。テーブルの 構造 は、遠隔測定データを扱うためのフレームワークである OpenTelemetry のデータモデルをサポートしています。イベントテーブルがアクティビティになると、Snowflakeはテーブル内のテレメトリデータを収集します。これには、Snowflake自身が生成するデータと、特定の APIs を使用してハンドラーコードをインスツルメンテーションすることで生成されるデータが含まれます。SQL クエリを実行することで、収集したデータを表示することができます。
インストール後、Snowflakeには SNOWFLAKE.TELEMETRY.EVENTS と呼ばれる デフォルトのイベントテーブル が含まれます。このイベント・テーブルはアクティブで、非アクティブにされるまでデータを収集します。また、 自分で を作成することもできます。
デフォルトのイベントテーブルを使用する¶
アクティブイベントテーブルをセットしない場合、Snowflakeは SNOWFLAKE.TELEMETRY.EVENTS という名前のデフォルトイベントテーブルをアクティブイベントテーブルとして使用します。また、特定の用途のために 独自のイベントテーブルを作成する こともできます。
デフォルトでは、Snowflake には、 SNOWFLAKE.TELEMETRY.EVENTS_VIEW ビュー という定義済みのビューも含まれており、このビューを使用することで、イベントテーブルのデータをより安全に、さまざまなユーザーに提供することができます。 ビューへのアクセスは、行アクセスポリシーで管理 できます。
注釈
デフォルトのイベント・テーブルは、あなたが作成したイベント・テーブルや通常のテーブルでサポートされている DDL コマンドのサブセットのみをサポートします。詳細については、 イベントテーブルの操作 をご参照ください。
デフォルトのイベント・テーブルと EVENTS_VIEW へのアクセスのロール¶
Snowflake には、既定のイベントテーブルおよび EVENTS_VIEW ビューへのアクセスを管理するために使用できる、以下の定義済みアプリケーションロールが含まれています。 ACCOUNTADMIN ロールを持つ人は、既定のイベントテーブルと EVENTS_VIEW ビューにアクセスでき、それらにアクセスするために、ここで説明するロールを他のロールに付与できます。
これらのロールはユーザーではなく、他のロールに付与する必要があります。例えば、より広範な管理者用途のために作成した別の管理者ロールに、 EVENTS_ADMIN ロールを付与することができます。
GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_ADMIN TO ROLE my_admin_role
GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_VIEWER TO ROLE my_analysis_role
- EVENTS_VIEWER:
- EVENTS_VIEW ビュー で SELECT ステートメントを実行する権限を持つロール。 
- EVENTS_ADMIN:
- 次の権限を持つロール: 
- デフォルトイベントテーブルの EVENTS_VIEW ビュー の SELECT。 
- USAGE を以下のストアドプロシージャで実行する: 
- このロールには、デフォルトのイベント・テーブルに基づいたデータを持つ EVENTS_VIEW ビューに行アクセス・ポリシー(RAP)を適用するためのストアド・プロシージャを実行する権限もあります。 
 
EVENTS_VIEW 表示へのアクセス管理¶
行アクセスポリシー を使用して、 EVENTS_VIEW ビュー のデータへのアクセスを管理できます。Snowflakeには、 EVENT_VIEW ビューに行アクセスポリシーを追加および削除するために使用できるストアドプロシージャが用意されています。
- ADD_ROW_ACCESS_POLICY_ON_EVENTS_VIEW(VARCHAR, ARRAY)---指定された列に行アクセスポリシーを EVENTS_VIEW にバインドします。 
- DROP_ROW_ACCESS_POLICY_ON_EVENTS_VIEW(VARCHAR)---EVENTS_VIEW にバインドされている指定された行アクセスポリシーを削除します。 
注釈
これらの手続きを実行するには、 EVENTS_ADMIN ロール が必要です。
EVENT_VIEW ビューで行アクセス・ポリシーを使用することは、 Enterprise Edition の機能です。
カスタムイベントテーブルの使用¶
新しいイベント・テーブルを作成するには、 CREATE EVENT TABLE コマンドを実行し、イベント・テーブルの名前を指定する。
注釈
イベントテーブルを作成しない場合、Snowflakeはデフォルトのイベントテーブルを使用して遠隔測定データを収集します。
- CREATE EVENT TABLE イベントテーブルの名前を指定して コマンドを実行し、イベントテーブルを作成します。 
- オブジェクトに対して ALTER <オブジェクト> コマンドを実行し、 EVENT_TABLE パラメーターにイベント・テーブルの名前を設定して、イベント・テーブルをオブジェクトに関連付けます。 - これは、イベント・テーブルが取り込むデータの範囲を、テーブルに関連付けているオブジェクトにセットします。 
イベントテーブルを作成する¶
イベントテーブルを作成するには、 CREATE EVENT TABLE コマンドを実行します。
イベントテーブルを作成する際、テーブルの列は指定しません。 イベントテーブル列 で説明されているように、イベントテーブルには事前定義された一連の列がすでにあります。
- CREATE EVENT TABLE 権限 を持つロールを使用していることを確認してください。 
- イベント・テーブルの名前を指定して、 CREATE EVENT TABLE コマンドを実行し、イベント・テーブルを作成します。 - イベントテーブル名を使用して、データベースなどの オブジェクトとテーブルを関連付けます。 - たとえば、 - my_eventsという名前のイベントテーブルを作成するには、次のステートメントを実行します。- CREATE EVENT TABLE my_database.my_schema.my_events; 
注釈
イベントテーブルの複製は現在サポートされていません。プライマリデータベースに含まれるイベントテーブルは複製中にスキップされます。
イベントテーブルとオブジェクトの関連付け¶
イベント・テーブルがアクティブなオブジェクトを指定するには、そのオブジェクトに対して ALTER <オブジェクト> コマンドを実行します。
イベントテーブルとデータベースの関連付けは、 Enterprise Edition の機能です。
- 必要な権限 を持つロールを使用していることを確認してください。 
- オブジェクトに対して ALTER <オブジェクト> コマンドを実行し、 EVENT_TABLE パラメーターをイベント・テーブルの名前にセットします。 - このパラメーターをセットすると、指定したイベント・テーブルでイベントが収集されるスコープとしてオブジェクトが設定されます。 - 例えば、イベント・テーブルをデータベースと関連付けるには、次の例のように ALTER DATABASE を使用します。 - ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events; - この例では、Snowflakeは--- テレメトリーレベルを指定する 方法に応じて--- - telemetry_database.telemetry_schema.my_eventsイベントテーブルの- my_databaseの UDFs とプロシージャのためのテレメトリーデータをキャプチャします。
サポートされているオブジェクト¶
次の表は、イベントを関連付けることができるオブジェクトと、関連付けを行うために必要な権限のリストです。
| オブジェクト | 必要な権限 | データを収集するオブジェクトの範囲 | 
|---|---|---|
| アカウント | 
 | アカウントのプロシージャと UDFs。最も広い範囲に使用します。 | 
| データベース | 
 | 指定したデータベースのプロシージャおよび UDFs。 | 
優先順位は、オブジェクトのテレメトリ・データを収集するためにどのイベント・テーブルを使用するかを決定します。この優先順位では、データベースに関連するイベント・テーブルがアカウントに関連するイベント・テーブルよりも優先されます。
- アカウント » データベース 
言い換えれば、あなたのアカウントとデータベース my_database の両方にイベントテーブルが関連付けられている場合、 my_database のオブジェクトによって生成された遠隔測定データは、データベースのイベントテーブルに収集されます。関連イベントテーブルを 持たない アカウント内の他のデータベースについては、遠隔測定データはアカウントに関連するイベントテーブルに収集されます。
アカウントのイベントテーブルのセット¶
注釈
このコマンドを実行するには、 ACCOUNTADMIN ロールを使用する必要があります。
さらに、次の権限を 両方 持つ必要があります。
- アカウントの OWNERSHIP 権限。 
ALTER ACCOUNT の実行に必要な権限の詳細については、 ALTER ACCOUNT コマンドに関するドキュメント をご参照ください。
たとえば、データベース my_database のスキーマ my_schema にある my_events という名前のイベントテーブルを、アカウントのアクティブなイベントテーブルとして設定するには、次のステートメントを実行します。
ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
上記のように、イベントテーブルの 完全修飾名 を指定する必要があります。
イベントテーブルとアカウントの関連付けを解除するには、 ALTER ACCOUNT コマンドを実行し、 EVENT_TABLE パラメーター設定を解除します。例:
ALTER ACCOUNT UNSET EVENT_TABLE;
EVENT_TABLE 値は、 SHOW PARAMETERS コマンドで確認できます。
SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
データベースのイベントテーブルセット¶
データベース my_database のスキーマ my_schema の my_events というイベント・テーブルを、データベース my_database のアクティブ・イベント・テーブルとしてセットアップするには、以下のステートメントを実行します。
ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
データベースからイベント・テーブルの関連付けを解除するには、 ALTER DATABASE コマンドを実行し、 EVENT_TABLE パラメーターの設定を解除します。例:
ALTER DATABASE my_database UNSET EVENT_TABLE;
EVENT_TABLE 値は、 SHOW PARAMETERS コマンドで確認できます。
SHOW PARAMETERS LIKE 'event_table' IN DATABASE my_database;