Tampilan KEY_COLUMN_USAGE

Tampilan KEY_COLUMN_USAGE berisi kolom tabel dari TABLE_CONSTRAINTS yang dibatasi sebagai kunci oleh batasan kunci utama dan kunci asing.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat kueri tampilan INFORMATION_SCHEMA.KEY_COLUMN_USAGE, minta administrator untuk memberi Anda peran IAM BigQuery Data Editor (roles/bigquery.dataEditor) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat kueri tampilan INFORMATION_SCHEMA.KEY_COLUMN_USAGE. Untuk melihat izin yang pasti diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat kueri tampilan INFORMATION_SCHEMA.KEY_COLUMN_USAGE:

  • Melihat definisi kunci utama dan kunci asing: bigquery.tables.get
  • Melihat skema informasi tabel: bigquery.tables.list

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Peran dan izin bawaan.

Skema

Tampilan INFORMATION_SCHEMA.KEY_COLUMN_USAGE memiliki skema berikut:

Nama Kolom Jenis Data Nilai

constraint_catalog

STRING

Nama project batasan.

constraint_schema

STRING

Nama set data batasan.

constraint_name

STRING

Nama batasan.

table_catalog

STRING

Nama project tabel yang dibatasi.

table_schema

STRING

Nama set data tabel yang dibatasi.

table_name

STRING

Nama tabel yang dibatasi.

column_name

STRING

Nama kolom yang dibatasi.

ordinal_position

INT64

Posisi ordinal kolom dalam kunci batasan (mulai dari 1).

position_in_unique_constraint

INT64

Untuk kunci asing, posisi ordinal kolom dalam batasan kunci utama (mulai dari 1). Nilai ini berupa NULL untuk batasan kunci utama.

Untuk menjaga stabilitas, sebaiknya cantumkan kolom secara eksplisit dalam kueri skema informasi, bukan menggunakan karakter pengganti (SELECT *). Mencantumkan kolom secara eksplisit akan mencegah kueri rusak jika skema yang mendasarinya berubah.

Cakupan dan sintaksis

Kueri terhadap tampilan ini harus menyertakan penentu set data. Untuk kueri dengan penentu set data, Anda harus memiliki izin untuk set data. Untuk informasi selengkapnya, lihat Sintaksis. Tabel berikut menampilkan cakupan region dan resource untuk tampilan ini:

Nama tampilan Cakupan resource Cakupan region
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; Level set data Lokasi set data
Ganti kode berikut:
  • Opsional: PROJECT_ID: ID Google Cloud project Anda. Jika tidak ditentukan, project default akan digunakan.

Untuk kueri dengan penentu set data, Anda harus memiliki izin untuk set data. Untuk kueri dengan penentu region, Anda harus memiliki izin untuk project.

Contoh

Contoh 1:

Kueri berikut menunjukkan batasan untuk satu tabel dalam set data:

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE table_name = TABLE;

Ganti kode berikut:

  • PROJECT_ID: Opsional. Nama project cloud Anda. Jika tidak ditentukan, perintah ini akan menggunakan project default.
  • DATASET: Nama set data Anda.
  • TABLE: Nama tabel.

Sebaliknya, kueri berikut menunjukkan penggunaan kolom kunci untuk semua tabel dalam satu set data.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Jika tabel atau set data tidak memiliki batasan, hasil kueri akan terlihat seperti ini:

+-----------------------------+
| There is no data to display |
+-----------------------------+
Contoh 2:

Pernyataan DDL berikut membuat tabel kunci utama dan tabel kunci asing.

CREATE TABLE composite_pk (x int64, y string, primary key (x, y) NOT ENFORCED);
CREATE TABLE table composite_fk (x int64, y string, z string,  primary key (x, y)
NOT ENFORCED, CONSTRAINT composite_fk foreign key (z, x)
REFERENCES composite_pk (y, x) NOT ENFORCED);

Jika dikueri dengan pernyataan dalam Contoh 1, hasil kuerinya akan mirip dengan berikut ini. Perhatikan bahwa kolom CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, dan duplikat tidak disertakan dalam hasil contoh.

+---------------------------+--------------+-------------+------------------+-------------------------------+
|     CONSTRAINT_NAME       |  TABLE_NAME  | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT |
+---------------------------+--------------+-------------+------------------+-------------------------------+
| composite_pk.pk$          | composite_pk | x           | 1                | NULL                          |
| composite_pk.pk$          | composite_pk | y           | 2                | NULL                          |
| composite_fk.pk$          | composite_fk | x           | 1                | NULL                          |
| composite_fk.pk$          | composite_fk | y           | 2                | NULL                          |
| composite_fk.composite_fk | composite_fk | z           | 1                | 2                             |
| composite_fk.composite_fk | composite_fk | x           | 2                | 1                             |
+---------------------------+--------------+-------------+------------------+-------------------------------+