本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS Clean Rooms 差异隐私的 SQL 功能
AWS Clean Rooms 差异隐私使用通用查询结构来支持复杂的 SQL 查询。根据此结构对自定义分析模板进行验证,以确保它们可以在受差别隐私保护的表上运行。下表指示支持哪些函数。请参阅查询结构和语法了解更多信息。
| 类别 | Spark 分析引擎支持的 SQL 结构 | SQL 分析引擎支持的 AWS Clean Rooms SQL 结构 | 常用表表达式 (CTEs) | 最终 SELECT 子句 |
|---|---|---|---|---|
| 聚合函数 |
|
|
支持这样的条件: CTEs 使用受差异隐私保护的表必须生成具有用户级记录的数据。您应该 CTEs 使用`SELECT userIdentifierColumn...'格式编写 SELECT 表达式。 |
支持的聚合:AVG、COUNT、COUNT DISTINCT、STDDEV 和 SUM。 |
| CTEs | WITH 子句、WITH 子句子查询 | WITH 子句、WITH 子句子查询 | 支持这样的条件: CTEs 使用受差异隐私保护的表必须生成具有用户级记录的数据。您应该 CTEs 使用`SELECT userIdentifierColumn...'格式编写 SELECT 表达式。 |
不适用 |
| 子查询 |
|
|
在这些结构中,你可以有任何不引用差异隐私关系的子查询。您只能在 FROM 和 JOIN 子句中使用任何引用差异隐私关系的子查询。 | |
| 联接条款 |
|
|
支持的条件是,仅支持对用户标识符列进行等值联接的 JOIN 函数;在查询两个或更多开启了差别隐私的表时,必须使用这些函数。确保必需的等值联接条件是正确的。确认表所有者在所有表中配置了相同的用户标识符列,以便用户的定义在表之间保持一致。 在合并两个或更多开启了差别隐私的关系时,不支持 CROSS JOIN 函数。 |
|
| 集合运算符 | UNION、UNION ALL、INTERSECT、除外 | 减号(这些是同义词) | UNION、UNION ALL、INTERSECT、除外 | 减号(这些是同义词) | 全部支持 | 不支持 |
| 窗口函数 |
聚合函数
排名函数
|
聚合函数
排名函数
|
在查询开启差异隐私的关系时,窗口函数的分区子句中的用户标识符列是必填的,条件是所有这些都支持。 | 不支持 |
| 条件表达式 |
|
|
全部支持 | 全部支持 |
| Conditions |
|
|
EXISTS并且IN无法使用,因为它们需要子查询。支持所有其他内容。 |
全部支持 |
| 日期时间函数 |
|
|
全部支持 | 全部支持 |
| 字符串函数 |
|
|
全部支持 | 全部支持 |
| 数据类型格式设置函数 |
|
|
全部支持 | 全部支持 |
| 哈希函数 |
|
|
全部支持 | 全部支持 |
| 数学运算符符号 | +、-、*、/、% 和 @ | +、-、*、/、% 和 @ | 全部支持 | 全部支持 |
| 数学函数 |
|
|
全部支持 | 全部支持 |
| VARBYTE 函数 |
|
|
全部支持 | 全部支持 |
| JSON |
|
|
全部支持 | 全部支持 |
| 数组函数 |
|
|
不支持 | 不支持 |
| 扩展分组依据 | 分组集、汇总、立方体 | 分组集、汇总、立方体 | 不支持 | 不支持 |
| 排序操作 | ORDER BY | ORDER BY | 支持 ORDER BY 子句,条件是只有在开启差分隐私的情况下查询表时,窗口函数的分区子句才支持 ORDER BY 子句。 | 支持 |
| 行数限制 | LIMIT、OFFSET | LIMIT、OFFSET | 不支持 CTEs 使用受差异隐私保护的表 | 全部支持 |
| 表和列别名 | 支持 | 支持 | ||
| 聚合函数上的数学函数 | 支持 | 支持 | ||
| 聚合函数中的标量函数 | 支持 | 支持 | ||
不支持的 SQL 构造的常见替代方案
| 类别 | SQL 构造 | 或者 |
|---|---|---|
|
窗口函数 |
|
您可以将等效的聚合函数与 GROUP BY 一起使用。 |
| 数学运算符符号 |
|
|
| 标量函数 |
|
|
| 文本 | 间隔 '1 秒' | 间隔 '1' 秒 |
| 行限制 | TOP n | 限制 n |
| 联接 |
|
ON 子句应明确包含连接标准。 |