Visualizzazione KEY_COLUMN_USAGE

La visualizzazione KEY_COLUMN_USAGE contiene le colonne delle tabelle di TABLE_CONSTRAINTS vincolate come chiavi dai vincoli di chiave primaria e chiave esterna.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire query sulla visualizzazione INFORMATION_SCHEMA.KEY_COLUMN_USAGE, chiedi all'amministratore di concederti il ruolo IAM di Editor dati BigQuery (roles/bigquery.dataEditor) nel tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire query sulla visualizzazione INFORMATION_SCHEMA.KEY_COLUMN_USAGE. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.KEY_COLUMN_USAGE, sono necessarie le seguenti autorizzazioni:

  • Visualizzazione delle definizioni di chiave primaria ed esterna: bigquery.tables.get
  • Visualizzazione degli schemi di informazioni delle tabelle: bigquery.tables.list

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.

Schema

La visualizzazione INFORMATION_SCHEMA.KEY_COLUMN_USAGE ha il seguente schema:

Nome colonna Tipo di dati Valore

constraint_catalog

STRING

Il nome del progetto del vincolo.

constraint_schema

STRING

Il nome del set di dati del vincolo.

constraint_name

STRING

Il nome del vincolo.

table_catalog

STRING

Il nome del progetto della tabella vincolata.

table_schema

STRING

Il nome del set di dati della tabella vincolata.

table_name

STRING

Il nome della tabella vincolata.

column_name

STRING

Il nome della colonna vincolata.

ordinal_position

INT64

La posizione ordinale della colonna all'interno della chiave del vincolo (a partire da 1).

position_in_unique_constraint

INT64

Per le chiavi esterne, la posizione ordinale della colonna all'interno del vincolo di chiave primaria (a partire da 1). Questo valore è NULL per i vincoli di chiave primaria.

Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema informativo anziché utilizzare un carattere jolly (SELECT *). L'elenco esplicito delle colonne impedisce l'interruzione delle query se lo schema sottostante cambia.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore del set di dati. Per le query con un qualificatore del set di dati, devi disporre delle autorizzazioni per il set di dati. Per saperne di più, vedi Sintassi. La tabella seguente mostra gli ambiti di regione e risorsa per questa visualizzazione:

Nome vista Ambito risorsa Ambito regionale
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; A livello di set di dati Posizione del set di dati
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non viene specificato, viene utilizzato il progetto predefinito.

Per le query con un qualificatore del set di dati, devi disporre delle autorizzazioni per il set di dati. Per le query con un qualificatore di regione, devi disporre delle autorizzazioni per il progetto.

Esempi

Esempio 1:

La query seguente mostra i vincoli per una singola tabella in un set di dati:

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

Sostituisci quanto segue:

  • PROJECT_ID: (facoltativo) Il nome del tuo progetto cloud. Se non viene specificato, questo comando utilizza il progetto predefinito.
  • DATASET: il nome del set di dati.
  • TABLE: il nome della tabella.

Al contrario, la query seguente mostra l'utilizzo delle colonne chiave per tutte le tabelle in un singolo set di dati.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Se una tabella o un set di dati non ha vincoli, i risultati della query sono simili ai seguenti:

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

Le seguenti istruzioni DDL creano una tabella di chiave primaria e una tabella di chiave esterna.

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

Se viene eseguita una query con l'istruzione nell'Esempio 1, i risultati della query sono simili ai seguenti. Tieni presente che CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA e le colonne duplicate non sono inclusi nei risultati dell'esempio.

+---------------------------+--------------+-------------+------------------+-------------------------------+
|     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                             |
+---------------------------+--------------+-------------+------------------+-------------------------------+