Why Nostr? What is Njump?
2024-06-26 10:13:46

DevelopersIO RSS feed【非公式】 on Nostr: 【投影ポリシーと集計ポリシーを適用したテーブルを Tableau ...

【投影ポリシーと集計ポリシーを適用したテーブルを Tableau から参照してみる #SnowflakeDB】
はじめに 2024年5月のリリースで、Snowflake でデータ保護のために使用できるポリシーである投影ポリシーと集計ポリシーが一般提供となりました。 こちらの機能について、概要をまとめつつ BI ツール(Tableau)からどのように見えるかを確認したく記事としました。 投影ポリシー 投影ポリシーをカラムに対して適用すると、ポリシー定義に基づき、そのカラムを選択するクエリを実行可能とするか、つまり指定のカラムをセレクト句に含めることを許可するかを制御できます。 以下は公式ドキュメント記載のポリシーの例です。この例の場合は、クエリを実行したユーザーのロールに基づいて、対象のカラムを選択可能かコントロールします。 保護したい個人情報などを含むカラムに対してマスキングポリシーを適用したり、そもそも保護したい列を含まないビューを定義した場合との違いとして、この機能により保護されたカラムはセレクト句に含めることはできませんが、例えば結合のキーとして使用することが可能です。 これにより、個人情報などを保護しつつレコードレベルで複数のテーブルにまたがる分析が可能となります。 投影ポリシーに関する主な特徴として以下があげられます。 SQL クエリの出力に列を投影できるかどうかを定義するスキーマ レベルのオブジェクト カラムには一度に1つの投影ポリシーのみを割り当て可能 投影ポリシーで保護したカラムに対して、マスキングポリシーを適用したり、対象のカラムを含むテーブルに対して行アクセスポリシーを適用することも可能 この場合「行アクセスポリシー」による行フィルター、「投影ポリシー」によるクエリの許可、「マスキング ポリシー」による列マスクが順に適用される タグベースの投影ポリシーは現時点では使用できない(タグに投影ポリシーをセットすることはできない) SYSTEM$GET_TAG_ON_CURRENT_COLUMNによるポリシー定義は可能 仮想列または外部テーブルの VALUE 列には適用できない 詳細は以下をご参照ください。 集計ポリシー 集計ポリシーは、テーブルやビューに対して適用されます。この際、ポリシー定義に基づき対象のテーブルに対するクエリとしてグループに集計することを強制します。これにより、個々のレコード単位の情報を返すことが防がれ、行レベルのプライバシーとして機能します。 集計ポリシーの主な特徴は以下です。 テーブルまたはビューのデータにアクセスできるクエリの種類を制御する、スキーマレベルのオブジェクト ウィンドウ関数は、集計制約付きテーブルまたはビューに対するクエリでは使用できない テーブルまたはビューに関連付け可能な集計ポリシーは1つのみ 詳細は以下をご参照ください。 また、集計ポリシーを定義する際はあわせて以下を考慮します。 最小グループサイズ エンティティ キー 最小グループサイズ 例えば以下のようなテーブルに対して集計ポリシーを適用したとします。 ここで以下のクエリで部署ごとの平均 Salary を算出してみます。 集計ポリシーは、テーブルに対する集計を強制するため、上記のようなクエリは実行でき、この場合出力は以下のようになります。 最終行の部署 HR を見てみると、このグループ部署に属するレコード数は1なので、実質個人を特定可能な結果を得ることができています。 そこで集計ポリシーを定義する際はMIN_GROUP_SIZEとして集計時のグループに含まれる最小のレコード数を指定します。これにより、最小グループサイズよりも少ないレコードを含むグループがある場合、それらのグループに属するレコードを remainder group としてまとめ、結果を返します。 この際、グループのキー項目値は NULL とされます(複数のグループからなる可能性があるため)。さらに remainder group に分類してもMIN_GROUP_SIZEに満たない場合は、結果のすべてのフィールド値が NULL として返されます。 この例でMIN_GROUP_SIZEを2として設定すると HR グループが remainder group に分類されます。ただし、この場合でもMIN_GROUP_SIZEを満たすレコード数には足りないため、すべてのフィールドが NULL として出力されることになります。 エンティティ キー 集計ポリシーではMIN_GROUP_SIZEとあわせてENTITY KEYを指定できます。 これにより集計グループに含まれるレコード数だけでなく、指定のキーについてMIN_GROUP_SIZE以上の種類数含まれるように制限することが可能となります。 先のデータに年の情報を追加した以下のような、年ごと部ごとに集計可能なテーブルがあるとします。 ここで同じようにMIN_GROUP_SIZEとして2を指定した集計ポリシーを適用したとし、先と同じ集計クエリを実行すると以下の出力となります。 HR 部門については、一名の情報しかありませんが、複数年にまたがるレコードがあるためMIN_GROUP_SIZEの制約を満たし出力が返ってきます。しかし、この例では実質個人の Salary ができてしまっている状況です。 そこで集計ポリシーをテーブルに適用する際にENTITY KEYとして [USERNAME] カラムを合わせて指定します。その上で同じクエリを実行すると以下の出力となります。 集約のレコード数は指定の条件を満たしていますが、部門でテーブルをグループ化した際に、ENTITY KEY として指定した [USERNAME] がのユニーク数が2未満のため remainder group に分類され、さらに十分なレコード数がないためにすべてのフィールド値が NULL として返されます。 環境の用意 ここでは以下のコマンドで検証用のデータベース・スキーマ、ロールを定義しました。 投影ポリシーの作成 サンプルデータとして作成した2つのテーブルには、個人情報として [email] が含まれています。個人を特定可能な [email] を保護しつつ、2つのテーブルを結合し部門単位での Salary の集計を行いたい、というような設定です。 ここでは以下のコマンドで投影ポリシーを作成しました。ポリシーの作成にはスキーマ内の CREATE PROJECTION POLICY 権限が必要ですが、上記でポリシー作成用のロールがスキーマの所有者となる構造のため、この権限を明示的に付与していません。 ポリシーは、現在のロールが SYSADMIN 以上であれば制約無し、それ以外であればポリシーが適用される設定です。 ポリシーをカラムに適用するには、以下のいずれかの権限が必要です。 アカウントに対する APPLY PROJECTION […]
https://dev.classmethod.jp/articles/projection-agg-policies-from-bi-tableau/
Author Public Key
npub16u6jx85wavk5n0kw5r46ma7dunupsp7acmtn3xys7keqvlsfjxpsar5q5c