

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

# 中的自訂分析規則 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、CTEs 或子查詢；如需完整清單，請參閱 [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*。當您在協同合作中開啟了兩個或多個具有差異隱私權的資料表時， AWS Clean Rooms 會要求您在兩個分析規則中設定與使用者識別符欄相同的資料欄，以維護跨資料表的使用者的一致定義。

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

您可擇一方法：
+ 將分析範本 ARNs新增至允許的分析控制項。在此情況下，不包含`allowedAnalysisProviders`控制項。

  ```
  {
    allowedAnalyses: string[]
  }
  ```
+ 將 AWS 帳戶 IDs新增至`allowedAnalysisProviders`控制項。在此情況下，您會將 `ANY_QUERY` 新增至`allowedAnalyses`控制項。

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

## 自訂分析規則範例
<a name="custom-example"></a>

下列範例示範兩家公司如何使用自訂分析規則 AWS Clean Rooms 在 中協作。

A 公司有客戶和銷售資料。A 公司有興趣了解 B 公司網站上的廣告行銷活動銷售增量。B 公司具有對公司有用的瀏覽資料和客群屬性 （例如，檢視廣告時所使用的裝置）。

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) 新增至自訂分析規則中允許的分析提供者控制項。他們使用允許的分析提供者控制項，因為他們想要允許他們建立的任何查詢在其銷售設定的資料表上執行。

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

1. B 公司會在協同合作中看到建立的分析範本，並檢閱其內容，包括查詢字串和參數。

1. B 公司判斷分析範本達到增量使用案例，並符合其檢視設定資料表如何查詢的隱私權要求。

1. B 公司將分析範本 ARN 新增至檢視器資料表自訂分析規則中允許的分析控制項。他們使用允許的分析控制項，因為他們只想要允許增量查詢在其檢視器設定的資料表上執行。

   ```
   {
     "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，自訂分析規則支援差異隱私權。差異隱私權是一種數學上嚴格的資料隱私權保護架構，可協助您保護資料免於重新識別嘗試。

差異隱私權支援彙總分析，例如廣告行銷活動規劃、post-ad-campaign測量、金融機構協會中的基準測試，以及醫療保健研究的 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>

包含至少一個已開啟差異隱私權的資料表的查詢必須遵循下列語法。

```
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 涉及受差異隱私權保護的資料，通用資料表表達式 (CTEs) 應發出使用者識別符資料欄。篩選、分組和彙總應在使用者層級完成。
Final\_select 允許 COUNT DISTINCT、COUNT、SUM、AVG 和 STDDEV 彙總函數。

如需差異隱私權支援哪些 SQL 關鍵字的詳細資訊，請參閱 [AWS Clean Rooms 差異隱私權的 SQL 功能](dp-sql-capabilities.md)。