差分隱私查詢提示和範例 - AWS Clean Rooms

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

差分隱私查詢提示和範例

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