

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fonctionnalités SQL de AWS Clean Rooms Confidentialité différentielle
<a name="dp-sql-capabilities"></a>

AWS Clean Rooms La confidentialité différentielle utilise une structure de requête polyvalente pour prendre en charge les requêtes SQL complexes. Les modèles d'analyse personnalisés sont validés par rapport à cette structure afin de garantir qu'ils peuvent être exécutés sur des tables protégées par une confidentialité différentielle. Le tableau suivant indique les fonctions prises en charge. Pour plus d’informations, consultez [Structure et syntaxe des requêtes](custom-diff-privacy.md#dp-query-structure-syntax).


| Catégorie | Constructions SQL prises en charge par le moteur d'analyse Spark | Expressions de table communes (CTE) | Clause SELECT finale | 
| --- |--- |--- |--- |
| Fonctions d’agrégation |  +  Fonction ANY\_VALUE <br />+  Fonction APPROXIMATE PERCENTILE\_DISC <br />+  Fonction AVG <br />+  Fonctions COUNT et COUNT DISTINCT <br />+  Fonction MAX <br />+  Fonction MEDIAN <br />+  Fonction MIN <br />+  Fonction PERCENTILE\_CONT <br />+  Fonctions STDDEV\_SAMP et STDDEV\_POP <br />+  Fonctions SUM et SUM DISTINCT <br />+  Fonctions VAR\_SAMP et VAR\_POP   | Soutenu à la condition que les CTE utilisant des tables protégées par la confidentialité différentielle doivent aboutir à des données contenant des enregistrements au niveau de l'utilisateur. Vous devez écrire l'expression SELECT dans ces CTE en utilisant le `SELECT userIdentifierColumn...' format. | Agrégations prises en charge : AVG, COUNT, COUNT DISTINCT, STDDEV et SUM. | 
| CTE | clause WITH, sous-requête de clause WITH | Soutenu à la condition que les CTE utilisant des tables protégées par la confidentialité différentielle doivent aboutir à des données contenant des enregistrements au niveau de l'utilisateur. Vous devez écrire l'expression SELECT dans ces CTE en utilisant le `SELECT userIdentifierColumn...' format. | N/A | 
| Sous-requêtes |  +  SELECT <br />+  HAVING <br />+  JOIN <br />+  Condition d'adhésion <br />+  FROM <br />+  WHERE   | Vous pouvez avoir n'importe quelle sous-requête qui ne fait pas référence à des relations de confidentialité différentielles dans ces constructions. Vous pouvez avoir n'importe quelle sous-requête qui fait référence à des relations de confidentialité différentielles dans une clause FROM et JOIN uniquement. | 
| Clauses d'adhésion |  +  JOINT INTÉRIEUR <br />+  JOINTURE GAUCHE <br />+  DEMI-JOINT GAUCHE <br />+  ANTI-JOINTURE GAUCHE <br />+  JOINTURE DROITE <br />+  ADHÉSION COMPLÈTE <br />+  [JOIN] OU opérateur <br />+  CROSS JOIN   | Supportée à la condition que seules les fonctions JOIN qui sont des jointures égales sur les colonnes d'identifiant utilisateur soient prises en charge et soient obligatoires lors de l'interrogation de deux tables ou plus avec la confidentialité différentielle activée. Assurez-vous que les conditions d'équijointure obligatoires sont correctes. Vérifiez que le propriétaire de la table a configuré la même colonne d'identifiant utilisateur dans toutes les tables afin que la définition d'un utilisateur reste cohérente d'une table à l'autre.<br />Les fonctions CROSS JOIN ne sont pas prises en charge lors de la combinaison de deux relations ou plus lorsque la confidentialité différentielle est activée. | 
| Définir les opérateurs | UNION, UNION ALL, INTERSECT, EXCEPT \| MINUS (ce sont des synonymes) | UNION, UNION ALL, INTERSECT, EXCEPT \| MINUS (ce sont des synonymes) | Non pris en charge | 
| Fonctions de fenêtrage | Fonctions d’agrégation+  Fonction de fenêtrage AVG <br />+  Fonction de fenêtrage COUNT <br />+  Fonction de fenêtrage CUME\_DIST <br />+  Fonction de fenêtrage DENSE\_RANK <br />+  Fonction de fenêtrage FIRST\_VALUE <br />+  Fonction de fenêtrage LAG <br />+  Fonction de fenêtrage LAST\_VALUE <br />+  Fonction de fenêtrage LEAD <br />+  Fonctions de fenêtre MAX <br />+  Fonctions de la fenêtre MEDIAN <br />+  Fonctions de la fenêtre MIN <br />+  Fonction de fenêtrage NTH\_VALUE <br />+  Fonctions de fenêtre STDDEV\_SAMP et STDDEV\_POP (STDDEV\_SAMP et STDDEV sont des synonymes) <br />+  Fonctions de la fenêtre SUM <br />+  Fonctions de fenêtre VAR\_SAMP et VAR\_POP (VAR\_SAMP et VARIANCE sont des synonymes) <br />Fonctions de classement+  Fonction de fenêtrage DENSE\_RANK <br />+  Fonction de fenêtrage NTILE <br />+  Fonction de fenêtrage PERCENT\_RANK <br />+  Fonction de fenêtrage RANK <br />+  Fonction de fenêtrage ROW\_NUMBER  | Tous sont pris en charge à condition que la colonne d'identifiant utilisateur de la clause de partition de la fonction de fenêtre soit requise lorsque vous interrogez une relation avec la confidentialité différentielle activée. | Non pris en charge | 
| Expressions conditionnelles |  +  Expression de condition CASE <br />+  Expression COALESCE <br />+  Fonctions GREATEST et LEAST <br />+  Fonctions NVL et COALESCE <br />+  Fonction NVL2 <br />+  Fonction NULLIF   | Tous sont pris en charge | Tous sont pris en charge | 
| Conditions |  +  Condition de comparaison <br />+  Conditions logiques <br />+  Pattern-matching conditions <br />+  ENTRE les conditions de gamme <br />+  Condition null   | EXISTSet ne IN peuvent pas être utilisés car ils nécessitent des sous-requêtes. Tous les autres sont pris en charge. | Tous sont pris en charge | 
| Date-time fonctions |  +  Fonctions date et heure dans les transactions <br />+  Opérateur de concaténation <br />+  Fonctions ADD\_MONTHS <br />+  Fonction CONVERT\_TIMEZONE <br />+  Fonction CURRENT\_DATE <br />+  Fonction DATEADD <br />+  Fonction DATEDIFF <br />+  fonctions DATE\_PART <br />+  Fonction DATE\_TRUNC <br />+  Fonction EXTRACT <br />+  Fonction TO\_TIMESTAMP <br />+  Parties de date pour les fonctions de date ou d’horodatage   | Tous sont pris en charge | Tous sont pris en charge | 
| Fonctions de chaîne |  +  opérateur \|\| (concaténation) <br />+  Fonction BTRIM <br />+  Fonction CHAR\_LENGTH <br />+  Fonction CHARACTER\_LENGTH <br />+  Fonction CONCAT <br />+  Fonctions LEFT et RIGHT <br />+  Fonction LEN <br />+  Fonction LENGTH <br />+  Fonction LOWER <br />+  Fonctions LPAD et RPAD <br />+  Fonction LTRIM <br />+  Fonctions POSITION <br />+  Fonction REGEXP\_COUNT <br />+  Fonction REGEXP\_INSTR <br />+  Fonction REGEXP\_REPLACE <br />+  Fonction REGEXP\_SUBSTR <br />+  Fonction REPEAT <br />+  Fonction REPLACE <br />+  Fonction REVERSE <br />+  Fonction RTRIM <br />+  Fonction SPLIT\_PART <br />+  Fonction SUBSTRING <br />+  Fonction TRANSLATE <br />+  Fonctions TRIM <br />+  Fonction UPPER   | Tous sont pris en charge | Tous sont pris en charge | 
| Fonctions de formatage des types de données |  +  Fonction CAST <br />+  TO\_CHAR <br />+  Fonction TO\_DATE <br />+  TO\_NUMBER <br />+  Chaînes de format datetime <br />+  Chaînes de format numériques   | Tous sont pris en charge | Tous sont pris en charge | 
| Fonctions de hachage |  +  AES\_ENCRYPT <br />+  AES\_DECRYPT <br />+  ENCODE <br />+  DECODE <br />+  Fonction MD5 <br />+  Fonction SHA1 <br />+  Fonction SHA2 <br />+  XX\_HASH65   | Tous sont pris en charge | Tous sont pris en charge | 
| Symboles d’opérateurs mathématiques | \+, -, \*,/, % et @ | Tous sont pris en charge | Tous sont pris en charge | 
| Fonctions mathématiques |  +  Fonction ABS <br />+  Fonction ACOS <br />+  Fonction ASIN <br />+  Fonction ATAN <br />+  Fonction ATAN2 <br />+  Fonction CBRT <br />+  Fonction CEILING (ou CEIL) <br />+  Fonction COS <br />+  Fonction COT <br />+  Fonction DEGREES <br />+  Fonction LTRIM <br />+  Fonction EXP <br />+  Fonction FLOOR <br />+  Fonction LN <br />+  Fonction LOG <br />+  Fonction MOD <br />+  Fonction PI <br />+  Fonction POWER <br />+  Fonction RADIANS <br />+  Fonction RANDOM <br />+  Fonction ROUND <br />+  Fonction SIGN <br />+  Fonction SIN <br />+  Fonctions SQRT <br />+  Fonction TRUNC   | Tous sont pris en charge | Tous sont pris en charge | 
| Fonctions VARBYTE |  +  UNHEX, <br />+  UNBASE64 <br />+  SORT <br />+   HLL\_SKETCH\_AGG, <br />+   HLL\_SKETCH\_ESTIMATE <br />+  HL\_UNION <br />+  HL\_UNION\_AGG   | Tous sont pris en charge | Tous sont pris en charge | 
| JSON |  +  TO\_JSON <br />+  GET\_JSON\_OBJECT   | Tous sont pris en charge | Tous sont pris en charge | 
| Fonctions de tableau |  +  ARRAY\_CONTAINS <br />+  TABLEAU DISTINCT <br />+  ARRAY\_EXCEPT <br />+  ARRAY\_INTERSECT <br />+  ARRAY\_JOIN <br />+  ARRAY\_REMOVE <br />+  ARRAY\_SORT <br />+  ARRAY\_UNION   | Non pris en charge | Non pris en charge | 
| GROUPE PAR ÉTENDU | ENSEMBLES DE REGROUPEMENT, ROLLUP, CUBE | Non pris en charge | Non pris en charge | 
| Opération de tri | ORDER BY | Supportée à la condition qu'une clause ORDER BY ne soit prise en charge dans la clause de partition d'une fonction de fenêtre que lors de l'interrogation de tables avec la confidentialité différentielle activée. | Pris en charge | 
| Limites de lignes | LIMITE, DÉCALAGE | Non pris en charge dans les CTE utilisant des tables protégées par la confidentialité différentielle | Tous sont pris en charge | 
| Aliasing de tables et de colonnes |   | Pris en charge | Pris en charge | 
| Fonctions mathématiques sur les fonctions d'agrégation |   | Pris en charge | Pris en charge | 
| Fonctions scalaires au sein de fonctions d'agrégation |   | Pris en charge | Pris en charge | 

## Alternatives courantes pour les constructions SQL non prises en charge
<a name="common-alternatives"></a>


| Catégorie | construction SQL | Autrement | 
| --- |--- |--- |
| Fonctions de fenêtrage |  +  LISTAGG <br />+  PERCENTILE\_CONT <br />+  PERCENTILE\_DISC   | Vous pouvez utiliser la fonction d'agrégation équivalente avec GROUP BY. | 
| Symboles d’opérateurs mathématiques |  +  $column \|\|/ 2 <br />+  $column \|/ 2 <br />+  $column ^ 2   |  +  CBRT <br />+  SQRT <br />+  PUISSANCE ($column, 2)   | 
| Fonctions scalaires |  +  SYSDATE <br />+  $column : :entier <br />+  convertir (type, $column)   |  +  CURRENT\_DATE <br />+  CAST $column EN TANT QU'entier <br />+  CAST $column, type AS   | 
| Littéraux | INTERVALLE « 1 SECONDE » | INTERVALLE « 1 » SECONDE | 
| Limitation des lignes | TOP n | LIMITE n | 
| Joindre |  +  USING <br />+  NATURAL   | La clause ON doit contenir explicitement un critère de jointure. | 