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

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

ID 映射表分析规则

在中 AWS Clean Rooms,ID 映射表分析规则不是独立的分析规则。这种类型的分析规则由管理 AWS Clean Rooms 并用于连接不同的身份数据以方便查询。它会自动添加到 ID 映射表中,并且无法编辑。它会继承协作中其他分析规则的行为,前提是这些分析规则是同构分析规则。

ID 映射表分析规则对 ID 映射表强制执行安全措施。它限制协作成员使用 ID 映射表直接选择或检查两个成员数据集之间的非重叠人群。当在查询中与其他分析规则一起隐式使用时,ID 映射表分析规则用于保护 ID 映射表中的敏感数据。

使用 ID 映射表分析规则,在展开的 SQL 中 AWS Clean Rooms 强制执行 ID 映射表两侧的重叠。这样做可让您执行以下任务:

  • 在中使用 ID 映射表的重叠部分 JOIN 声明。

    AWS Clean Rooms 允许 INNER, LEFT,或 RIGHT 如果符合 ID 映射表,则将其连接到 ID 映射表中。

  • 使用中的映射表列 JOIN 声明。

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

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

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

ID 映射表分析规则查询控制 中定义的分析规则的参数包括查询控制和查询结果控制。它的查询控件包括要求在 ID 映射表中重叠的功能 JOIN 语句(即,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 | RIGHT ] JOIN cr_identity_mapping_table idmt ON idmt.cr_drivers_license_id = cr_dl.id [ INNER | LEFT | 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 | RIGHT ] JOIN cr_identity_mapping_table idmt ON idmt.cr_drivers_license_id = cr_dl.id [ INNER | LEFT | 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 | RIGHT ] JOIN cr_identity_mapping_table idmt ON idmt.cr_drivers_license_id = cr_dl.id [ INNER | LEFT | 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 语句中使用的列(如果有)。

A dimensionColumn 可以用于 SELECT 以及 GROUP BY.

可以显示为 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