本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 命名空间的列(
sourceID
或targetID
)出现在查询中的任何位置。有关更多信息,请参阅 ID 中的命名空间 AWS Clean Rooms。 -
ID 映射表分析规则继承了协作中其他分析规则的SQL限制。
ID 映射表分析规则查询控件
使用 ID 映射表查询 AWS Clean Rooms 控件,控制如何使用表中的列来查询表。例如,它控制哪些列用于联接,哪些列需要重叠。ID 映射表分析规则还包括允许投影sourceID
targetID
、或两者兼而有之的功能,而无需进行投影JOIN。
下表说明了每个控件。
控件 | 定义 | 使用量 |
---|---|---|
joinColumns |
可以查询的成员可以在INNERJOIN语句中使用的列。 | 除此之外,您不能joinColumns 在查询的任何其他部分中使用INNERJOIN。有关更多信息,请参阅 联接控制。 |
dimensionColumns |
可以查询的成员可以在 in SELECT 和 GROUP BY 语句中使用的列(如果有)。 |
A A 只有在方括号 |
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
可以在查询中使用。 -
两者都不是,
sourceID
targetID
或者在此配置中,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 映射表分析,两家公司要执行以下操作:
-
A 公司创建协作并创建成员身份。它增加了B公司,该公司还创建了合作成员资格。
-
公司 A 要么关联现有 ID 命名空间来源,要么 AWS Entity Resolution 数据匹配服务 使用 AWS Clean Rooms 控制台创建新的 ID 命名空间源。
公司 A 创建了一个配置表,其中包含其销售数据,并在 ID 映射表
sourceId
中键入了一列。ID 命名空间源提供要转码的数据。
-
B 公司要么关联现有 ID 命名空间目标,要么 AWS Entity Resolution 数据匹配服务 使用 AWS Clean Rooms 控制台创建一个新的 ID 命名空间目标。
公司 B 创建了一个配置表,其中包含其事件数据和 ID 映射表
targetId
中键入的列。ID 命名空间目标不提供要转码的数据,只提供有关 LiveRamp 配置的元数据。
-
A 公司发现与协作关联的两个 ID 命名空间,并创建并填充一个 ID 映射表。
-
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