イベントテーブルの概要¶
プロシージャや 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;