本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
差分隱私查詢提示和範例
AWS Clean Rooms 「微分隱私」會使用一般用途的查詢結構來支援各種 SQL 建構,例如用於準備資料的通用資料表運算式 (CTE),以及常用的彙總函式 (例如,或)。COUNT
SUM
為了通過在運行時添加噪聲來混淆數據中任何可能的用戶的貢獻,以便在運行時對聚合查詢結果進行混淆, AWS Clean Rooms 差分隱私要求最終SELECT statement
的聚合函數在用戶級數據上運行。
下列範例會使用socialco_users
來自媒體發行者的名為socialco_impressions
和的兩個資料表,這些資料表想要在與運動品牌合作的同時使用差異隱私來保護athletic_brand_sales
資料。媒體發行者已將該user_id
欄設定為使用者識別碼欄,同時在中啟用差異隱私 AWS Clean Rooms。廣告客戶不需要差分隱私保護,並希望對合併數據使用 CTE 運行查詢。由於其 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