本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
不同的隱私權查詢秘訣和範例
AWS Clean Rooms 差異隱私權使用一般用途查詢結構來支援各種建構,例如用於資料準備的 Common Table Expressions SQL (CTEs) 和常用的彙總函數,例如 COUNT
、 或 SUM
。為了混淆資料中任何可能使用者在執行階段新增雜訊以彙總查詢結果的貢獻, AWS Clean Rooms 差異隱私權要求最終的彙總函數SELECT statement
在使用者層級資料上執行。
下列範例使用兩個名為 socialco_impressions
和 的資料表,該資料表socialco_users
來自想要使用差異隱私權保護資料的媒體發行者,同時與具有athletic_brand_sales
資料的運動品牌協作。媒體發佈者已將資料user_id
欄設定為使用者識別碼資料欄,同時在 中啟用差異隱私權 AWS Clean Rooms。廣告商不需要差異隱私權保護,並想要在合併的資料CTEs上使用 執行查詢。由於廣告商CTE使用不同的受隱私權保護資料表,因此廣告商會將來自這些受保護資料表的使用者識別碼欄包含在CTE資料欄清單中,並加入使用者識別碼欄上的受保護資料表。
WITH matches_table AS( SELECT si.user_id, si.campaign_id, s.sale_id, s.sale_price FROM socialco_impressions si JOIN socialco_users su ON su.user_id = si.user_id JOIN athletic_brand_sales s ON s.emailsha256 = su.emailsha256 WHERE s.timestamp > si.timestamp UNION ALL SELECT si.user_id, si.campaign_id, s.sale_id, s.sale_price FROM socialco_impressions si JOIN socialco_users su ON su.user_id = si.user_id JOIN athletic_brand_sales s ON s.phonesha256 = su.phonesha256 WHERE s.timestamp > si.timestamp ) SELECT COUNT (DISTINCT user_id) as unique_users FROM matches_table GROUP BY campaign_id ORDER BY COUNT (DISTINCT user_id) DESC LIMIT 5
同樣地,如果您想要在差異隱私保護資料表上執行視窗函數,則必須在 PARTITION BY
子句中包含使用者識別碼欄。
ROW_NUMBER() OVER (PARTITION BY conversion_id, user_id ORDER BY match_type, match_age) AS row