

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Colunas não permitidas da tabela configurada
<a name="disallowed-columns"></a>

A configuração de colunas de saída não permitidas é um controle na regra de análise AWS Clean Rooms personalizada que permite definir a lista de colunas (se houver) que você não permite que sejam projetadas no resultado da consulta. As colunas referidas nessa lista são consideradas “colunas de saída não permitidas”. Isso significa que qualquer referência a essa coluna por meio de transformação, aliases ou outros meios pode não estar presente no SELECT (projeção) final da consulta.

Embora o recurso impeça que as colunas sejam projetadas diretamente na saída, ele não impede totalmente que os valores subjacentes sejam inferidos indiretamente por meio de outros mecanismos. Essas colunas ainda podem ser usadas em uma cláusula de projeção (como em uma subconsulta ou em uma expressão de tabela comum [CTE]), desde que não sejam referidas na projeção final.

A configuração de colunas de saída não permitidas oferece a flexibilidade de aplicar e codificar o controle em sua tabela em conjunto com avaliações em nível de modelo de análise baseadas em casos de uso e requisitos de privacidade correspondentes.

Para ter mais informações sobre como definir essa configuração, consulte [Adicionar uma regra de análise personalizada a uma tabela (fluxo guiado)](add-analysis-rule.md#add-custom-analysis-rule-wizard).

**Colunas de saída não permitidas, restrição de consulta e CACHE TABLE**  
A [restrição de colunas de saída não permitidas](https://docs.aws.amazon.com/clean-rooms/latest/userguide/disallowed-columns.html) na regra de análise personalizada é aplicada em tabelas em cache. Uma tabela em cache não pode referenciar uma coluna de saída não permitida em sua cláusula SELECT. Para usar uma coluna com uma restrição de coluna de saída não permitida em uma parte subsequente da consulta, converta a tabela em cache em uma expressão de tabela comum (CTE).

**Exemplos**

Os exemplos a seguir mostram como o controle de colunas de saída não permitidas é aplicado. 
+ O membro A está em uma colaboração com o membro B. 
+ O membro B é um membro que pode executar consultas.
+ O membro A define os *usuários* de uma tabela com as colunas *age*, *gender*, *email* e *name*. As colunas *age* e *name* não são colunas de saída permitidas.
+ O membro B define uma tabela de *pets* com um conjunto semelhante de colunas de *age*, *gender* e *owner\_name*. No entanto, eles não definem nenhuma restrição nas colunas de saída, o que significa que todas as colunas na tabela podem ser projetadas livremente na consulta.



Se o membro B executar a consulta abaixo, ela será bloqueada porque as colunas de saída não permitidas não podem ser projetadas diretamente:

```
SELECT 
  age 
FROM 
  users
```

Se o membro B executar a consulta abaixo, ela será bloqueada porque as colunas de saída não permitidas não podem ser projetadas implicitamente por meio do asterisco do projeto:

```
SELECT 
  * 
FROM 
  users
```

Se o membro B executar a consulta abaixo, ela será bloqueada porque as transformações de colunas de saída não permitidas não podem ser projetadas:

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

Se o membro B executar a consulta abaixo, ela será bloqueada porque as colunas de saída não permitidas não podem ser referidas na projeção final usando um alias:

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

Se o membro B executar a consulta abaixo, ela será bloqueada porque as colunas restritas transformadas são projetadas na saída:

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

Se o membro B executar a consulta abaixo, ela será bloqueada porque as colunas de saída não permitidas definidas na CTE não podem ser referidas na projeção final:

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

Se o membro B executar a consulta abaixo, ela será bloqueada porque as colunas de saída não permitidas não podem ser usadas como chaves de classificação ou de partição na projeção final:

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

Se o membro B executar a consulta abaixo, ela será bem-sucedida porque as colunas que fazem parte das colunas de saída não permitidas ainda poderão ser usadas em outros constructos na consulta, como em cláusulas de junção ou de filtro.

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

Nesse mesmo cenário, o membro B também pode usar a coluna *name* em *users* como filtro ou chave de classificação:

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

Além disso, as colunas de saída não permitidas dos *usuários* podem ser usadas em projeções intermediárias, como subconsultas e CTEs, como:

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