

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kolom tabel yang dikonfigurasi tidak diizinkan
<a name="disallowed-columns"></a>

Konfigurasi kolom keluaran yang tidak diizinkan adalah kontrol dalam aturan analisis AWS Clean Rooms kustom yang memungkinkan Anda menentukan daftar kolom (jika ada) yang tidak diizinkan untuk diproyeksikan dalam hasil kueri. Kolom yang direferensikan dalam daftar ini dianggap “kolom keluaran yang tidak diizinkan”. Ini berarti bahwa referensi apa pun ke kolom tersebut melalui transformasi, aliasing, atau cara lain mungkin tidak ada dalam SELECT akhir (proyeksi) kueri.

Meskipun kemampuan melarang kolom diproyeksikan secara langsung dalam output, itu tidak sepenuhnya mencegah nilai yang mendasarinya disimpulkan secara tidak langsung melalui mekanisme lain. Kolom ini masih dapat digunakan dalam klausa proyeksi (seperti dalam subquery atau Common Table Expression (CTE)), selama mereka tidak direferensikan dalam proyeksi paling akhir.

Konfigurasi kolom keluaran yang tidak diizinkan memberi Anda fleksibilitas untuk menerapkan dan mengkodifikasi kontrol pada tabel Anda dalam kombinasi dengan tinjauan tingkat templat analisis berdasarkan kasus penggunaan dan persyaratan privasi yang sesuai.

Untuk informasi selengkapnya tentang cara mengatur konfigurasi ini, lihat[Menambahkan aturan analisis kustom ke tabel (alur terpandu)](add-analysis-rule.md#add-custom-analysis-rule-wizard).

**Contoh**

Contoh berikut menampilkan bagaimana kontrol kolom keluaran yang tidak diizinkan diterapkan. 
+ Anggota A bekerja sama dengan Anggota B. 
+ Anggota B adalah anggota yang dapat menjalankan kueri.
+ Anggota A mendefinisikan *pengguna* tabel dengan *umur* kolom, *jenis kelamin*, *email*, dan *nama*. *Usia* kolom dan *nama* adalah kolom keluaran yang tidak diizinkan.
+ Anggota B mendefinisikan *hewan peliharaan* tabel dengan kumpulan kolom *usia*, *jenis kelamin*, dan *owner\$1name* yang serupa. Namun, mereka tidak menetapkan batasan apa pun pada kolom keluaran, yang berarti bahwa semua kolom dalam tabel dapat diproyeksikan secara bebas dalam kueri.



Jika Anggota B menjalankan kueri berikut, kueri tersebut diblokir karena kolom keluaran yang tidak diizinkan tidak dapat diproyeksikan secara langsung:

```
SELECT 
  age 
FROM 
  users
```

Jika Anggota B menjalankan kueri berikut, itu diblokir karena kolom keluaran yang tidak diizinkan tidak dapat diproyeksikan secara implisit melalui bintang proyek:

```
SELECT 
  * 
FROM 
  users
```

Jika Anggota B menjalankan kueri berikut, kueri tersebut diblokir karena transformasi kolom keluaran yang tidak diizinkan tidak dapat diproyeksikan:

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

Jika Anggota B menjalankan kueri berikut, kueri tersebut diblokir karena kolom keluaran yang tidak diizinkan tidak dapat direferensikan dalam proyeksi akhir menggunakan alias:

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

Jika Anggota B menjalankan kueri berikut, itu diblokir karena kolom terbatas yang diubah diproyeksikan dalam output:

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

Jika Anggota B menjalankan kueri berikut, itu diblokir karena kolom keluaran yang tidak diizinkan yang ditentukan dalam CTE tidak dapat direferensikan dalam proyeksi akhir:

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

Jika Anggota B menjalankan kueri berikut, itu diblokir karena kolom keluaran yang tidak diizinkan tidak dapat digunakan sebagai kunci pengurutan atau partisi dalam proyeksi akhir:

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

Jika Anggota B menjalankan kueri berikut, itu berhasil karena kolom yang merupakan bagian dari kolom keluaran yang tidak diizinkan masih dapat digunakan di seluruh konstruksi lain dalam kueri, seperti dalam klausa gabungan atau filter.

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

Dalam skenario yang sama, Anggota B juga dapat menggunakan kolom *nama* di *pengguna* sebagai filter atau kunci sortir:

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

Selain itu, kolom keluaran yang tidak diizinkan dari *pengguna* dapat digunakan dalam proyeksi menengah seperti subquery dan CTEs, seperti:

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