

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

# ID 映射表分析規則
<a name="analysis-rules-id-mapping-table"></a>

在 中 AWS Clean Rooms，*ID 映射資料表分析規則*不是獨立的分析規則。這種類型的分析規則由 管理 AWS Clean Rooms ，用於聯結不同的身分資料，以方便查詢。它會自動新增至 ID 映射表，而且無法編輯。只要這些分析規則是同質的，就會繼承協同合作中其他分析規則的行為。

ID 映射表分析規則會對 ID 映射表強制執行安全性。它限制協作成員使用 ID 映射表直接選取或檢查兩個成員的資料集之間的非重疊人口。ID 映射表分析規則用於隱含在其他分析規則的查詢中使用時，保護 ID 映射表中的敏感資料。

使用 ID 映射表分析規則， 會在擴展的 SQL 中 AWS Clean Rooms 強制執行 ID 映射表兩側的重疊。這可讓您執行下列任務：
+ 在 JOIN陳述式中使用 ID 映射表的重疊。

  AWS Clean Rooms 允許 ID 映射資料表上的 INNER、 LEFT或 RIGHT聯結，如果其遵守重疊。為了保護敏感映射資訊，ID 映射表必須一律位於任何JOIN操作的「inner」端。例如，下列JOIN操作有效：
  + table LEFT JOIN id\$1mapping\$1table
  + id\$1mapping\$1table RIGHT JOIN table
  + table INNER JOIN id\$1mapping\$1table

  下列JOIN操作無效：
  + id\$1mapping\$1table LEFT JOIN table
  + table RIGHT JOIN id\$1mapping\$1table

  這可防止您的資料集中沒有對應相符項目的映射記錄暴露。允許此類操作可能會洩露有關其他協同合作成員資料映射的敏感資訊。
+ 在 JOIN陳述式中使用映射表資料欄。

  您無法在下列陳述式中使用映射表欄：SELECT、GROUP BY、、 WHERE HAVING或 ORDER BY（除非在來源 ID 命名空間關聯或目標 ID 命名空間關聯上修改保護）。
+ 在擴展的 SQL 中， AWS Clean Rooms 也支援 OUTER JOIN、隱含 JOIN和 CROSS JOIN。這些聯結無法滿足重疊要求。反之， AWS Clean Rooms 使用 `requireOverlap` 來指定必須加入哪些資料欄。

支援的查詢結構和語法在 中定義[ID 映射表查詢結構和語法](#id-mapping-table-query-controls)。

中定義的分析規則參數[ID 映射表分析規則查詢控制項](#parameters-id-mapping-query-controls)包括查詢控制項和查詢結果控制項。其查詢控制項包含要求 JOIN陳述式中 ID 映射資料表重疊的功能 （即 `requireOverlap`)。

**Topics**
+ [ID 映射表查詢結構和語法](#id-mapping-table-query-controls)
+ [ID 映射表分析規則查詢控制項](#parameters-id-mapping-query-controls)
+ [ID 映射表分析規則預先定義的結構](#id-mapping-table-predefined-structure)
+ [ID 映射表分析規則 – 範例](#id-mapping-table-example)

## ID 映射表查詢結構和語法
<a name="id-mapping-table-query-controls"></a>

對具有 ID 映射資料表分析規則的資料表進行查詢必須遵循下列語法。

```
--select_list_expression
SELECT 
provider.data_col, consumer.data_col 

--table_expression
FROM provider

JOIN idMappingTable idmt ON provider.id = idmt.sourceId

JOIN consumer ON consumer.id = idmt.targetId
```

### 協同合作資料表
<a name="collab-table-structure"></a>

下表代表協同 AWS Clean Rooms 合作中存在的已設定資料表。**cr\$1drivers\$1license** 和 **cr\$1management** 資料表中的 **ID** 資料欄代表要與 ID 映射資料表相符的資料欄。

**cr\$1drivers\$1license**


|  |  |  | 
| --- |--- |--- |
| id | driver\$1name | state\$1of\$1registration | 
| 1 | Eduard | TX | 
| 2 | Dana | MA | 
| 3 | Gweneth | IL | 

**cr\$1 保險**


|  |  |  | 
| --- |--- |--- |
| id | policyholder\$1email | policy\$1number | 
| a | eduardo@internal.company.com | 17f9d04e-f5be-4426-bdc4-250ed59c6529 | 
| b | gwen@internal.company.com | 3f0092db-2316-48a8-8d44-09cf8f6e6c64 | 
| c | rosa@internal.company.com | d7692e84-3d3c-47b8-b46d-a0d5345f0601 | 

### ID 映射表
<a name="id-mapping-table-structure"></a>

下表代表與 **cr\$1drivers\$1license** 和 **cr\$1management** 資料表相符的現有 ID 映射資料表。並非所有項目都有兩個協同合作資料表IDs。


|  |  | 
| --- |--- |
| cr\$1drivers\$1license\$1id | cr\$1insurance\$1id | 
| 1 | a | 
| 2 | null | 
| 3 | b | 
| null | c | 

ID 映射資料表分析規則僅允許在一組重疊資料上執行查詢，如下所示：


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| cr\$1drivers\$1license\$1id | cr\$1insurance\$1id | driver\$1name | state\$1of\$1registration | policyholder\$1email | policy\$1number | 
| 1 | a | Eduard | TX | eduardo@internal.company.com | 17f9d04e-f5be-4426-bdc4-250ed59c6529 | 
| 3 | b | Gweneth | IL | gwen@internal.company.com | 3f0092db-2316-48a8-8d44-09cf8f6e6c64 | 

### 查詢範例
<a name="id-mapping-table-example-queries"></a>

下列範例顯示 ID 映射資料表聯結的有效位置：

```
-- Single ID mapping table
SELECT
    [ select_items ]FROM
    cr_drivers_license cr_dl
    [ INNER | LEFT ] JOIN cr_identity_mapping_table idmt ON idmt.cr_drivers_license_id = cr_dl.id
    [ INNER | RIGHT ] JOIN cr_insurance cr_in            ON idmt.cr_insurance_id       = cr_in.id
;
-- Single ID mapping table (Subquery)
SELECT
    [ select_items ]FROM (
    SELECT
        [ select_items ]
    FROM
        cr_drivers_license cr_dl
        [ INNER | LEFT ] JOIN cr_identity_mapping_table idmt ON idmt.cr_drivers_license_id = cr_dl.id
        [ INNER | RIGHT ] JOIN cr_insurance cr_in            ON idmt.cr_insurance_id       = cr_in.id
)
;
-- Single ID mapping table (CTE)
WITH
    matched_ids AS (
        SELECT
            [ select_items ]
        FROM
            cr_drivers_license cr_dl
            [ INNER | LEFT ] JOIN cr_identity_mapping_table idmt ON idmt.cr_drivers_license_id = cr_dl.id
            [ INNER | RIGHT ] JOIN cr_insurance cr_in            ON idmt.cr_insurance_id       = cr_in.id
    )SELECT
    [ select_items ]FROM
    matched_ids
;
```

### 考量事項
<a name="id-mapping-table-considerations"></a>

對於 ID 映射資料表查詢結構和語法，請注意下列事項：
+ 您無法編輯它。
+ 根據預設，它會套用至 ID 映射表。
+ 它在協同合作中使用來源和目標 ID 命名空間關聯。
+ 根據預設，ID 映射表會設定為為來自 ID 命名集的資料欄提供預設保護。您可以修改此組態，以便在查詢中的任何位置允許來自 ID 命名空間 ( `sourceID`或 `targetID`) 的資料欄。如需詳細資訊，請參閱[中的 ID 命名空間 AWS Clean Rooms](working-with-id-namespaces.md)。
+ ID 映射資料表分析規則會繼承協同合作中其他分析規則的 SQL 限制。

## ID 映射表分析規則查詢控制項
<a name="parameters-id-mapping-query-controls"></a>

使用 ID 映射資料表查詢控制項， AWS Clean Rooms 控制資料表中的資料欄如何用於查詢資料表。例如，它會控制哪些資料欄用於聯結，以及哪些資料欄需要重疊。ID 映射資料表分析規則也包含的功能可讓您允許投影 `sourceID`、 `targetID`或兩者，而無需 JOIN。

下表說明每個控制項。


| 控制項 | 定義 | Usage | 
| --- | --- | --- | 
| joinColumns | 可以查詢的成員可以在 INNER JOIN 陳述式中使用的資料欄。 | 除了 INNER JOIN 之外，您無法joinColumns在查詢的任何其他部分中使用 。如需詳細資訊，請參閱[聯結控制項](analysis-rules-aggregation.md#join-controls)。 | 
| dimensionColumns  | 可在 SELECT 和 GROUP BY 陳述式中查詢的成員可以使用的資料欄 （如果有）。 |  `dimensionColumn` 可用於 SELECT和 GROUP BY。 `dimensionColumn` 可以顯示為 `joinKeys`。 只有在括號`dimensionColumns`中指定 JOIN 子句時，才能在 JOIN 子句中使用 。  | 
| queryContraints:RequireOverlap |  ID 映射表中必須聯結的資料欄，才能執行查詢。  |  這些資料欄必須用來加入 ID 映射資料表和協同合作資料表。  | 

## ID 映射表分析規則預先定義的結構
<a name="id-mapping-table-predefined-structure"></a>

ID 映射表分析規則的預先定義結構隨附套用到 `sourceID`和 的預設保護`targetID`。這表示在查詢中必須使用套用保護的 欄。

您可以透過下列方式設定 ID 映射表分析規則：
+ `sourceID` 和 皆`targetID`受保護

  在此組態中， `sourceID`和 `targetID` 無法同時投影。參考 ID 映射表時， `sourceID`和 `targetID` 必須在 JOIN 中使用。
+ 僅`targetID`受保護

  在此組態中， `targetID` 無法投影。參考 ID 映射表時，`targetID`必須在 JOIN 中使用 。`sourceID` 可用於查詢。
+ 僅`sourceID`受保護

  在此組態中， `sourceID` 無法投影。參考 ID 映射表時，`sourceID`必須在 JOIN 中使用 。`targetID` 可用於查詢。
+ 既不`sourceID`受保護也不`targetID`受保護

  在此組態中，ID 映射表不受可在查詢中使用的任何特定強制執行約束。

下列範例顯示 ID 映射資料表分析規則的預先定義結構，其預設保護會套用至 `sourceID`和 `targetID`。在此範例中，ID 映射資料表分析規則僅允許資料`sourceID`欄和`targetID`資料欄上的 INNER JOIN。

```
{
  "joinColumns": [
    "source_id",
    "target_id"
  ],
  "queryConstraints": [
    {
      "requireOverlap": {
        "columns": [
          "source_id",
          "target_id"
        ]
      }
    }
  ],
  "dimensionColumns": [] // columns that can be used in SELECT and JOIN
}
```

下列範例顯示 ID 映射資料表分析規則的預先定義結構，其中包含套用至 的保護`targetID`。在此範例中，ID 映射資料表分析規則僅允許資料`sourceID`欄上的 INNER JOIN。

```
{
  "joinColumns": [
    "source_id",
    "target_id"
  ],
  "queryConstraints": [
    {
      "requireOverlap": {
        "columns": [
          "target_id"
        ]
      }
    }
  ],
  "dimensionColumns": [
    "source_id"
  ]
}
```

下列範例顯示 ID 映射資料表分析規則的預先定義結構，其中包含套用至 的保護`sourceID`。在此範例中，ID 映射資料表分析規則僅允許資料`targetID`欄上的 INNER JOIN。

```
{
  "joinColumns": [
    "source_id",
    "target_id"
  ],
  "queryConstraints": [
    {
      "requireOverlap": {
        "columns": [
          "source_id"
        ]
      }
    }
  ],
  "dimensionColumns": [
    "target_id"
  ]
}
```

下列範例顯示未將保護套用至 `sourceID`或 的 ID 映射資料表分析規則的預先定義結構`targetID`。在此範例中，ID 映射資料表分析規則允許資料`sourceID`欄和`targetID`資料欄上的 INNER JOIN。

```
{
  "joinColumns": [
    "source_id",
    "target_id"
  ],
  "queryConstraints": [
    {
      "requireOverlap": {
        "columns": []
      }
    }
  ],
  "dimensionColumns": [
    "source_id",
    "target_id"
  ]
}
```

## ID 映射表分析規則 – 範例
<a name="id-mapping-table-example"></a>

例如，公司可以使用 ID 映射表分析規則來使用多方 LiveRamp 轉碼，而不是撰寫參考個人身分識別資訊 (PII) 的長瀑布陳述式。下列範例示範如何使用 ID AWS Clean Rooms 映射資料表分析規則在 中協作。

A 公司是擁有客戶和銷售資料的廣告商，將用作來源。A 公司也會代表合作中的各方執行轉碼，並帶來 LiveRamp 登入資料。

B 公司是具有事件資料的發佈者，將用作目標。

**注意**  
A 公司或 B 公司都可以提供 LiveRamp 轉碼登入資料並執行轉碼。

若要建立協同合作以啟用協同合作 ID 映射表分析，公司會執行下列動作：

1. A 公司建立協同合作並建立成員資格。它新增了 B 公司，該公司也會在協同合作中建立成員資格。

1. 公司 A 關聯現有的 ID 命名空間來源，或使用 AWS Clean Rooms 主控台 AWS Entity Resolution 在 中建立新的 ID 命名空間來源。

   公司 A 會建立已設定的資料表及其銷售資料，並在 ID 映射資料表`sourceId`中建立索引鍵為 的資料欄。

   ID 命名空間來源提供要轉碼的資料。

1. B 公司會關聯現有的 ID 命名空間目標，或使用 AWS Clean Rooms 主控台 AWS Entity Resolution 在 中建立新的 ID 命名空間目標。

   B 公司會建立已設定的資料表，其中包含其事件資料，以及 ID 映射資料表`targetId`中索引鍵為 的資料欄。

   ID 命名空間目標不提供要轉碼的資料，僅提供 LiveRamp 組態周圍的中繼資料。

1. A 公司探索與協同合作相關聯的兩個 ID 命名空間，並建立和填入 ID 映射表。

1. A 公司透過加入 ID 映射表，跨兩個資料集執行查詢。

   ```
   --- this would be valid for Custom or List
   SELECT provider.data_col, consumer.data_col
   FROM provider
     JOIN idMappingTable-123123123123-myMappingWFName idmt 
        ON provider.id = idmt.sourceId
     JOIN consumer 
        ON consumer.id = idmt.targetId
   ```