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

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

ID 映射表分析规则

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

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

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

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

    AWS Clean Rooms 允许在 ID 映射表上使用INNERLEFT、或RIGHT联接,前提是它尊重重叠之处。

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

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

  • 在扩展中SQL, AWS Clean Rooms 还支持OUTERJOINJOIN、隐式和CROSSJOIN。这些连接无法满足重叠要求。而是 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_license 和 cr_insuran c e 表中的 id 列都表示与 ID 映射表匹配的列。

cr_drivers_licens

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

cr_insuran

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

身份映射表

下表显示了与 cr_d rivers_license 和 cr_insuranc e 表相匹配的现有 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 映射表分析规则还包括允许投影sourceIDtargetID、或两者兼而有之的功能,而无需进行投影JOIN。

下表说明了每个控件。

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

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

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

A dimensionColumn 可以在SELECT和中使用GROUPBY。

A dimensionColumn 可以显示为joinKeys

只有在方括号dimensionColumns中指定JOIN子句时,才能在子句中使用。

queryContraints:RequireOverlap

ID 映射表中必须连接的列,才能运行查询。

这些列必须用于 JOIN ID 映射表和协作表。

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

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

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

  • 两者兼sourceID而有targetID

    在此配置中,targetID不能同时投影sourceID和两者。引用 ID 映射表JOIN时,targetID必须在 a 中使用sourceID和。

  • targetID受保护

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

  • sourceID受保护

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

  • 两者都不是,sourceIDtargetID或者

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

以下示例显示了 ID 映射表分析规则的预定义结构,其默认保护应用于和。sourceID targetID在此示例中,ID 映射表分析规则仅允许在sourceID列和列INNERJOIN上都使用。targetID

{ "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列INNERJOIN上使用。

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

以下示例显示了应用于保护的 ID 映射表分析规则的预定义结构。sourceID在此示例中,ID 映射表分析规则仅允许在targetID列INNERJOIN上使用。

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

以下示例显示了未对或应用保护的 ID 映射表分析规则的预定义结构。sourceID targetID在此示例中,ID 映射表分析规则允许在sourceID列和列INNERJOIN上都使用。targetID

{ "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