Ansicht KEY_COLUMN_USAGE

Die KEY_COLUMN_USAGE Ansicht enthält Spalten der Tabellen aus TABLE_CONSTRAINTS die als Schlüssel durch Primär- und Fremdschlüssel Einschränkungen eingeschränkt sind.

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie zum Abfragen der INFORMATION_SCHEMA.KEY_COLUMN_USAGE Ansicht benötigen, müssen Sie Ihren Administrator bitten, Ihnen die IAM-Rolle BigQuery-Datenbearbeiter (roles/bigquery.dataEditor) für Ihr Projekt zu gewähren. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Abfragen der Ansicht INFORMATION_SCHEMA.KEY_COLUMN_USAGE erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Zum Abfragen der Ansicht INFORMATION_SCHEMA.KEY_COLUMN_USAGE sind die folgenden Berechtigungen erforderlich:

  • Definitionen von Primär- und Fremdschlüsseln ansehen: bigquery.tables.get
  • Tabelleninformationsschemas ansehen: bigquery.tables.list

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Schema

Die Ansicht INFORMATION_SCHEMA.KEY_COLUMN_USAGE hat das folgende Schema:

Spaltenname Datentyp Wert

constraint_catalog

STRING

Der Name des Einschränkungsprojekts.

constraint_schema

STRING

Der Name des Einschränkungs-Datasets.

constraint_name

STRING

Der Name der Einschränkung.

table_catalog

STRING

Der Projektname der eingeschränkten Tabelle.

table_schema

STRING

Der Name des eingeschränkten Tabellen-Datasets.

table_name

STRING

Der Name der eingeschränkten Tabelle.

column_name

STRING

Der Name der eingeschränkten Spalte.

ordinal_position

INT64

Die ordinale Position der Spalte innerhalb des Einschränkungsschlüssels (beginnend mit 1).

position_in_unique_constraint

INT64

Bei Fremdschlüsseln die ordinale Position der Spalte innerhalb der Primärschlüsseleinschränkung (ab 1). Dieser Wert ist für Primärschlüsseleinschränkungen NULL.

Aus Stabilitätsgründen empfehlen wir, Spalten in Ihren Informationsschemaabfragen explizit aufzulisten, anstatt ein Platzhalterzeichen (SELECT *) zu verwenden. Wenn Sie Spalten explizit auflisten, wird verhindert, dass Abfragen fehlschlagen, wenn sich das zugrunde liegende Schema ändert.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Dataset-Qualifizierer verwendet werden. Für Abfragen mit einem Dataset-Qualifier benötigen Sie Berechtigungen für das Dataset. Weitere Informationen finden Sie unter Syntax. In der folgenden Tabelle werden die Regions- und Ressourcenbereiche für diese Ansicht gezeigt:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; Dataset-Ebene Dataset-Speicherort
Ersetzen Sie dabei Folgendes:
  • Optional: PROJECT_ID: die ID Ihres Google Cloud Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.

Für Abfragen mit einem Dataset-Qualifier benötigen Sie Berechtigungen für das Dataset. Für Abfragen mit einem Regions-Qualifier müssen Sie Berechtigungen für das Projekt haben.

Beispiele

Beispiel 1:

Die folgende Abfrage zeigt die Einschränkungen für eine einzelne Tabelle in einem Dataset:

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

Ersetzen Sie dabei Folgendes:

  • PROJECT_ID: Optional. Der Name Ihres Cloud-Projekts. Wenn nicht angegeben, verwendet dieser Befehl das Standardprojekt.
  • DATASET: der Name Ihres Datasets
  • TABLE: der Name der Tabelle

Umgekehrt zeigt die folgende Abfrage die Nutzung der Schlüsselspalten für alle Tabellen in einem einzelnen Dataset.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Wenn für eine Tabelle oder ein Dataset keine Einschränkungen gelten, sehen die Abfrageergebnisse so aus:

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

Mit den folgenden DDL-Anweisungen werden eine Primärschlüsseltabelle und eine Fremdschlüsseltabelle erstellt.

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

Bei der Abfrage mit der Anweisung in Beispiel 1 sehen die Abfrageergebnisse in etwa so aus: Beachten Sie, dass die Spalten CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA und doppelte Spalten nicht in den Beispielergebnissen enthalten sind.

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