イベントテーブルの概要

プロシージャや 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
Copy
EVENTS_VIEWER:

EVENTS_VIEW ビュー で SELECT ステートメントを実行する権限を持つロール。

EVENTS_ADMIN:

次の権限を持つロール:

EVENTS_VIEW 表示へのアクセス管理

行アクセスポリシー を使用して、 EVENTS_VIEW ビュー のデータへのアクセスを管理できます。Snowflakeには、 EVENT_VIEW ビューに行アクセスポリシーを追加および削除するために使用できるストアドプロシージャが用意されています。

注釈

これらの手続きを実行するには、 EVENTS_ADMIN ロール が必要です。

EVENT_VIEW ビューで行アクセス・ポリシーを使用することは、 Enterprise Edition の機能です。

カスタムイベントテーブルの使用

新しいイベント・テーブルを作成するには、 CREATE EVENT TABLE コマンドを実行し、イベント・テーブルの名前を指定する。

注釈

イベントテーブルを作成しない場合、Snowflakeはデフォルトのイベントテーブルを使用して遠隔測定データを収集します。

  1. CREATE EVENT TABLE イベントテーブルの名前を指定して コマンドを実行し、イベントテーブルを作成します

  2. オブジェクトに対して ALTER <オブジェクト> コマンドを実行し、 EVENT_TABLE パラメーターにイベント・テーブルの名前を設定して、イベント・テーブルをオブジェクトに関連付けます

    これは、イベント・テーブルが取り込むデータの範囲を、テーブルに関連付けているオブジェクトにセットします。

イベントテーブルを作成する

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

イベントテーブルを作成する際、テーブルの列は指定しません。 イベントテーブル列 で説明されているように、イベントテーブルには事前定義された一連の列がすでにあります。

  1. CREATE EVENT TABLE 権限 を持つロールを使用していることを確認してください。

  2. イベント・テーブルの名前を指定して、 CREATE EVENT TABLE コマンドを実行し、イベント・テーブルを作成します。

    イベントテーブル名を使用して、データベースなどの オブジェクトとテーブルを関連付けます

    たとえば、 my_events という名前のイベントテーブルを作成するには、次のステートメントを実行します。

    CREATE EVENT TABLE my_database.my_schema.my_events;
    
    Copy

注釈

イベントテーブルの複製は現在サポートされていません。プライマリデータベースに含まれるイベントテーブルは複製中にスキップされます。

イベントテーブルとオブジェクトの関連付け

イベント・テーブルがアクティブなオブジェクトを指定するには、そのオブジェクトに対して ALTER <オブジェクト> コマンドを実行します。

イベントテーブルとデータベースの関連付けは、 Enterprise Edition の機能です。

  1. 必要な権限 を持つロールを使用していることを確認してください。

  2. オブジェクトに対して ALTER <オブジェクト> コマンドを実行し、 EVENT_TABLE パラメーターをイベント・テーブルの名前にセットします。

    このパラメーターをセットすると、指定したイベント・テーブルでイベントが収集されるスコープとしてオブジェクトが設定されます。

    例えば、イベント・テーブルをデータベースと関連付けるには、次の例のように ALTER DATABASE を使用します。

    ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
    
    Copy

    この例では、Snowflakeは--- テレメトリーレベルを指定する 方法に応じて--- telemetry_database.telemetry_schema.my_events イベントテーブルの my_database の UDFs とプロシージャのためのテレメトリーデータをキャプチャします。

サポートされているオブジェクト

次の表は、イベントを関連付けることができるオブジェクトと、関連付けを行うために必要な権限のリストです。

オブジェクト

必要な権限

データを収集するオブジェクトの範囲

アカウント

アカウントのプロシージャと UDFs。最も広い範囲に使用します。

データベース

指定したデータベースのプロシージャおよび UDFs。

優先順位は、オブジェクトのテレメトリ・データを収集するためにどのイベント・テーブルを使用するかを決定します。この優先順位では、データベースに関連するイベント・テーブルがアカウントに関連するイベント・テーブルよりも優先されます。

  • アカウント » データベース

言い換えれば、あなたのアカウントとデータベース my_database の両方にイベントテーブルが関連付けられている場合、 my_database のオブジェクトによって生成された遠隔測定データは、データベースのイベントテーブルに収集されます。関連イベントテーブルを 持たない アカウント内の他のデータベースについては、遠隔測定データはアカウントに関連するイベントテーブルに収集されます。

アカウントのイベントテーブルのセット

注釈

このコマンドを実行するには、 ACCOUNTADMIN ロールを使用する必要があります。

さらに、次の権限を 両方 持つ必要があります。

ALTER ACCOUNT の実行に必要な権限の詳細については、 ALTER ACCOUNT コマンドに関するドキュメント をご参照ください。

たとえば、データベース my_database のスキーマ my_schema にある my_events という名前のイベントテーブルを、アカウントのアクティブなイベントテーブルとして設定するには、次のステートメントを実行します。

ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

上記のように、イベントテーブルの 完全修飾名 を指定する必要があります。

イベントテーブルとアカウントの関連付けを解除するには、 ALTER ACCOUNT コマンドを実行し、 EVENT_TABLE パラメーター設定を解除します。例:

ALTER ACCOUNT UNSET EVENT_TABLE;
Copy

EVENT_TABLE 値は、 SHOW PARAMETERS コマンドで確認できます。

SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
Copy

データベースのイベントテーブルセット

データベース my_database のスキーマ my_schemamy_events というイベント・テーブルを、データベース my_database のアクティブ・イベント・テーブルとしてセットアップするには、以下のステートメントを実行します。

ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

データベースからイベント・テーブルの関連付けを解除するには、 ALTER DATABASE コマンドを実行し、 EVENT_TABLE パラメーターの設定を解除します。例:

ALTER DATABASE my_database UNSET EVENT_TABLE;
Copy

EVENT_TABLE 値は、 SHOW PARAMETERS コマンドで確認できます。

SHOW PARAMETERS LIKE 'event_table' IN DATABASE my_database;
Copy