AWS Clean Rooms 差异隐私的 SQL 功能 - AWS Clean Rooms

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

AWS Clean Rooms 差异隐私的 SQL 功能

AWS Clean Rooms 差异隐私使用通用查询结构来支持复杂的 SQL 查询。根据此结构对自定义分析模板进行验证,以确保它们可以在受差异隐私保护的表上运行。下表指示支持哪些函数。请参阅查询结构和语法了解更多信息。

短名称 SQL 构造 通用表表达式 (CTE) 最终 SELECT 子句
聚合函数
  • ANY_VALUE 函数

  • APPROXIMATE PERCENTILE_DISC 函数

  • AVG 函数

  • COUNT 和 COUNT DISTINCT 函数

  • LISTAGG 函数

  • MAX 函数

  • MEDIAN 函数

  • MIN 函数

  • PERCENTILE_CONT 函数

  • STDDEV_SAMP 和 STDDEV_POP 函数

  • SUM 和 SUM DISTINCT 函数

  • VAR_SAMP 和 VAR_POP 函数

支持使用差异隐私保护表的 CTE 必须生成包含用户级记录的数据。你应该使用`SELECT userIdentifierColumn...'格式在那些 CTE 中编写 SELECT 表达式。 支持的聚合:AVG、COUNT、COUNT DISTINCT、STDDEV 和 SUM。
CTE WITH 子句、WITH 子句子查询 支持使用差异隐私保护表的 CTE 必须生成包含用户级记录的数据。你应该使用`SELECT userIdentifierColumn...'格式在那些 CTE 中编写 SELECT 表达式。 不适用
子查询 选择列表子查询、FROM 子句子查询、WHERE 子句子查询 不支持。不支持查询中引用开启差分隐私功能的表的子查询。将您的子查询重写为公用表表达式 (CTE)。
联接条款
  • INNER JOIN

  • LEFT JOIN

  • RIGHT JOIN

  • FULL JOIN

  • [JOIN] OR 运算符

  • CROSS JOIN

支持的条件是,仅支持对用户标识符列进行等值联接的 JOIN 函数;在查询两个或更多开启了差别隐私的表时,必须使用这些函数。确保必需的等值联接条件是正确的。确认表所有者在所有表中配置了相同的用户标识符列,以便用户的定义在表之间保持一致。

在合并两个或更多开启了差别隐私的关系时,不支持 CROSS JOIN 函数。

集合运算符 UNION、UNION ALL、INTERSECT、除外 | 减号(这些是同义词) 全部支持 不支持
窗口函数

聚合函数

  • AVG 窗口函数

  • COUNT 窗口函数

  • CUME_DIST 开窗函数

  • DENSE_RANK 窗口函数

  • FIRST_VALUE 窗口函数

  • LAG 窗口函数

  • LAST_VALUE 窗口函数

  • LEAD 窗口函数

  • MAX 窗口函数

  • MEDIAN 窗口函数

  • MIN 窗口函数

  • NTH_VALUE 窗口函数

  • RATIO_TO_REPORT 开窗函数

  • STDDEV_SAMP 和 STDDEV_POP 窗口函数(STDDEV_SAMP 和 STDDEV 是同义词)

  • SUM 窗口函数

  • VAR_SAMP 和 VAR_POP 窗口函数(VAR_SAMP 和 VARIANCE 是同义词)

排名函数

  • DENSE_RANK 窗口函数

  • NTILE 窗口函数

  • PERCENT_RANK 开窗函数

  • RANK 窗口函数

  • ROW_NUMBER 窗口函数

在查询开启差异隐私的关系时,窗口函数的分区子句中的用户标识符列是必填的,条件是所有这些都支持。 不支持
条件表达式
  • CASE 条件表达式

  • COALESCE 表达式

  • GREATEST 和 LEAST 函数

  • NVL 和 COALESCE 函数

  • NVL2 函数

  • NULLIF 函数

全部支持 全部支持
Conditions
  • 比较条件

  • 逻辑条件

  • 模式匹配条件

  • BETWEEN 范围条件

  • Null 条件

EXISTS并且IN不能使用,因为它们需要子查询。支持所有其他内容。 全部支持
日期时间函数
  • 事务中的日期和时间函数

  • 串联运算符

  • ADD_MONTHS 函数

  • CONVERT_TIMEZONE 函数

  • CURRENT_DATE 函数

  • DATEADD 函数

  • DATEDIFF 函数

  • DATE_PART 函数

  • DATE_TRUNC 函数

  • EXTRACT 函数

  • GETDATE 函数

  • TIMEOFDAY 函数

  • TO_TIMESTAMP 函数

  • 日期或时间戳函数的日期部分

全部支持 全部支持
字符串函数
  • ||(串联)运算符

  • BTRIM 函数

  • CHAR_LENGTH 函数

  • CHARACTER_LENGTH 函数

  • CHARINDEX 函数

  • CONCAT 函数

  • LEFT 和 RIGHT 函数

  • LEN 函数

  • LENGTH 函数

  • LOWER 函数

  • LPAD 和 RPAD 函数

  • LTRIM 函数

  • POSITION 函数

  • REGEXP_COUNT 函数

  • REGEXP_INSTR 函数

  • REGEXP_REPLACE 函数

  • REGEXP_SUBSTR 函数

  • REPEAT 函数

  • REPLACE 函数

  • REPLICATE 函数

  • REVERSE 函数

  • RTRIM 函数

  • SOUNDEX 函数

  • SPLIT_PART 函数

  • STRPOS 函数

  • SUBSTRING 函数

  • TEXTLEN 函数

  • TRANSLATE 函数

  • TRIM 函数

  • UPPER 函数

全部支持 全部支持
数据类型格式设置函数
  • CAST 函数

  • TO_CHAR

  • TO_DATE 函数

  • TO_NUMBER

  • 日期时间格式字符串

  • 数字格式字符串

全部支持 全部支持
哈希函数
  • MD5 函数

  • SHA 函数

  • SHA1 函数

  • SHA2 函数

  • MURMUR3_32_HASH

全部支持 全部支持
数学运算符符号 +、-、*、/、% 和 @ 全部支持 全部支持
数学函数
  • ABS 函数

  • ACOS 函数

  • ASIN 函数

  • ATAN 函数

  • ATAN2 函数

  • CBRT 函数

  • CEILING(或 CEIL)函数

  • COS 函数

  • COT 函数

  • DEGREES 函数

  • DEXP 函数

  • LTRIM 函数

  • DLOG1 函数

  • DLOG10 函数

  • EXP 函数

  • FLOOR 函数

  • LN 函数

  • LOG 函数

  • MOD 函数

  • PI 函数

  • POWER 函数

  • RADIANS 函数

  • RANDOM 函数

  • ROUND 函数

  • SIGN 函数

  • SIN 函数

  • SQRT 函数

  • TRUNC 函数

全部支持 全部支持
SUPER 类型信息函数
  • DECIMAL_PRECISION 函数

  • DECIMAL_SCALE 函数

  • IS_ARRAY 函数

  • IS_BIGINT 函数

  • IS_CHAR 函数

  • IS_DECIMAL 函数

  • IS_FLOAT 函数

  • IS_INTEGER 函数

  • IS_OBJECT 函数

  • IS_SCALAR 函数

  • IS_SMALLINT 函数

  • IS_VARCHAR 函数

  • JSON_TYPEOF 函数

全部支持 全部支持
VARBYTE 函数
  • FROM_HEX 函数

  • FROM_VARBYTE 函数

  • TO_HEX 函数

  • TO_VARBYTE 函数

全部支持 全部支持
JSON
  • CAN_JSON_PARSE 函数

  • JSON_EXTRACT_ARRAY_ELEMENT_TEXT 函数

  • JSON_EXTRACT_PATH_TEXT 函数

  • JSON_PARSE 函数

  • JSON_SERIALIZE 函数

  • JSON_SERALIZE_TO_VARBYTE 函数

全部支持 全部支持
数组函数
  • 数组函数

  • array_concat 函数

  • array_flatten 函数

  • get_array_length 函数

  • split_to_array 函数

  • 子数组函数

不支持 不支持
扩展分组依据 分组集、汇总、立方体 不支持 不支持
排序操作 ORDER BY 支持 ORDER BY 子句,条件是只有在开启差分隐私的情况下查询表时,窗口函数的分区子句才支持 ORDER BY 子句。 支持
行数限制 LIMIT、OFFSET 使用差异隐私保护表的 CTE 不支持 全部支持
表和列别名 支持 支持
聚合函数上的数学函数 支持 支持
聚合函数中的标量函数 支持 支持

不支持的 SQL 构造的常见替代方案

类别 SQL 构造 或者

窗口函数

  • LISTAGG

  • PERCENTILE_CONT

  • PERCENTILE_DISC

您可以将等效的聚合函数与 GROUP BY 一起使用。
数学运算符符号
  • $column ||/ 2

  • $column |/ 2

  • $column ^ 2

  • CBRT

  • SQRT

  • POWER($column, 2)

标量函数
  • SYSDATE

  • $column::integer

  • convert(type, $column)

  • CURRENT_DATE

  • CAST $column AS integer

  • CAST $column AS type

文本 间隔 '1 秒' 间隔 '1' 秒
行限制 TOP n 限制 n
联接
  • USING

  • NATURAL

ON 子句应明确包含连接标准。