中的自定义分析规则 AWS Clean Rooms - AWS Clean Rooms

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

中的自定义分析规则 AWS Clean Rooms

在中 AWS Clean Rooms,自定义分析规则是一种新型的分析规则,它允许对配置的表运行自定义查询。自定义 SQL 查询仍然仅限于只有 SELECT 命令,但与聚合列表查询相比,可以使用更多的 SQL 构造(例如,窗口函数、OUTER JOIN、CTE 或子查询;有关完整列表,请参阅 AWS Clean Rooms SQL 参考)。自定义 SQL 查询不必遵循聚合列表查询之类的查询结构。

与聚合和列表分析规则支持的使用案例相比,自定义分析规则支持更高级的使用案例,例如自定义归因分析、基准测试、增量分析和受众发现。这是对聚合和列表分析规则支持的使用案例的超集的补充。

自定义分析规则还支持差别隐私。差别隐私是一种在数学上非常严格的数据隐私保护框架。有关更多信息,请参阅 AWS Clean Rooms 差异隐私。创建分析模板时, AWS Clean Rooms 差异隐私会检查该模板以确定其是否与 AWS Clean Rooms 差异隐私的通用查询结构兼容。此验证可确保您不会创建不允许使用差异隐私保护表的分析模板。

要配置自定义分析规则,数据所有者可以选择允许存储在分析模板中的特定自定义查询在其配置表上运行。数据所有者在将分析模板添加到自定义分析规则中允许的分析控制之前应先审核这些模板。分析模板仅在创建这些模板的协作中可用和可见(即使该表与其他协作关联),并且只能由可以在该协作中进行查询的成员运行。

或者,成员可以选择允许其他成员(查询提供者)无需审核即可创建查询。成员在自定义分析规则添加允许的查询提供者控制的查询提供者账户。如果查询提供者是可以查询的成员,则他们可以直接在配置表上运行任何查询。查询提供者还可以通过创建分析模板来创建查询。在存在查询提供程序和关联表的所有协作中,自动允许查询提供者创建的任何查询在表上运行。 AWS 账户

数据所有者只能允许分析模板或账户创建查询,不能同时允许两者创建。如果数据所有者将其留空,则可以查询的成员将无法对配置表运行查询。

自定义分析规则预定义结构

以下示例包含一个预定义的结构,说明了如何完成开启差别隐私的自定义分析规则。userIdentifier 值是唯一地标识您的用户的列,例如 user_id。当您在协作中启用了差异隐私的两个或更多表时, AWS Clean Rooms 需要您在两个分析规则中配置与用户标识符列相同的列,以保持各表中用户定义的一致性。

{ "allowedAnalyses": ["ANY_QUERY"] | string[], "allowedAnalysisProviders": [], "differentialPrivacy": { "columns": [ { "name": "userIdentifier" } ] } }

您可以:

  • 将分析模板 ARN 添加到允许的分析控制。在这种情况下,不包括 allowedAnalysisProviders 控制。

    { allowedAnalyses: string[] }
  • allowedAnalysisProviders控件添加成员 AWS 账户 ID。在这种情况下,您可以将 ANY_QUERY 添加到 allowedAnalyses 控制。

    { allowedAnalyses: ["ANY_QUERY"], allowedAnalysisProviders: string[] }

自定义分析规则示例

以下示例演示了两家公司如何合作 AWS Clean Rooms 使用自定义分析规则。

A 公司有客户和销售数据。A 公司有兴趣了解 B 公司网站上广告活动的销售增量。B 公司拥有对 A 公司有用的观众数据和细分属性(例如,他们观看广告时使用的设备)。

A 公司想在协作中运行一个特定的增量查询。

为创建协作并在协作中运行自定义分析,两家公司执行以下操作:

  1. A 公司创建协作并创建成员身份。协作中的另一个成员是 B 公司。A 公司在协作中启用查询日志记录,并在其账户中启用查询日志记录。

  2. B 公司在协作中创建成员身份。它在其账户中启用查询日志记录。

  3. A 公司创建 CRM 配置表。

  4. A 公司向销售配置表添加空的自定义分析规则。

  5. A 公司将销售配置表与协作关联起来。

  6. B 公司创建观众配置表。

  7. B 公司在观众配置表中添加一个空的自定义分析规则。

  8. B 公司将观众配置表与协作关联起来。

  9. A 公司查看与协作关联的销售表和观众表,并创建分析模板,为活动月份添加增量查询和参数。

    { "analysisParameters": [ { "defaultValue": "" "type": "DATE" "name": "campaign_month" } ], "description": "Monthly incrementality query using sales and viewership data" "format": "SQL" "name": "Incrementality analysis" "source": "WITH labeleddata AS ( SELECT hashedemail, deviceid, purchases, unitprice, purchasedate, CASE WHEN testvalue IN ('value1', 'value2', 'value3') THEN 0 ELSE 1 END AS testgroup FROM viewershipdata ) SELECT labeleddata.purchases, provider.impressions FROM labeleddata INNER JOIN salesdata ON labeleddata.hashedemail = provider.hashedemail WHERE MONTH(labeleddata.purchasedate) > :campaignmonth AND testgroup = :group " }
  10. 公司 A 将其帐户(例如 444455556666)添加到自定义分析规则中允许的分析提供者控件中。他们之所以使用允许的分析提供者控制,是因为他们希望允许在销售配置表上运行他们创建的任何查询。

    { "allowedAnalyses": [ "ANY_QUERY" ], "allowedAnalysisProviders": [ "444455556666" ] }
  11. B 公司在协作中看到创建的分析模板并查看其内容,包括查询字符串和参数。

  12. B 公司确定分析模板实现了增量使用案例,并满足如何查询其观众配置表的隐私要求。

  13. B 公司将分析模板 ARN 添加到观众表的自定义分析规则允许的分析控制中。他们之所以使用允许的分析控制,是因为他们只想允许在观众配置表上运行增量查询。

    { "allowedAnalyses": [ "arn:aws:cleanrooms:us-east-1:111122223333:membership/41327cc4-bbf0-43f1-b70c-a160dddceb08/analysistemplate/1ff1bf9d-781c-418d-a6ac-2b80c09d6292" ] }
  14. A 公司运行分析模板并使用参数值 05-01-2023

具有差别隐私的自定义分析规则

在中 AWS Clean Rooms,自定义分析规则支持差异隐私。差别隐私是一种在数学上非常严格的数据隐私保护框架,可以帮助保护您的数据以防范重新识别尝试。

差异隐私支持综合分析,例如广告活动规划、 post-ad-campaign 衡量、金融机构联盟中的基准测试以及医疗保健研究的 A/B 测试。

支持的查询结构和语法在 查询结构和语法 中定义。

具有差别隐私的自定义分析规则示例

考虑上一节中介绍的自定义分析规则示例。该示例说明了如何使用差别隐私保护您的数据以防范重新识别尝试,同时允许您的合作伙伴从您的数据中了解业务关键型见解。假设 B 公司具有观众数据,并希望使用差别隐私保护其数据。为了完成差别隐私设置,B 公司完成以下步骤:

  1. B 公司开启差别隐私,同时在观众配置表中添加自定义分析规则。B 公司选择 viewershipdata.hashedemail 以作为用户标识符列。

  2. B 公司在协作中添加差别隐私策略,以使其观众数据表可供查询。B 公司选择默认策略以快速完成设置。

A 公司希望了解 B 公司网站上的广告活动的销售增量,并运行分析模板。由于该查询与 AWS Clean Rooms Differential Privacy 的通用查询结构兼容,因此,查询成功运行。

查询结构和语法

包含至少一个开启了差别隐私的表的查询必须遵循以下语法。

query_statement: [cte, ...] final_select cte: WITH sub_query AS ( inner_select [ UNION | INTERSECT | UNION_ALL | EXCEPT/MINUS ] [ inner_select ] ) inner_select: SELECT [user_id_column, ] expression [, ...] FROM table_reference [, ...] [ WHERE condition ] [ GROUP BY user_id_column[, expression] [, ...] ] [ HAVING condition ] final_select: SELECT [expression, ...] | COUNT | COUNT_DISTINCT | SUM | AVG | STDDEV FROM table_reference [, ...] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING COUNT | COUNT_DISTINCT | SUM | AVG | STDDEV | condition ] [ ORDER BY column_list ASC | DESC ] [ OFFSET literal ] [ LIMIT literal ] expression: column_name [, ...] | expression AS alias | aggregation_functions | window_functions_on_user_id | scalar_function | CASE | column_name math_expression [, expression] window_functions_on_user_id: function () OVER (PARTITION BY user_id_column, [column_name] [ORDER BY column_list ASC|DESC])
注意

对于差别隐私查询结构和语法,请注意以下事项:

  • 不支持子查询。

  • 如果表或通用表表达式 (CTE) 涉及受差别隐私保护的数据,CTE 应生成用户标识符列。应在用户级别完成筛选、分组和聚合。

  • final_select 允许使用 COUNT DISTINCT、COUNT、SUM、AVG 和 STDDEV 聚合函数。

有关差别隐私支持哪些 SQL 关键字的更多详细信息,请参阅 AWS Clean Rooms 差异隐私的 SQL 功能