

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 差分プライバシークエリのヒントと例
<a name="dp-query-tips-examples"></a>

AWS Clean Rooms 差分プライバシーは[、汎用クエリ構造](dp-sql-capabilities.md)を使用して、データ準備のための共通テーブル式 (CTEs) や、、 などの一般的に使用される集計関数など`COUNT`、さまざまな SQL コンストラクトをサポートします`SUM`。実行時にクエリ結果を集計するためのノイズを追加して、データ内の可能なユーザーの寄与を難読化するために、 AWS Clean Rooms 差分プライバシーでは、最後の集計関数`SELECT statement`をユーザーレベルのデータで実行する必要があります。

次の例では、`athletic_brand_sales` データを持つスポーツブランドとのコラボレーションで差分プライバシーを使用してデータを保護したいと考えているメディアパブリッシャーの `socialco_impressions` と `socialco_users` という名前の 2 つのテーブルを使用しています。メディアパブリッシャーは、 AWS Clean Roomsで差分プライバシーを有効にして、`user_id` 列をユーザー識別子列として設定しています。広告主は差分プライバシー保護を必要としないため、組み合わせたデータに対して CTE を使用してクエリを実行したいと考えています。CTE では差分プライバシーで保護されたテーブルを使用しているため、広告主は保護されているテーブルのユーザー ID 列を CTE 列のリストに含め、保護対象のテーブルをユーザー ID 列に結合します。

```
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` 句にユーザー ID 列を含める必要があります。

```
ROW_NUMBER() OVER (PARTITION BY conversion_id, user_id ORDER BY match_type, match_age) AS row
```