オブジェクトタグの監視

SQL または Snowsight を使って、タグとその実装方法をモニターできます。

SQL によるタグのモニター

タグは、2つの異なるAccount Usageビュー、2つのInformation Schemaテーブル関数、Account Usageテーブル関数、およびシステム関数を使用して SQL によりモニターできます。

タグの使用状況をモニターする方法を決定するために、2つの一般的なアプローチを考えると役立つ場合があります。

タグを検出する

Snowflakeは、タグのリストと、指定されたタグキーの文字列値を識別するために、以下のオプションをサポートしています。

  • アカウント内のタグを特定します。

    共有 SNOWFLAKE データベースのAccount Usageスキーマで TAGS ビューを使用します。このビューは、Snowflakeアカウント内にあるすべてのタグの カタログ と見なすことができ、現在のタグと削除されたタグに関する情報を提供します。例:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAGS
      ORDER BY tag_name;
    
    Copy
  • 指定のタグの値を特定します。

    指定されたタグ、およびSnowflakeオブジェクトまたは列に割り当てられたタグ値を返すには、 SYSTEM$GET_TAG システム関数を使用します。

    SELECT SYSTEM$GET_TAG('cost_center', 'my_table', 'table');
    
    Copy

割り当てを識別する

Snowflakeは、クエリがアカウントまたは特定のデータベースのどちらをターゲットにする必要があるか、タグの継承を追跡するかどうかによって、タグの割り当てを識別するためのさまざまなオプションをサポートしています。

  • 系統のあるアカウントレベルのクエリ:

    Account Usage テーブル 関数 TAG_REFERENCES_WITH_LINEAGE を使って、タグを継承したオブジェクトも含めて、与えられたタグキーとタグ値を持つすべてのオブジェクトを決定します。

    SELECT *
      FROM TABLE(
        SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES_WITH_LINEAGE(
          'my_db.my_schema.cost_center'
        )
      );
    
    Copy
  • 系統のないアカウントレベルのクエリ:

    Account Usage TAG_REFERENCES ビューを使用して、特定のタグキーとタグ値を持ちますが、タグ系統が含まれて いない、すべてのオブジェクトを判別します。

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES
      ORDER BY tag_name, domain, object_id;
    
    Copy
  • 系統のあるデータベースレベルのクエリ:

    すべてのSnowflakeデータベースには Snowflake Information Schema が含まれています。Information Schemaテーブル関数 TAG_REFERENCES を使用して、指定されたデータベース内の、指定されたタグを持つすべてのオブジェクト(そのタグを継承したオブジェクトを含む)を調べます。

    SELECT *
      FROM TABLE(
        my_db.INFORMATION_SCHEMA.TAG_REFERENCES(
          'my_table',
          'table'
        )
      );
    
    Copy
  • 系統のある、テーブルまたはビュー内の列すべてのタグすべてに対するデータベースレベルのクエリ:

    Information Schema関数 TAG_REFERENCES_ALL_COLUMNS を使用して、特定のテーブルまたはビューにあるすべての列に設定されているすべてのタグを取得します。

    オブジェクト名がビュー(つまり、ビュー、マテリアライズド・ビュー)であっても、列を含むすべてのオブジェクトに対してドメインを使用 TABLE しなければならない ことに注意してください。

    SELECT *
      FROM TABLE(
        INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
          'my_table',
          'table'
        )
      );
    
    Copy

Snowsight によるタグのモニター

Snowsight Monitoring » Governance 領域を使用すると、テーブル、ビュー、列でのポリシーとタグの使用状況をモニターし、レポートできます。 DashboardTagged Objects という2つの異なるインターフェイスがあります。

Dashboard および Tagged Objects インターフェイスを使用する場合は、次の詳細に注意してください。

  • Dashboard および Tagged Objects インターフェイスには稼働中のウェアハウスが必要です。

  • Snowsight は、 Dashboard を12時間ごとに更新します。

  • Tagged Objects 情報の遅延は最大2時間になる可能性があり、最大1000個のオブジェクトが返されます。

Snowsightのガバナンスエリアへのアクセス

Governance エリアにアクセスするには、Snowflakeアカウントが Enterprise Edition 以上 である必要があります。さらに、次のいずれかを実行する必要があります。

  • ACCOUNTADMIN ロールを使用します。

  • GOVERNANCE_VIEWER および OBJECT_VIEWER データベースロールが 直接 付与されているアカウントロールを使用します。

    これらのデータベースロール付与では、アカウントロールを 使用する必要があります。現在のところ、 Snowsight はテーブル、ビュー、データアクセスポリシー、タグにアクセスできるロール階層およびユーザー定義のデータベースロールを評価しません。

    アカウントロールにこれらの2つのデータベースロールが付与されているかどうかを確認するには、 SHOW GRANTS コマンドを使用します。

    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | created_on                    | privilege | granted_on    | name                        | granted_to | grantee_name    | grant_option | granted_by |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | 2024-01-24 17:12:26.984 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.GOVERNANCE_VIEWER | ROLE       | DATA_ENGINEER   | false        |            |
    | 2024-01-24 17:12:47.967 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.OBJECT_VIEWER     | ROLE       | DATA_ENGINEER   | false        |            |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    

    アカウントロールにこれらのデータベースロールのいずれかまたは両方が付与されていない場合は、 GRANT DATABASE ROLE コマンドを使用し、 SHOW GRANTS コマンドを再度実行して付与を確認してください。

    USE ROLE ACCOUNTADMIN;
    GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE data_engineer;
    GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO ROLE data_engineer;
    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy

    これらのデータベースロールの詳細については、 SNOWFLAKE データベースロール をご参照ください。

ダッシュボード

データ管理者は、 Dashboard インターフェイスを使用して、次の方法でタグとポリシーの使用状況をモニターできます。

  • カバレッジ: テーブル、ビュー、または列にポリシーまたはタグがあるかどうかに基づいて、カウントとパーセンテージを指定します。

  • 普及率: 最も頻繁に使用されるポリシーとタグをリストし、カウントします。

カバレッジと普及率は、データがどの程度適切に保護され、タグ付けされているかに関するスナップショットを提供します。

カウント数、パーセンテージ、ポリシー名、またはタグ名を選択すると、 Tagged Objects インターフェイスが開きます。 Tagged Objects インターフェイスは、 Dashboard での選択に基づいてフィルターを自動的に更新します。

モニター情報は、複数のAccount Usageビューで複雑なクエリ集中型の操作を実行するための代替または補完です。

これらのビューには、 COLUMNSPOLICY_REFERENCESTABLESTAG_REFERENCES、および VIEWS ビューが含まれますが、これらに限定されません。

タグ付きオブジェクト

データ管理者は、このテーブルを使用して、 Dashboard のカバレッジと普及率を特定のテーブル、ビュー、または列のリストにすばやく関連付けることができます。次のようにテーブルの結果を手動でフィルターすることもできます。

  • Tables または Columns を選択します。

  • タグの場合は、タグあり、タグなし、または特定のタグでフィルターできます。

  • ポリシーの場合は、ポリシーあり、ポリシーなし、または特定のポリシーでフィルターできます。

テーブル内の行を選択すると、 Data » DatabasesTable Details または Columns タブが開きます。必要に応じて、タグとポリシーの割り当てを編集できます。