

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

# 用于最低限度聚合和比较控制的 SQL 功能
<a name="custom-sql-capabilities"></a>

下表列出了自定义分析规则在 Spark 分析引擎中使用最低聚合阈值和比较控制时支持和不支持的 SQL 结构和函数。函数类别遵循 AWS Clean Rooms Spark SQL 参考文档。


| 类别 | SQL 构造 | 支持 | 通用表表达式 (CTE) | 最终 SELECT 子句 | 
| --- |--- |--- |--- |--- |
| 查询结构 |  + CACHE TABLE<br />+ 查询提示<br />+ 分析模板（参数化查询）  | 是 | 支持 | 支持 | 
| 子句 |  + SELECT<br />+ SELECT DISTINCT<br />+ FROM<br />+ FROM子查询<br />+ FROM行内表（值）<br />+ WHERE<br />+ GROUP BY<br />+ HAVING<br />+ ORDER BY<br />+ WITH(CTE)  | 是 | 支持 | 支持 | 
|  + GROUP BY CUBE<br />+ GROUP BY ROLLUP<br />+ GROUP BY GROUPING SETS<br />+ EXISTS<br />+ CLUSTER BY<br />+ DISTRIBUTE BY<br />+ SORT BY<br />+ LATERAL JOIN<br />+ PIVOT / UNPIVOT<br />+ WITH RECURSIVE  | 否 | — | — | 
| 加入条款 |  + JOIN INNER<br />+ JOIN LEFT<br />+ JOIN FULL OUTER<br />+ JOIN CROSS<br />+ JOIN RIGHT<br />+ JOIN NATURAL  | 是 | 支持 | 支持 | 
|  + JOIN LEFT SEMI<br />+ JOIN LEFT ANTI  | 否 | — | — | 
| 集合运算符 |  + UNION<br />+ UNION ALL  | 是 | 支持 | 支持 | 
|  + EXCEPT<br />+ EXCEPT ALL<br />+ INTERSECT<br />+ INTERSECT ALL  | 否 | — | — | 
| 排序和行限制 |  + ORDER BYASC/DESC<br />+ ORDER BY首先是空值<br />+ ORDER BY最后是空值<br />+ LIMIT  | 是 | 支持 | 支持 | 
|  + OFFSET  | 否 | — | — | 
| Conditions |  + =<br />+ \!= / <><br />+ <<br />+ <=<br />+ ><br />+ >=<br />+ IN<br />+ NOT IN<br />+ LIKE<br />+ NOT LIKE<br />+ RLIKE<br />+ BETWEEN<br />+ IS TRUE / IS FALSE<br />+ AND<br />+ OR<br />+ NOT<br />+ IS DISTINCT FROM  | 是 | 支持 | 支持 | 
|  + <=>（空安全相等）  | 否 | — | — | 
| 聚合函数 |  + AVG 函数<br />+ COUNT 函数<br />+ COUNT DISTINCT 函数<br />+ SUM 函数<br />+ MIN 函数<br />+ MAX 函数<br />+ STDDEV/STDDEV\_SAMP函数<br />+ STDDEV\_POP 函数<br />+ VAR\_SAMP/VARIANCE函数<br />+ VAR\_POP 函数<br />+ SKEWNESS 函数<br />+ APPROX\_COUNT\_DISTINCT 函数<br />+ COLLECT\_LIST 函数<br />+ COLLECT\_SET 函数<br />+ PERCENTILE 函数<br />+ APPROX\_PERCENTILE 函数<br />+ MEDIAN 函数  | 是 | 支持 | 设置聚合阈值时：MIN、、MAX、PERCENTILE、APPROX\_PERCENTILE、MEDIANCOLLECT\_LIST、且COLLECT\_SET必须与符合条件的聚合（AVG、COUNT、SUM）结合使用。它们不能用作独立的聚合。<br />当只设置比较控件时：没有这样的限制。<br />支持所有其他聚合函数。 | 
|  + ANY\_VALUE 函数<br />+ BOOL\_AND 函数<br />+ BOOL\_OR 函数  | 否 | — | — | 
| 数组函数 |  + ARRAY 函数<br />+ ARRAY\_CONTAINS 函数<br />+ ARRAY\_DISTINCT 函数<br />+ ARRAY\_INTERSECT 函数<br />+ ARRAY\_JOIN 函数<br />+ ARRAY\_REMOVE 函数<br />+ ARRAY\_SORT 函数<br />+ ARRAY\_UNION 函数<br />+ FLATTEN 函数<br />+ EXPLODE 函数  | 是 | 支持 | 支持 | 
|  + ARRAY\_EXCEPT 函数  | 否 | — | — | 
| 条件表达式 |  + IS NULL 函数<br />+ IS NOT NULL 函数<br />+ GREATEST 函数<br />+ LEAST 函数<br />+ CASE/WHEN函数<br />+ IF 函数<br />+ COALESCE 函数<br />+ NULLIF 函数<br />+ NVL 函数<br />+ NVL2 函数  | 是 | 支持 | 支持 | 
| 构造函数 |  + STRUCT 函数<br />+ NAMED\_STRUCT 函数<br />+ MAP 函数  | 是 | 支持 | 支持 | 
| 数据类型格式设置函数 |  + STR\_TO\_MAP 函数<br />+ BASE64 函数<br />+ UNBASE64 函数<br />+ HEX 函数<br />+ UNHEX 函数<br />+ TO\_DATE 函数<br />+ DECODE 函数<br />+ ENCODE 函数<br />+ CAST 函数  | 是 | 支持 | 支持 | 
|  + TO\_CHAR 函数<br />+ TO\_NUMBER 函数  | 否 | — | — | 
| 日期和时间函数 |  + CURRENT\_DATE 函数<br />+ CURRENT\_TIMESTAMP 函数<br />+ TO\_TIMESTAMP 函数<br />+ DATE\_DIFF 函数<br />+ DATE\_TRUNC 函数<br />+ DATE\_PART 函数<br />+ EXTRACT 函数<br />+ CONVERT\_TIMEZONE 函数<br />+ FROM\_UTC\_TIMESTAMP 函数<br />+ TIMESTAMP 函数<br />+ DAY/DAYOFMONTH函数<br />+ DAYOFWEEK 函数<br />+ WEEKOFYEAR 函数<br />+ MONTH 函数<br />+ YEAR 函数<br />+ HOUR 函数<br />+ MINUTE 函数<br />+ SECOND 函数  | 是 | 支持 | 支持 | 
|  + DAYOFYEAR 函数<br />+ DATE\_ADD 函数<br />+ ADD\_MONTHS 函数  | 否 | — | — | 
| 哈希函数 |  + MD5 函数<br />+ SHA 函数<br />+ SHA1 函数<br />+ SHA2 函数<br />+ XXHASH64 函数  | 是 | 支持 | 支持 | 
| JSON 函数 |  + GET\_JSON\_OBJECT 函数<br />+ TO\_JSON 函数  | 是 | 支持 | 支持 | 
| 数学函数 |  + ABS 函数<br />+ CEIL/CEILING函数<br />+ FLOOR 函数<br />+ ROUND 函数<br />+ LN 函数<br />+ LOG/LOG10函数<br />+ POWER 函数<br />+ SQRT 函数<br />+ RAND/RANDOM函数<br />+ EXP 函数<br />+ SIGN 函数<br />+ TRUNC 函数  | 是 | 支持 | 支持 | 
|  + TRUNCATE 函数<br />+ CBRT 函数<br />+ PI 函数<br />+ RADIANS 函数<br />+ ACOS 函数<br />+ ASIN 函数<br />+ ATAN 函数<br />+ ATAN2 函数<br />+ COS 函数<br />+ COT 函数<br />+ SIN 函数<br />+ DEGREES 函数  | 否 | — | — | 
| 数学运算符符号 |  + \+<br />+ -<br />+ \*<br />+ /<br />+ %  | 是 | 支持 | 支持 | 
| 标量函数 |  + CARDINALITY 函数<br />+ SIZE 函数  | 是 | 支持 | 支持 | 
| 字符串函数 |  + CONCAT 函数<br />+ LOWER 函数<br />+ UPPER 函数<br />+ LENGTH/CHAR\_LENGTH/CHARACTER\_LENGTH函数<br />+ SUBSTR/SUBSTRING函数<br />+ TRIM 函数<br />+ BTRIM 函数<br />+ LTRIM 函数<br />+ RTRIM 函数<br />+ POSITION 函数<br />+ REPLACE 函数<br />+ REPEAT 函数<br />+ REGEXP\_REPLACE 函数<br />+ REGEXP\_SUBSTR 函数<br />+ SPLIT 函数<br />+ FORMAT\_STRING 函数<br />+ UUID 函数<br />+ LPAD 函数<br />+ RPAD 函数<br />+ LEFT 函数<br />+ RIGHT 函数  | 是 | 支持 | 支持 | 
|  + REVERSE 函数<br />+ TRANSLATE 函数<br />+ REGEXP\_COUNT 函数<br />+ REGEXP\_INSTR 函数<br />+ SPLIT\_PART 函数  | 否 | — | — | 
| Privacy-related 函数 |  + consent\_tcf\_v2\_decode 函数<br />+ consent\_gpp\_v1\_decode 函数  | 是 | 支持 | 支持 | 
| 窗口函数 |  + ROW\_NUMBER 函数<br />+ RANK 函数<br />+ DENSE\_RANK 函数<br />+ LAG 函数<br />+ LEAD 函数<br />+ 窗口AVG函数<br />+ 窗口COUNT函数<br />+ 窗口SUM函数<br />+ 窗口MIN函数<br />+ 窗口MAX函数<br />+ 窗口STDDEV\_POP函数<br />+ 窗口STDDEV\_SAMP函数<br />+ 窗口VAR\_POP函数<br />+ 窗口VAR\_SAMP函数<br />+ 窗口SKEWNESS函数<br />+ 窗口APPROX\_COUNT\_DISTINCT函数<br />+ 窗口APPROX\_PERCENTILE函数<br />+ 窗口PERCENTILE函数  | 是 | 支持 | 设置聚合阈值时：LAG、LEAD、窗口MIN、窗口MAXAPPROX\_PERCENTILE、窗口和窗口PERCENTILE必须与限定聚合相结合。它们不能用作独立值。<br />当只设置比较控件时：没有这样的限制。<br />支持所有其他窗口功能。 | 
|  + FIRST/FIRST\_VALUE函数<br />+ LAST/LAST\_VALUE函数<br />+ NTH\_VALUE 函数<br />+ CUME\_DIST 函数<br />+ PERCENT\_RANK 函数<br />+ NTILE 函数  | 否 | — | — | 
| 加密和解密函数 |  + AES\_ENCRYPT 函数<br />+ AES\_DECRYPT 函数  | 否 | — | — | 
| Hyperloglog 函数 |  + HLL\_SKETCH\_AGG 函数<br />+ HLL\_UNION\_AGG 函数<br />+ HLL\_SKETCH\_ESTIMATE 函数<br />+ HLL\_UNION 函数  | 否 | — | — | 