ID 映射表分析规则 - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

ID 映射表分析规则

在中 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 映射表上使用INNERLEFT、或RIGHT联接,前提是它尊重重叠之处。为了保护敏感的映射信息,ID 映射表必须始终位于任何JOIN操作的 inner “” 端。例如,以下JOIN操作是有效的:

    • table LEFT JOIN id_mapping_table

    • id_mapping_table RIGHT JOIN table

    • table INNER JOIN id_mapping_table

    以下JOIN操作无效:

    • id_mapping_table LEFT JOIN table

    • table RIGHT JOIN id_mapping_table

    这样可以防止数据集中没有相应匹配项的映射记录被泄露。允许此类操作可能会泄露有关其他协作成员数据映射的敏感信息。

  • 在 JOIN 语句中使用映射表列。

    不能在以下语句中使用映射表列:SELECT、WHERE、HAVING、GROUP BY、或 ORDER BY(除非修改了源 ID 命名空间关联或目标 ID 命名空间关联的保护)。

  • 在扩展的 SQL 中, AWS Clean Rooms 还支持OUTERJOINJOIN、隐式和 CROSS JOIN。这些联接无法满足重叠要求。而是 AWS Clean Rooms 使用requireOverlap来指定必须连接哪些列。

支持的查询结构和语法在 ID 映射表查询结构和语法 中定义。

ID 映射表分析规则查询控制 中定义的分析规则的参数包括查询控制和查询结果控制。其查询控制包括要求在 JOIN 语句中使用 ID 映射表重叠部分的功能(即 requireOverlap)。

ID 映射表查询结构和语法

对具有 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

协作表

下表表示 AWS Clean Rooms 协作中存在的已配置表。cr_drivers_licensecr_insurance 表中的 id 列都表示与 ID 映射表匹配的列。

cr_drivers_license

id 司机姓名 注册状态
1 爱德华 TX
2 达纳 MA
3 Gweneth IL

cr_insurance

id 保单持有人_电子邮件 保单编号
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 映射表

下表显示了在 cr_drivers_licensecr_insurance 表上匹配的现有 ID 映射表。并非所有条目都 IDs 适用于两个协作表。

cr_drivers_license_id cr_insurance_id
1 a
2 null
3 b
null c

ID 映射表分析规则仅允许对一组重叠数据运行查询,重叠数据如下所示:

cr_drivers_license_id cr_insurance_id 司机姓名 注册状态 保单持有人_电子邮件 保单编号
1 a 爱德华 TX eduardo@internal.company.com 17f9d04e-f5be-4426-bdc4-250ed59c6529
3 b Gweneth IL gwen@internal.company.com 3f0092db-2316-48a8-8d44-09cf8f6e6c64

示例查询

以下示例显示了 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 ;

注意事项

关于 ID 映射表查询的结构和语法,请注意以下几点:

  • 您不能对其进行编辑。

  • 默认情况下,它会应用于 ID 映射表。

  • 它在协作内部使用源和目标 ID 命名空间关联。

  • 默认情况下,ID 映射表配置为向来自 ID 命名空间的列提供默认保护。您可以修改此配置,以便来自 ID 命名空间(sourceIDtargetID)的列可以出现在查询中的任何位置。有关更多信息,请参阅 ID 中的命名空间 AWS Clean Rooms

  • ID 映射表分析规则将继承协作中其他分析规则的 SQL 限制。

ID 映射表分析规则查询控制

使用 ID 映射表查询 AWS Clean Rooms 控件,控制如何使用表中的列来查询表。例如,它可以控制哪些列用于联接,哪些列需要重叠。ID 映射表分析规则还包括允许在不需要 JOIN 的情况下投影 sourceID 和/或 targetID 的功能。

下表介绍了每种控制。

控件 定义 使用量
joinColumns 可以查询的成员能在 INNER JOIN 语句中使用的列。 除了 INNER JOIN 之外,不能在查询的任何其他部分中使用 joinColumns

有关更多信息,请参阅 联接控制

dimensionColumns 可以查询的成员能在 SELECT 和 GROUP BY 语句中使用的列(如果有)。

可以在 SELECT 和 GROUP BY 中使用的 dimensionColumn

可以显示为 joinKeysdimensionColumn

如果使用方括号指定 dimensionColumns,则只能在 JOIN 子句中使用它。

queryContraints:RequireOverlap

ID 映射表中必须联接以便可以运行查询的列。

必须使用这些列对 ID 映射表和协作表执行 JOIN。

ID 映射表的分析规则预定义结构

ID 映射表分析规则的预定义结构对 sourceIDtargetID 应用默认保护。这意味着在查询中必须使用应用了保护的列。

您可以通过以下方式配置 ID 映射表分析规则:

  • sourceIDtargetID 均受到保护

    在此配置中,不能同时投影 sourceIDtargetID。引用 ID 映射表时,必须在 JOIN 中使用 sourceIDtargetID

  • 仅保护 targetID

    在此配置中,不能投影 targetID。引用 ID 映射表时,必须在 JOIN 中使用 targetID。可以在查询中使用 sourceID

  • 仅保护 sourceID

    在此配置中,不能投影 sourceID。引用 ID 映射表时,必须在 JOIN 中使用 sourceID。可以在查询中使用 targetID

  • sourceIDtargetID 均不受保护

    在此配置中,ID 映射表不受可在查询中使用的任何特定强制措施的约束。

以下示例显示了对 sourceIDtargetID 应用默认保护的 ID 映射表分析规则的预定义结构。在此示例中,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 }

以下示例显示了对 targetID 应用保护的 ID 映射表分析规则的预定义结构。在此示例中,ID 映射表分析规则仅允许对 sourceID 列执行 INNER JOIN。

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

以下示例显示了对 sourceID 应用保护的 ID 映射表分析规则的预定义结构。在此示例中,ID 映射表分析规则仅允许对 targetID 列执行 INNER JOIN。

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

以下示例显示了不对 sourceIDtargetID 应用保护的 ID 映射表分析规则的预定义结构。在此示例中,ID 映射表分析规则支持对 sourceID 列和 targetID 列执行 INNER JOIN。

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

ID 映射表分析规则 - 示例

例如,公司可以使用 ID 映射表分析规则来使用多方 LiveRamp 转码,而不是编写引用个人身份信息 (PII) 的长瀑布语句。以下示例演示如何协作 AWS Clean Rooms 使用 ID 映射表分析规则。

A 公司是拥有客户和销售数据的广告商,这些数据将用作源。A 公司还代表合作各方进行转码,并提供 LiveRamp 证书。

B 公司是拥有事件数据的发布者,这些数据将被用作目标。

注意

A 公司或 B 公司均可提供 LiveRamp 转码凭证并执行转码。

为创建支持在协作中运行 ID 映射表分析的协作,两家公司执行以下操作:

  1. A 公司创建协作并创建成员身份。添加公司 B ,该公司还在协作中创建成员身份。

  2. 公司 A 要么关联现有 ID 命名空间来源,要么 AWS Entity Resolution 数据匹配服务 使用 AWS Clean Rooms 控制台创建新的 ID 命名空间源。

    公司 A 创建一个配置表,其中包含他们的销售数据,以及对应于 ID 映射表中的 sourceId 的列。

    ID 命名空间源提供要转码的数据。

  3. B 公司要么关联现有 ID 命名空间目标,要么 AWS Entity Resolution 数据匹配服务 使用 AWS Clean Rooms 控制台创建一个新的 ID 命名空间目标。

    公司 B 创建一个配置表,其中包含他们的事件数据,以及对应于 ID 映射表中的 targetId 的列。

    ID 命名空间目标不提供要转码的数据,只提供有关 LiveRamp 配置的元数据。

  4. 公司 A 发现与协作关联的两个 ID 命名空间,并创建且填充一个 ID 映射表。

  5. 公司 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