本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定資料表不允許的資料欄
不允許的輸出資料欄組態是 AWS Clean Rooms 自訂分析規則中的控制項,可讓您定義不允許在查詢結果中投影的資料欄清單 (如果有的話)。此清單中參考的資料欄會被視為「不允許的輸出資料欄」。這表示透過轉換、別名或其他方式對此類資料欄的任何參考,可能不會出現在查詢的最終 SELECT (投影) 中。
雖然 功能禁止資料欄直接投影在輸出中,但無法完全防止透過其他機制間接推斷基礎值。只要最終投影中未參考這些資料欄,這些資料欄仍可用於投影子句 (例如子查詢或通用資料表表達式 (CTE))。
不允許的輸出資料欄組態可讓您靈活地在資料表上套用和編纂控制項,並結合根據使用案例和對應的隱私權需求進行的分析範本層級檢閱。
如需如何設定此組態的詳細資訊,請參閱將自訂分析規則新增至資料表 (引導流程)。
範例
下列範例顯示如何套用不允許的輸出資料欄控制。
-
A 成員與 B 成員合作。
-
成員 B 是可以執行查詢的成員。
-
成員 A 會定義具有資料欄年齡、性別、電子郵件和名稱的資料表使用者。資料欄的存留期和名稱是不允許的輸出資料欄。
-
成員 B 定義了具有一組相似資料欄年齡、性別和 owner_name 的資料表寵物。不過,它們不會對輸出資料欄設定任何限制,這表示資料表中的所有資料欄都可以在查詢中自由投影。
如果成員 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 也可以使用使用者中的名稱欄做為篩選條件或排序索引鍵:
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)