オブジェクトタグの紹介¶
タグとは¶
タグは、別のSnowflakeオブジェクトに割り当てることができるスキーマレベルのオブジェクトです。ユーザーは、タグをSnowflakeオブジェクトに割り当てる際に、タグと任意の文字列値を関連付けます。Snowflakeは、タグとその文字列値をキーと値のペアとして保存します。タグはスキーマに対して一意である必要があり、タグ値は常に文字列です。
以下は、オブジェクトタグの一般的な特徴です。
- オブジェクトは同時に複数のタグを持つことができます。詳細については、 オブジェクトのタグクォータ をご参照ください。 
- 1つのタグを異なるオブジェクトタイプに同時に割り当てることができます(例えば、ウェアハウスとテーブルを同時に)。 
- 割り当て時に、タグ文字列値は、複製することも、一意のままにすることもできます。例えば、複数のテーブルに - cost_centerというタグを割り当てることができ、そのタグは常に文字列値- salesを持つことができます。あるいは、文字列値はテーブルごとに異なっていてもかまいません (たとえば、- engineering、- marketing、- finance)。
タグを定義し、タグをSnowflakeオブジェクトに割り当てたら、タグをクエリしてオブジェクトの使用状況を監視し、監査やレポートなどのデータガバナンス業務を促進することができます。
ハイライト¶
- 使いやすさ:
- タグを一度定義して、必要な数の異なるオブジェクトに適用します。 
- タグ継承:
- タグは継承されるため、セキュアブル・オブジェクト階層の上位にあるオブジェクトにタグを適用すると、すべての子オブジェクトにタグが適用されます。たとえば、タグがテーブルに設定されている場合、そのタグはそのテーブルのすべての列に継承されます。 
- 自動伝播:
- タグを構成して、ソースオブジェクトからターゲットオブジェクトに自動的に伝搬させます。 
- 一貫した割り当てと複製:
- Snowflakeは、プライマリデータベース内のタグとその割り当てをセカンダリデータベースに複製します。 
- 集中型または分散型の管理:
- タグは、社内外の規制要件への準拠を促進するためのさまざまな管理アプローチをサポートします。 - 集中型アプローチでは、タグを作成してSnowflakeオブジェクトに適用する - tag_adminカスタムロールを作成できます。- 分散型アプローチでは、個々のチームがSnowflakeオブジェクトにタグを適用し、 - tag_adminカスタムロールがタグを作成して、一貫したタグの命名を確実にします。
タグがオブジェクトに関連付けられる方法¶
タグは以下の方法でオブジェクトに関連付けることができます。
- CREATE <オブジェクト> または ALTER <オブジェクト> コマンドを使用して、誰かが手動でオブジェクトにタグをセットしました。タグのセット をご参照ください。 
- このオブジェクトは、Snowflake セキュアブルオブジェクト階層の上位にあるオブジェクトからタグを継承しています。例えば、アカウント内のウェアハウスは、アカウントにセットされたタグを継承します。タグ継承 をご参照ください。 
- タグは、あるオブジェクトから別のオブジェクトへ自動的に伝播されました。タグは、オブジェクトが他のオブジェクトに依存関係を持っている場合 (例えば、タグ付きテーブルをベースとした表示) や、タグ付きオブジェクトから他のオブジェクトにデータが移動した場合 (例えば、 CTAS ステートメントを使用してテーブルを作成した場合) に伝播されます。ユーザー定義タグによるタグの自動伝播 をご参照ください。 
- タグは、機密データを含むと分類された列に自動的にセットされました。自動機密データ分類がタグマップを使用してこれらのタグをセットする方法については、 タグマッピングについて を参照してください。 
- 誰かが CREATE TABLE ... LIKE または CREATE TABLE ... CLONE コマンドを使って、タグのある既存のテーブルからテーブルを作成しました。 
タグがどのようにオブジェクトに関連づけられたかを判断します。¶
以下の表示と関数には、 apply_method 列があり、タグがオブジェクトにどのように関連づけられたかを示します。
例えば、タグがオブジェクトに手動でセットされたのか、伝播されたのかを調べるには、以下のコマンドを実行し、 apply_method 列の値をチェックします。
SELECT tag_name, tag_value, apply_method, level, domain FROM TABLE(my_db.INFORMATION_SCHEMA.TAG_REFERENCES('my_table', 'TABLE'));
オブジェクトのタグクォータ¶
テーブルやビューを含め、1つのオブジェクトに最大50個のタグをセットできます。これはタグの数の制限であり、以下の例に示すように、タグと値の組み合わせの数の制限では ありません。
- オブジェクトにタグ1つ
- ALTER TABLE t1 SET TAG tag1 = 'val1'; 
- オブジェクト上の2つのタグ
- ALTER TABLE t1 SET TAG tag1 = 'val1', tag2 = 'val1'; 
タグが上限に達し、1つ削除したい場合は、 ALTER <オブジェクト> UNSET TAG ステートメントを実行します。
1つのステートメントで複数の CREATE <オブジェクト> または ALTER <オブジェクト> コマンドを実行する場合、指定できるタグの最大数は 100 です。
列の追加枠¶
他のすべてのオブジェクトと同様に、テーブルまたは表示のタグの最大数は一意の50タグです。テーブルまたはビューの 列 に追加のクォータがあります。1つのテーブルまたは表示のすべての列のタグの最大総数は50です。
例えば、テーブルの1つの列に10個のタグがセットされている場合、Snowflakeでは以下のことが可能です。
- 同じ列またはテーブルの列の組み合わせに40の追加タグをセット。 
- テーブル自体に50個の追加タグをセット。 
次の例では、テーブルに2つのタグがあり、列にも2つのタグがあります。
CREATE TABLE t1 (
    COL1 INT WITH TAG (tag1='col2', tag2='col2')
    )
    WITH TAG (tag1='val1', tag2='val1');
Enterprise Editionが必要な機能¶
タグの作成とセットはすべてのアカウントで利用可能です。ただし、Enterprise Edition以上を必要とする高度な機能があります。以下の機能を使用するには、Enterprise Edition以上のアカウントが必要です。
サポートされているオブジェクト¶
次のテーブルに、列を含む、タグでサポートされているオブジェクトをSnowflakeのセキュリティ保護可能なオブジェクト階層に基づいて示します。
タグは、以下のテーブルでそれ以外に指定されている場合を除き、 CREATE <オブジェクト> ステートメントまたは ALTER <オブジェクト> ステートメントを使用してオブジェクトに設定できます。
タグは、 CREATE TABLE、 CREATE VIEW、 ALTER TABLE ... MODIFYCOLUMN または ALTER VIEW ステートメントを使用して列にセットすることができます。
| オブジェクト階層 | サポートされているオブジェクト | 注意 | 
|---|---|---|
| 組織 | アカウント | |
| アカウント | アプリケーション | |
| アプリケーションパッケージ | ||
| コンピューティングプール | ||
| データベース | ||
| フェールオーバーグループ | ||
| 統合 | すべての 型 がサポートされています。 ALTER INTEGRATION コマンドを使用して、統合にタグを設定します。 | |
| ネットワークポリシー | ALTER NETWORK POLICY コマンドを使用して、ネットワークポリシーにタグを設定します。 | |
| 複製グループ | ||
| ロール | ||
| 共有 | タグは、データ共有プロバイダーによって共有に設定されます。これらのタグは、データ共有コンシューマーには表示されません。ALTER SHARE コマンドを使用して、共有にタグを設定します。 | |
| ユーザー | ||
| ウェアハウス | ||
| データベース | データベースロール | ALTER DATABASE ROLE コマンドを使用して、データベースロールにタグを設定します。 | 
| スキーマ | ||
| スキーマ | 集計ポリシー | |
| アラート | ||
| BUDGETインスタンス | ALTER BUDGET コマンドを使用して、外部関数または SNOWFLAKE.CORE.BUDGET クラスのインスタンスにタグを設定します。 | |
| CLASSIFICATIONインスタンス | ALTER SNOWFLAKE.ML.CLASSIFICATION コマンドを使用して、外部関数または SNOWFLAKE.ML.CLASSIFICATION クラスのインスタンスにタグを設定します。 | |
| 動的テーブル | ||
| イベントテーブル | ||
| 外部関数および UDF | ALTER FUNCTION コマンドを使用して、外部関数または UDF にタグを設定します。 | |
| 外部テーブル | CREATE EXTERNAL TABLE ステートメントを使用すると、タグ付きの外部テーブルを作成できます。 外部テーブルのタグ割り当てを管理するには、 ALTER TABLE コマンドを使用します。 | |
| Gitリポジトリ | ||
| Apache Iceberg™ テーブル | ||
| イメージリポジトリ | ||
| 結合ポリシー | ||
| マテリアライズドビュー | ||
| ノートブック | ||
| パスワードポリシー | ||
| パイプ | ALTER PIPE ステートメントでパイプにタグを設定します。 | |
| ポリシー | 対応する ALTER <ポリシー> ステートメントを使用して、 マスキング、 パスワード、 行アクセス、 セッション、 集計、 結合、 および 投影 ポリシーにタグを設定します。 | |
| プロシージャ | ALTER PROCEDURE ステートメントを使用して、ストアドプロシージャにタグを設定します。 | |
| 投影ポリシー | ||
| セッションポリシー | ||
| スナップショット | ||
| ステージ | ALTER STAGE ステートメントを使用して、ステージにタグを設定します。 | |
| ストリーム | ||
| Streamlit | ||
| テーブル | ||
| タスク | ALTER TASK ステートメントを使用して、タスクにタグを設定します。 | |
| ビュー | ||
| テーブルまたはビュー | 列 | イベントテーブル を含みます。 | 
制限と考慮事項¶
- 将来の付与:
- タグに対する権限の 将来の付与 はサポートされていません。 - 回避策として、カスタムロールに APPLYTAG 権限を付与して、そのロールが別のオブジェクトにタグを適用できるようにします。 
- Snowflake Native App:
- バージョン管理されたスキーマにタグが存在する場合は、セットアップスクリプトを作成する際に注意してください。情報については、 バージョンスキーマに関する考察 を参照してください。