

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Columnas no permitidas de la tabla configurada
<a name="disallowed-columns"></a>

La configuración de las columnas de salida no permitidas es un control de la regla de análisis AWS Clean Rooms personalizada que permite definir la lista de columnas (si las hay) que no se pueden proyectar en el resultado de la consulta. Las columnas a las que se hace referencia en esta lista se consideran “columnas de salida no permitidas”. Esto significa que cualquier referencia a dicha columna mediante transformación, alias u otros medios puede no estar presente en la SELECCIÓN (proyección) final de la consulta.

Aunque esta funcionalidad prohíbe que las columnas se proyecten directamente en la salida, no impide por completo que los valores subyacentes se deduzcan indirectamente mediante otros mecanismos. Estas columnas se pueden seguir utilizando en una cláusula de proyección (por ejemplo, en una subconsulta o en una expresión de tabla común [CTE]), siempre y cuando no se haga referencia a ellas en la proyección final.

La configuración de columnas de salida no permitidas le ofrece la flexibilidad de aplicar y codificar el control de la tabla, junto con revisiones de nivel de plantilla de análisis en función de los casos de uso y los requisitos de privacidad correspondientes.

Para obtener más información acerca de cómo definir esta configuración, consulte [Agregación de una regla de análisis personalizada a una tabla (flujo guiado)](add-analysis-rule.md#add-custom-analysis-rule-wizard).

**Ejemplos**

Los siguientes ejemplos muestran cómo se aplica el control de columnas de salida no permitidas. 
+ El miembro A colabora con el miembro B. 
+ El miembro B es quien puede ejecutar consultas.
+ El miembro A define a los *usuarios* de una tabla con las columnas *edad*, *sexo*, *correo electrónico* y *nombre*. Las columnas de *edad* y *nombre* no son columnas de salida permitidas.
+ El miembro B define una tabla *mascotas* con un conjunto similar de columnas *edad*, *género* y *owner\$1name*. Sin embargo, no establecen ninguna restricción en las columnas de salida, lo que significa que todas las columnas de la tabla se pueden proyectar libremente en la consulta.



Si el miembro B ejecuta la siguiente consulta, se bloquea porque las columnas de salida no permitidas no se pueden proyectar directamente:

```
SELECT 
  age 
FROM 
  users
```

Si el miembro B ejecuta la siguiente consulta, se bloquea porque las columnas de salida no permitidas no se pueden proyectar implícitamente a través de la estrella del proyecto:

```
SELECT 
  * 
FROM 
  users
```

Si el miembro B ejecuta la siguiente consulta, se bloquea porque las transformaciones de las columnas de salida no permitidas no se pueden proyectar:

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

Si el miembro B ejecuta la siguiente consulta, se bloquea porque no se puede hacer referencia a las columnas de salida no permitidas en la proyección final con un alias:

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

Si el miembro B ejecuta la siguiente consulta, se bloquea porque las columnas restringidas transformadas se proyectan en la salida:

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

Si el miembro B ejecuta la siguiente consulta, se bloquea porque no se puede hacer referencia a las columnas de salida no permitidas en CTE en la proyección final:

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

Si el miembro B ejecuta la siguiente consulta, se bloquea porque no se pueden usar las columnas de salida no permitidas como claves de clasificación o partición en la proyección final:

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

Si el miembro B ejecuta la siguiente consulta, se realiza correctamente porque las columnas que forman parte de las columnas de salida no permitidas se pueden seguir utilizando en otros constructos de la consulta, como en las cláusulas de unión o filtro.

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

En el mismo escenario, el miembro B también puede usar la columna de *nombres* en los *usuarios* como filtro o clave de clasificación:

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

Además, las columnas de salida no permitidas por los *usuarios* se pueden usar en proyecciones intermedias, como subconsultas y CTEs, por ejemplo:

```
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)
```