本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Differential Privacy 查询技巧和示例
AWS Clean Rooms 差异隐私使用通用查询结构来支持各种结构,例如用于数据准备的SQL公用表表达式 (CTEs) 和常用的聚合函数COUNT
,例如、或。SUM
为了通过在运行时向聚合查询结果添加噪音来混淆任何可能的用户在数据中的贡献,Difersient Privacy 要求最终SELECT statement
版本中的聚合函数在用户级数据上运行。 AWS Clean Rooms
以下示例使用来自一个媒体发布者的两个名为 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