イベントテーブルの概要¶
プロシージャや UDFs を含む Snowflake オブジェクトが遠隔測定データを発行すると、Snowflake はそのデータをイベントテーブルに収集します。Snowflakeにはデフォルトでイベントテーブルが含まれていますが、新しく作成することもできます。
遠隔測定データを収集するには、 アクティブなイベントテーブル があり、 データ収集を許可する遠隔測定レベル を設定している必要があります。まだアクティブなイベントテーブルがない場合、Snowflakeはデフォルトのイベントテーブルをアクティブなイベントテーブルにします。
遠隔測定データの収集にはコストがかかります。これらのコストを理解するために --- あるいは、これらのコストを削減または回避するために --- テレメトリーデータ収集の費用 をご参照ください。
イベントテーブルとは何ですか?¶
イベント・テーブルは、あらかじめ定義された列のセットを持つ特別な種類のデータベーステーブルです。テーブルの 構造 は、遠隔測定データを扱うためのフレームワークである OpenTelemetry のデータモデルをサポートしています。 イベントテーブルがアクティブな場合 、Snowflake はテーブル内の遠隔測定データを収集します。これには Snowflake 自身が生成するデータと、特定の APIs を使用してハンドラーコードにインスツルメンテーションを行うことで生成されるデータが含まれます。SQL クエリを実行することで、収集したデータを表示することができます。
インストール後、、Snowflakeには SNOWFLAKE.TELEMETRY.EVENTS と呼ばれる デフォルトのイベントテーブル が含まれます。このイベント・テーブルはアクティブで、非アクティブにされるまでデータを収集します。また、 自分で を作成することもできます。
遠隔測定データを収集するには、アクティブなイベントテーブルが必要です。詳細については、 イベントテーブルをアクティブにする をご参照ください。
デフォルトのイベントテーブル¶
デフォルトでは、Snowflake には SNOWFLAKE.TELEMETRY.EVENTS.の名前のデフォルトイベントテーブルを含みます。自分でイベントテーブルを作る代わりに、このイベントテーブルを使うことができます。まだアクティブなイベントテーブルがない場合、Snowflakeはデフォルトのテーブルをアクティブなイベントテーブルにします。
デフォルトでは、Snowflake には、 SNOWFLAKE.TELEMETRY.EVENTS_VIEW ビュー という定義済みのビューも含まれており、このビューを使用することで、イベントテーブルのデータをより安全に、さまざまなユーザーに提供することができます。 ビューへのアクセスは、行アクセスポリシーで管理 できます。
注釈
デフォルトのイベント・テーブルは、あなたが作成したイベント・テーブルや通常のテーブルでサポートされている DDL コマンドのサブセットのみをサポートします。詳細については、 イベントテーブルの操作 をご参照ください。
デフォルトのイベント・テーブルと EVENTS_VIEW へのアクセスのロール¶
Snowflakeには、デフォルトのイベントテーブルおよび EVENTS_VIEW ビューへのアクセスを管理するために使用できる、以下の定義済みアプリケーションロールが含まれています。
- 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 コマンドを実行し、イベント・テーブルの名前を指定する。
イベントテーブルを作成するときは、テーブル内の列を指定しないように注意してください。 イベントテーブル列 で説明されているように、イベントテーブルには事前定義された一連の列がすでにあります。
CREATE EVENT TABLE 権限が付与または継承されたロールを使用する必要があります。
注釈
イベントテーブルの複製は現在サポートされていません。プライマリデータベースに含まれるイベントテーブルは複製中にスキップされます。
たとえば、 my_events
という名前のイベントテーブルを作成するには、次のステートメントを実行します。
CREATE EVENT TABLE my_database.my_schema.my_events;
イベントテーブルをアクティブにする¶
遠隔測定データの保存を有効にするには、イベント・テーブルがアクティブ・イベント・テーブルであることを指定する必要があります。
アカウントのアクティブなイベントテーブルを指定するには、 ALTER ACCOUNT コマンドを実行し、 EVENT_TABLE パラメーターをイベントテーブルの名前に設定します。
注釈
このコマンドを実行するには、 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;