翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
許可されていない出力列の設定は、 AWS Clean Rooms カスタム分析ルールのコントロールであり、クエリ結果に射影することを許可しない列のリスト (存在する場合) を定義できます。このリストで参照されている列は、「許可されていない出力列」と見なされます。つまり、変換、エイリアシング、またはその他の手段によるこのような列への参照は、クエリの最終 SELECT (射影) に存在しない可能性があります。
この機能では、列が出力に直接射影されることを禁止していますが、基になる値が他のメカニズムを介して間接的に推測されることを完全に防ぐわけではありません。これらの列は、最終射影で参照されていない限り、射影句 (サブクエリや共通テーブル式 (CTE) など) で使用できます。
許可されていない出力列の設定により、ユースケースと対応するプライバシー要件に基づく分析テンプレートレベルのレビューと組み合わせて、テーブルにコントロールを適用およびコード化する柔軟性が得られます。
この設定方法に関する詳細については、「カスタム分析ルールのテーブルへの追加 (ガイドフロー)」を参照してください。
例
次の例は、許可されていない出力列コントロールがどのように適用されるかを示しています。
-
メンバー A は、メンバー B とコラボレーションしています。
-
メンバー B は、クエリを実行できるメンバーです。
-
メンバー A は、age、gender、email、および name の各列を持つ users テーブルを定義します。age および name 列は、許可されていない出力列です。
-
メンバー B は、age、gender、および owner_name 列の類似したセットを持つ pets テーブルを定義します。ただし、出力列に制約は設定しません。このため、テーブル内のすべての列をクエリで自由に射影できます。
メンバー B が次のクエリを実行すると、ブロックされます。これは、許可されていない出力列を直接射影できないためです。
SELECT age FROM users
メンバー B が次のクエリを実行すると、ブロックされます。これは、許可されていない出力列をプロジェクトスターを介して暗黙的に射影できないためです。
SELECT * FROM users
メンバー B が次のクエリを実行すると、ブロックされます。これは、許可されていない出力列の変換を射影できないためです。
SELECT COUNT(age) FROM users
メンバー B が次のクエリを実行すると、ブロックされます。これは、許可されていない出力列はエイリアスを使用して最終射影で参照できないためです。
SELECT count_age FROM (SELECT COUNT(age) AS count_age FROM users)
メンバー B が次のクエリを実行すると、ブロックされます。これは、変換された制限付き列が出力に射影されるためです。
SELECT CONCAT(name, email) FROM users
メンバー B が次のクエリを実行すると、 で定義された許可されていない出力列CTEを最終射影で参照できないため、ブロックされます。
WITH cte AS ( SELECT age AS age_alias FROM users ) SELECT age_alias FROM cte
メンバー B が次のクエリを実行すると、ブロックされます。これは、許可されていない出力列を最終射影のソートキーまたはパーティションキーとして使用できないためです。
SELECT LISTAGG(gender) WITHIN GROUP (ORDER BY age) OVER (PARTITION BY age) FROM users
メンバー B が次のクエリを実行すると、成功します。これは、許可されていない出力列の一部である列は、結合句やフィルター句など、クエリ内の他のコンストラクト間で引き続き使用できるためです。
SELECT u.name, p.gender, p.age FROM users AS u JOIN pets AS p ON u.name = p.owner_name
同じシナリオで、メンバー B はフィルターまたはソートキーとして users の name 列を使用することもできます。
SELECT u.email, u.gender FROM users AS u WHERE u.name = 'Mike' ORDER BY u.name
さらに、ユーザーから許可されていない出力列はCTEs、サブクエリや などの中間射影で使用できます。
WTIH cte AS ( SELECT u.gender, u.id, u.first_name FROM users AS u ) SELECT first_name FROM (SELECT cte.gender, cte.id, cte.first_name FROM cte)