

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.

# Colonnes interdites dans le tableau configuré
<a name="disallowed-columns"></a>

La configuration des colonnes de sortie interdites est un contrôle de la règle d'analyse AWS Clean Rooms personnalisée qui vous permet de définir la liste des colonnes (le cas échéant) dont vous n'autorisez pas la projection dans le résultat de la requête. Les colonnes référencées dans cette liste sont considérées comme des « colonnes de sortie interdites ». Cela signifie que toute référence à une telle colonne par transformation, aliasing ou autre moyen peut ne pas être présente dans le SELECT final (projection) de la requête.

Bien que cette fonctionnalité empêche les colonnes d'être directement projetées dans la sortie, elle n'empêche pas totalement les valeurs sous-jacentes d'être déduites indirectement par d'autres mécanismes. Ces colonnes peuvent toujours être utilisées dans une clause de projection (telle que dans une sous-requête ou une expression de table commune (CTE)), tant qu'elles ne sont pas référencées dans la toute dernière projection.

La configuration des colonnes de sortie interdites vous donne la flexibilité d'appliquer et de codifier le contrôle sur votre table en combinaison avec des révisions au niveau des modèles d'analyse basées sur des cas d'utilisation et des exigences de confidentialité correspondantes.

Pour plus d'informations sur la façon de définir cette configuration, consultez[Ajouter une règle d'analyse personnalisée à un tableau (flux guidé)](add-analysis-rule.md#add-custom-analysis-rule-wizard).

**Exemples**

Les exemples suivants montrent comment le contrôle des colonnes de sortie interdites est appliqué. 
+ Le membre A est en collaboration avec le membre B. 
+ Le membre B est le membre qui peut exécuter des requêtes.
+ Le membre A définit *les utilisateurs* d'une table avec les colonnes *âge*, *sexe*, *e-mail* et *nom*. L'*âge* et le *nom* des colonnes sont des colonnes de sortie interdites.
+ Le membre B définit un *animal* de table avec un ensemble similaire de colonnes *age*, *sexe* et *nom\$1propriétaire*. Cependant, ils ne définissent aucune contrainte sur les colonnes de sortie, ce qui signifie que toutes les colonnes de la table peuvent être projetées librement dans la requête.



Si le membre B exécute la requête suivante, elle est bloquée car les colonnes de sortie interdites ne peuvent pas être projetées directement :

```
SELECT 
  age 
FROM 
  users
```

Si le membre B exécute la requête suivante, elle est bloquée car les colonnes de sortie interdites ne peuvent pas être implicitement projetées via project star :

```
SELECT 
  * 
FROM 
  users
```

Si le membre B exécute la requête suivante, elle est bloquée car les transformations des colonnes de sortie interdites ne peuvent pas être projetées :

```
SELECT 
  COUNT(age) 
FROM 
  users
```

Si le membre B exécute la requête suivante, elle est bloquée car les colonnes de sortie interdites ne peuvent pas être référencées dans la projection finale à l'aide d'un alias :

```
SELECT 
  count_age
FROM 
  (SELECT COUNT(age) AS count_age FROM users)
```

Si le membre B exécute la requête suivante, elle est bloquée car les colonnes restreintes transformées sont projetées dans la sortie :

```
SELECT 
  CONCAT(name, email) 
FROM 
  users
```

Si le membre B exécute la requête suivante, elle est bloquée car les colonnes de sortie interdites définies dans CTE ne peuvent pas être référencées dans la projection finale :

```
WITH cte AS (
  SELECT 
    age AS age_alias 
  FROM 
    users
)
SELECT age_alias FROM cte
```

Si le membre B exécute la requête suivante, elle est bloquée car les colonnes de sortie interdites ne peuvent pas être utilisées comme clés de tri ou de partition dans la projection finale :

```
SELECT 
  LISTAGG(gender) WITHIN GROUP (ORDER BY age) OVER (PARTITION BY age) 
FROM 
  users
```

Si le membre B exécute la requête suivante, elle aboutit car les colonnes faisant partie des colonnes de sortie interdites peuvent toujours être utilisées dans d'autres constructions de la requête, par exemple dans les clauses de jointure ou de filtrage.

```
SELECT
  u.name, 
  p.gender, 
  p.age
FROM 
  users AS u
JOIN 
  pets AS p
ON 
  u.name = p.owner_name
```

Dans le même scénario, le membre B peut également utiliser la colonne de *nom* dans *les utilisateurs* comme filtre ou clé de tri :

```
SELECT 
  u.email,
  u.gender
FROM 
  users AS u
WHERE 
  u.name = 'Mike'
ORDER BY
  u.name
```

En outre, les colonnes de sortie interdites *aux utilisateurs* peuvent être utilisées dans des projections intermédiaires telles que des sous-requêtes et CTEs, par exemple :

```
WTIH cte AS (
 SELECT 
   u.gender, 
   u.id,
   u.first_name
 FROM
   users AS u
)
SELECT 
  first_name 
FROM
  (SELECT cte.gender, cte.id, cte.first_name FROM cte)
```