

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 구성된 테이블의 허용되지 않는 열
<a name="disallowed-columns"></a>

허용되지 않는 출력 열 구성은 쿼리 결과에 투영할 수 없는 열 목록(있는 경우)을 정의할 수 있는 AWS Clean Rooms 사용자 지정 분석 규칙의 제어입니다. 이 목록에 참조된 열은 ‘허용되지 않는 출력 열’로 간주됩니다. 즉, 이러한 열을 변환, 별칭 지정 또는 기타 방법으로 참조한 경우 쿼리의 최종 SELECT(프로젝션)에 표시되지 않을 수 있습니다.

이 기능은 열이 출력에 직접 표시되는 것은 차단하지만, 다른 메커니즘을 통해 기본값을 간접적으로 유추하는 것을 완전히 차단하지는 못합니다. 이러한 열은 최종 프로젝션에서 참조되지 않는 한 하위 쿼리나 공통 테이블 식(CTE)과 같은 프로젝션 절에서 계속 사용할 수 있습니다.

허용되지 않는 출력 열 구성은 사용 사례와 해당 개인 정보 보호 요구 사항에 따라 분석 템플릿 수준의 검토와 결합하여 테이블에 대한 제어를 적용하고 코드화할 있는 유연성을 제공합니다.

이 구성을 설정하는 방법에 대한 자세한 내용은 [테이블에 사용자 지정 분석 규칙 추가(안내식 흐름)](add-analysis-rule.md#add-custom-analysis-rule-wizard) 단원을 참조하세요.

**예시**

다음 예시는 허용되지 않는 출력 열 제어가 적용되는 방식을 보여줍니다.
+ 구성원 A는 구성원 B와 공동 작업을 하고 있습니다.
+ 구성원 B는 쿼리를 실행할 수 있는 구성원입니다.
+ 구성원 A는 *age*, *gender*, *email*, *name* 열이 포함된 *users* 테이블을 정의합니다. *age* 및 *name* 열은 허용되지 않는 출력 열입니다.
+ 구성원 B는 *age*, *gender*, *owner\$1name*이라는 유사한 열 집합이 포함된 *pets* 테이블을 정의합니다. 출력 열에 대한 제약 조건을 설정하지 않았으므로, 테이블의 모든 열이 쿼리에 자유롭게 표시될 수 있습니다.



구성원 B가 다음 쿼리를 실행할 경우 허용되지 않는 출력 열을 직접 표시할 수 없으므로 차단됩니다.

```
SELECT 
  age 
FROM 
  users
```

구성원 B가 다음 쿼리를 실행할 경우 허용되지 않는 출력 열을 project star를 통해 암시적으로 표시할 수 없으므로 차단됩니다.

```
SELECT 
  * 
FROM 
  users
```

구성원 B가 다음 쿼리를 실행할 경우 허용되지 않는 출력 열의 변환을 표시할 수 없으므로 차단됩니다.

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

구성원 B가 다음 쿼리를 실행할 경우 별칭을 사용하여 허용되지 않는 출력 열을 최종 프로젝션에서 참조할 수 없으므로 차단됩니다.

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

구성원 B가 다음 쿼리를 실행할 경우 변환된 제한 열이 출력에 투영되므로 차단됩니다.

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

구성원 B가 다음 쿼리를 실행할 경우 CTE에 정의된 허용되지 않는 출력 열을 최종 프로젝션에서 참조할 수 없으므로 차단됩니다.

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

구성원 B가 다음 쿼리를 실행할 경우 허용되지 않는 출력 열을 최종 프로젝션에서 정렬 또는 파티션 키로 사용할 수 없으므로 차단됩니다.

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

구성원 B가 다음 쿼리를 실행할 경우 허용되지 않는 출력 열의 일부인 열은 조인 또는 필터 절과 같은 쿼리의 다른 구문에서 계속 사용할 수 있으므로 쿼리가 성공합니다.

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

동일한 시나리오에서 구성원 B는 *users*의 *name* 열을 필터 또는 정렬 키로 사용할 수도 있습니다.

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

또한 *users*의 허용되지 않는 출력 열은 다음과 같은 하위 쿼리 및 CTE와 같은 중간 프로젝션에 사용할 수 있습니다.

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