

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

# のカスタム分析ルール AWS Clean Rooms
<a name="analysis-rules-custom"></a>

では AWS Clean Rooms、*カスタム分析ルール*は、設定されたテーブルでカスタムクエリを実行できるようにする新しいタイプの分析ルールです。カスタム SQL クエリは、現在も SELECT コマンドの使用のみに制限されていますが、[集約](analysis-rules-aggregation.md#agg-query-controls)クエリや[リスト](analysis-rules-list.md#list-query-controls)クエリよりも多くの SQL 構文を使用できます (例えば、ウィンドウ関数、OUTER JOIN、CTE、サブクエリなど。詳細なリストについては、「[AWS Clean Rooms SQL リファレンス](https://docs.aws.amazon.com/clean-rooms/latest/sql-reference/sql-reference.html)」を参照してください)。カスタム SQL クエリでは、[集約](analysis-rules-aggregation.md#agg-query-structure-syntax)クエリや[リスト](analysis-rules-list.md#list-query-controls)クエリのようなクエリ構造に従う必要はありません。

カスタム分析ルールは、カスタムアトリビューション分析、ベンチマーキング、増分解析、オーディエンス発掘など、集計分析ルールやリスト分析ルールよりも高度なユースケースに対応します。これは、集計分析ルールおよびリスト分析ルールでサポートされるユースケースのスーパーセットに追加されるものです。

カスタム分析ルールは差分プライバシーもサポートします。差分プライバシーは、データプライバシー保護のための数学的に厳格なフレームワークです。詳細については、「[AWS Clean Rooms 差分プライバシー](differential-privacy.md)」を参照してください。分析テンプレートを作成すると、 AWS Clean Rooms 差分プライバシーはテンプレートをチェックして、 AWS Clean Rooms 差分プライバシーの汎用クエリ構造と互換性があるかどうかを確認します。この検証により、差分プライバシー保護テーブルでは許可されない分析テンプレートが作成されなくなります。

カスタム分析ルールを設定する場合、データ所有者は、[分析テンプレート](create-analysis-template.md)に保存されている特定のカスタムクエリを自身の設定済みテーブルで実行することを許可できます。データ所有者は、分析テンプレートを確認してから、カスタム分析ルールの許可された分析コントロールに追加します。分析テンプレートは、(テーブルが他のコラボレーションに関連付けられている場合でも) 作成されたコラボレーションでのみ使用および表示され、そのコラボレーションでクエリを行えるメンバーのみが実行できます。

または、他のメンバー (クエリプロバイダー) が確認なしでクエリを作成できるよう許可することもできます。その場合は、許可対象のクエリプロバイダーが管理するクエリプロバイダーのアカウントをカスタム分析ルールに追加します。クエリプロバイダーがクエリを行えるメンバーであれば、設定済みテーブルで任意のクエリを直接実行できます。クエリプロバイダーは、[分析テンプレートを作成](create-analysis-template.md)することによってクエリを作成することもできます。クエリプロバイダーによって作成されたクエリは、 が存在し、テーブル AWS アカウント が関連付けられているすべてのコラボレーションで、テーブルで自動的に実行できます。

データ所有者がクエリの作成を許可できるのは分析テンプレートまたはアカウントのみで、両方には許可できません。データ所有者がこれを空欄のままにすると、クエリを行えるメンバーは設定済みテーブルでクエリを実行できません。

**禁止された出力列のクエリ制約と CACHE TABLE**  
カスタム分析ルールで[許可されていない出力列の制約](https://docs.aws.amazon.com/clean-rooms/latest/userguide/disallowed-columns.html)は、キャッシュされたテーブルに適用されます。キャッシュされたテーブルは、SELECT 句で許可されていない出力列を参照できません。クエリの後続の部分で、許可されていない出力列制約を持つ列を使用するには、キャッシュされたテーブルを共通テーブル式 (CTE) に変換します。

**Topics**
+ [カスタム分析ルールの事前定義された構造](#custom-predefined-structure)
+ [カスタム分析ルールの例](#custom-example)
+ [差分プライバシーによるカスタム分析ルール](#custom-diff-privacy)

## カスタム分析ルールの事前定義された構造
<a name="custom-predefined-structure"></a>

次の例には、差分プライバシーが有効なカスタム分析ルールを完成させる方法を示す、事前定義された構造が含まれています。`userIdentifier` 値は user\_id** のような、ユーザーを一意に識別する列です。コラボレーションで差分プライバシーが有効になっているテーブルが 2 つ以上ある場合は、 AWS Clean Rooms では、テーブル間でユーザーの一貫した定義を維持するために、両方の分析ルールで同じ列をユーザー ID 列として設定する必要があります。

```
{
  "allowedAnalyses": ["ANY_QUERY"] | string[],
  "allowedAnalysisProviders": [],
  "differentialPrivacy": {
    "columns": [
      {
        "name": "{{userIdentifier}}"
      }
    ]
  }
}
```

次のいずれかを行うことができます。
+ 分析テンプレート ARN を許可された分析コントロールに追加します。この場合、`allowedAnalysisProviders` コントロールは含まれません。

  ```
  {
    allowedAnalyses: string[]
  }
  ```
+  AWS アカウント IDsを`allowedAnalysisProviders`コントロールに追加します。この場合は、`ANY_QUERY` を `allowedAnalyses` コントロールに追加します。

  ```
  {
    allowedAnalyses: ["ANY_QUERY"],
    allowedAnalysisProviders: string[]
  }
  ```

## カスタム分析ルールの例
<a name="custom-example"></a>

次の例は、2 つの企業がカスタム分析ルール AWS Clean Rooms を使用して でコラボレーションする方法を示しています。

A 社には顧客データと売上データがあります。A 社は、B 社のサイトで実施した広告キャンペーンによる売上の増分を把握したいと考えています。B 社には、A 社にとって有用な閲覧データとセグメント属性 (広告を閲覧する際に使用したデバイスなど) があります。

企業 A には、コラボレーションで実行したい特定の増分クエリがあります。

コラボレーションを作成し、コラボレーションでカスタム分析を実行するために、各社は次のことを行います。

1. A 社がコラボレーションを作成し、メンバーシップを作成します。このコラボレーションには、B 社がコラボレーションの相手方のメンバーとして参加します。A 社はコラボレーションでのクエリログ記録を有効にし、自社アカウントでのクエリログの記録を有効にします。

1. B 社がコラボレーションでメンバーシップを作成し、そのアカウントでのクエリログの記録を有効にします。

1. A 社が、設定済み CRM テーブルを作成します。

1. A 社が、設定済み売上テーブルに空のカスタム分析ルールを追加します。

1. A 社が、設定済み売上テーブルをコラボレーションに関連付けます。

1. B 社が、設定済み閲覧者数テーブルを作成します。

1. B 社が、設定済み閲覧者数テーブルに空のカスタム分析ルールを追加します。

1. B 社が、設定済み閲覧者数テーブルをコラボレーションに関連付けます。

1. A 社が、コラボレーションに関連付けられている売上テーブルと閲覧者数テーブルを表示し、キャンペーン月の増分クエリとパラメータを追加して分析テンプレートを作成します。

   ```
   {
       "analysisParameters": [
       {
           "defaultValue": ""
           "type": "DATE"
           "name": "campaign_month"
       }
       ],
       "description": "Monthly incrementality query using sales and viewership data"
       "format": "SQL"
       "name": "Incrementality analysis"
       "source": 
           "WITH labeleddata AS
           (
           SELECT hashedemail, deviceid, purchases, unitprice, purchasedate,
           CASE
               WHEN testvalue IN ('value1', 'value2', 'value3') THEN 0
               ELSE 1
           END AS testgroup
           FROM viewershipdata
           )
           SELECT labeleddata.purchases, provider.impressions
           FROM labeleddata 
           INNER JOIN salesdata
             ON labeleddata.hashedemail = provider.hashedemail
           WHERE MONTH(labeleddata.purchasedate) > :campaignmonth
           AND testgroup = :group
          "
   }
   ```

1. A 社が、自社のアカウント (444455556666 など) をカスタム分析ルールの許可された分析プロバイダーコントロールに追加します。A 社は、作成したすべてのクエリを設定済み販売テーブルで実行できるようにしたいため、許可された分析プロバイダーコントロールを使用しています。

   ```
   {
     "allowedAnalyses": [
       "ANY_QUERY"
     ],
     "allowedAnalysisProviders": [
       "444455556666"
     ]
   }
   ```

1. B 社が、作成された分析テンプレートをコラボレーション内で確認し、クエリ文字列やパラメータなどの内容を確認します。

1. B 社が、分析テンプレートが増分のユースケースに対応しており、設定済み視聴者数テーブルのクエリの実行方法がプライバシー要件を満たしていることを判断します。

1. B 社が、視聴者数テーブルのカスタム分析ルールの許可された分析コントロールに分析テンプレート ARN を追加します。B 社は、設定済み視聴者数テーブルでのみ増分クエリを実行できるようにしたいため、許可された分析コントロールを使用しています。

   ```
   {
     "allowedAnalyses": [
       "arn:aws:cleanrooms:us-east-1:111122223333:membership/41327cc4-bbf0-43f1-b70c-a160dddceb08/analysistemplate/1ff1bf9d-781c-418d-a6ac-2b80c09d6292"
     ]
   }
   ```

1. A 社が分析テンプレートを実行し、パラメータ値 `05-01-2023` を使用します。

## 差分プライバシーによるカスタム分析ルール
<a name="custom-diff-privacy"></a>

では AWS Clean Rooms、カスタム分析ルールは差分プライバシーをサポートしています。差分プライバシーは、データプライバシー保護のための数学的に厳格なフレームワークであり、データを再識別されないように保護するのに役立ちます。

差分プライバシーは、広告キャンペーン計画、広告キャンペーン後の測定、金融機関コンソーシアムにおけるベンチマーク、医療研究のための A/B テストなどの集計分析をサポートします。

サポートされているクエリ構造と構文は、「[クエリの構造と構文](#dp-query-structure-syntax)」で定義されています。

### 差分プライバシーを使用したカスタム分析ルールの例
<a name="custom-diff-privacy-example"></a>

**注記**  
AWS Clean Rooms 差分プライバシーは、データが Amazon S3 に保存されているコラボレーションでのみ使用できます。

前のセクションで説明した[カスタム分析ルールの例](#custom-example)を考えてみます。この例は、差分プライバシーを使用して再識別の試みからデータを保護すると同時に、パートナーがデータからビジネスクリティカルなインサイトを学べるようにする方法を示しています。閲覧者データを保有している B 社が、差分プライバシーを使用してデータを保護したいと想定します。差分プライバシーの設定を完了するために、B 社は次のステップを実行します。

1. B 社は差分プライバシーを有効にし、設定済み閲覧者数テーブルにカスタム分析ルールを追加します。B 社は `viewershipdata.hashedemail` をユーザー識別子列として選択します。

1. B 社はコラボレーションに[差分プライバシーポリシーを追加し](configure-differential-privacy.md)、閲覧者データテーブルをクエリに使用できるようにします。B 社はデフォルトポリシーを選択し、設定を迅速に完了します。

A社 は、B 社のサイトでの広告キャンペーンの売上増分を把握したいと考えており、分析テンプレートを実行します。クエリは AWS Clean Rooms 差分プライバシーの汎用[クエリ構造](#dp-query-structure-syntax)と互換性があるため、クエリは正常に実行されます。

### クエリの構造と構文
<a name="dp-query-structure-syntax"></a>

差分プライバシーが有効になっているテーブルが 1 つ以上含まれているクエリは、次の構文に従う必要があります。

```
query_statement:
    [cte, ...] final_select

 cte:
    WITH sub_query AS (
       inner_select
       [ UNION | INTERSECT | UNION_ALL | EXCEPT/MINUS ]
       [ inner_select ]
    )
   
 inner_select:
     SELECT [user_id_column, ] expression [, ...] 
     FROM table_reference [, ...] 
     [ WHERE condition ]
     [ GROUP BY user_id_column[, expression] [, ...] ] 
     [ HAVING condition ] 

 final_select:
     SELECT [expression, ...] | COUNT | COUNT_DISTINCT | SUM | AVG | STDDEV
     FROM table_reference [, ...]
     [ WHERE condition ]
     [ GROUP BY expression [, ...] ] 
     [ HAVING COUNT | COUNT_DISTINCT | SUM | AVG | STDDEV | condition ]
     [ ORDER BY column_list ASC | DESC ] 
     [ OFFSET literal ]
     [ LIMIT literal ]

 expression:
    column_name [, ...] | expression AS alias | aggregation_functions | window_functions_on_user_id | scalar_function | CASE | column_name math_expression [, expression]  
    
 window_functions_on_user_id:
    function () OVER (PARTITION BY user_id_column, [column_name] [ORDER BY column_list ASC|DESC])
```

**注記**  
差分プライバシークエリの構造と構文については、次の点に注意してください。  
サブクエリはサポートされていません。
テーブルや CTE に差分プライバシーで保護されたデータが含まれている場合は、テーブル共通式 (CTE) がユーザー識別子列を出力する必要があります。フィルター、グループ化、集計はユーザーレベルで行う必要があります。
Final\_select では、COUNT DISTINCT、COUNT、SUM、AVG、STDDEV 集約関数が使用できます。

差分プライバシーでサポートされる SQL キーワードの詳細については、「[AWS Clean Rooms 差分プライバシーの SQL 機能](dp-sql-capabilities.md)」を参照してください。