Ansicht COLUMNS

Die Ansicht INFORMATION_SCHEMA.COLUMNS enthält eine Zeile für jede Spalte (Feld) in einer Tabelle.

Erforderliche Berechtigungen

Zum Abfragen der INFORMATION_SCHEMA.COLUMNS-Ansicht benötigen Sie folgende IAM-Berechtigungen (Identity and Access Management):

  • bigquery.tables.get
  • bigquery.tables.list

Die folgenden vordefinierten IAM-Rollen enthalten jeweils die vorherigen Berechtigungen:

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer

Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Schema

Wenn Sie die Ansicht INFORMATION_SCHEMA.COLUMNS abfragen, wird in den Abfrageergebnissen jede Spalte (jedes Feld) einer Tabelle in einer eigenen Zeile dargestellt.

Die Ansicht INFORMATION_SCHEMA.COLUMNS hat das folgende Schema:

Spaltenname Datentyp Wert
table_catalog STRING Die ID des Projekts, das das Dataset enthält.
table_schema STRING Der Name des Datasets, das die Tabelle enthält (auch als datasetId bezeichnet)
table_name STRING Der Name der Tabelle oder Ansicht (auch als tableId bezeichnet).
column_name STRING Der Name der Spalte.
ordinal_position INT64 Der 1-indexierte Versatz der Spalte in der Tabelle; bei einer Pseudospalte wie _PARTITIONTIME oder _PARTITIONDATE ist der Wert NULL.
is_nullable STRING YES oder NO, je nachdem, ob der Spaltenmodus NULL-Werte zulässt.
data_type STRING Der GoogleSQL-Datentyp der Spalte.
is_generated STRING Der Wert ist ALWAYS, wenn die Spalte eine automatisch generierte Spalte für Einbettungen ist. Andernfalls ist der Wert NEVER.
generation_expression STRING Der Wert ist der Generierungsausdruck, der zum Definieren der Spalte verwendet wird, wenn es sich um eine automatisch generierte Einbettungsspalte handelt. Andernfalls ist der Wert NULL.
is_stored STRING Der Wert ist YES, wenn es sich bei der Spalte um eine automatisch generierte Spalte für Einbettungen handelt. Andernfalls ist der Wert NULL.
async_generation_status STRUCT Enthält blockierende Fehler für Hintergrundjobs zur Generierung von Einbettungen, wenn die Spalte eine automatisch generierte Einbettungsspalte ist. Andernfalls ist der Wert NULL. Informationen zu blockierenden Fehlern finden Sie im Feld async_generation_status.blocking_error.message. Blockierungsfehler können folgende Ursachen haben:
  • Fehler „Berechtigung verweigert“
  • Fehler des Typs „Nicht gefunden“
  • Fehler bei nicht unterstützten Endpunkten für Einbettungsmodelle
  • Fehler „Vertex AI API nicht aktiviert“
Wenn der nächste Job zur Generierung von Einbettungen erfolgreich abgeschlossen wurde, wird die Spalte async_generation_status geleert.
is_hidden STRING YES oder NO, je nachdem, ob die Spalte eine Pseudospalte wie _PARTITIONTIME oder _PARTITIONDATE ist.
is_updatable STRING Der Wert ist immer NULL.
is_system_defined STRING YES oder NO, je nachdem, ob die Spalte eine Pseudospalte wie _PARTITIONTIME oder _PARTITIONDATE ist.
is_partitioning_column STRING YES oder NO, je nachdem, ob die Spalte eine Partitionierungsspalte ist.
clustering_ordinal_position INT64 Der 1-indexierte Versatz der Spalte in den Clustering-Spalten der Tabelle; der Wert ist NULL, wenn die Tabelle keine geclusterte Tabelle ist.
collation_name STRING Der Name der Sortierspezifikation, falls vorhanden. Andernfalls NULL.

Wenn ein STRING oder ARRAY<STRING> übergeben wird, wird die Sortierspezifikation zurückgegeben, sofern vorhanden. Andernfalls wird NULL zurückgegeben.
column_default STRING Der Standardwert der Spalte, falls vorhanden. Andernfalls lautet der Wert NULL.
rounding_mode STRING Der Rundungsmodus, der für in das Feld geschriebene Werte verwendet wird, wenn sein Typ ein parametrisierter NUMERIC oder BIGNUMERIC ist. Andernfalls ist der Wert NULL.
data_policies.name STRING Die Liste der Datenrichtlinien, die an die Spalte angehängt sind, um den Zugriff und die Maskierung zu steuern. Dieses Feld befindet sich in der (Vorschau).
policy_tags ARRAY<STRING> Die Liste der Richtlinien-Tags, die an die Spalte angehängt sind.

Aus Stabilitätsgründen empfehlen wir, Spalten in Ihren Informationsschema-Abfragen 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- oder Regions-Qualifier verwendet werden. 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. Weitere Informationen finden Sie unter Syntax. In der folgenden Tabelle werden die Regions- und Ressourcenbereiche für diese Ansicht erläutert:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMNS auf Projektebene REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS Dataset-Ebene Dataset-Speicherort
Dabei gilt:
  • Optional: PROJECT_ID: die ID Ihres Cloud de Confiance -Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
  • REGION: ist ein beliebiger Dataset-Regionsname. Beispiel: `region-us`
  • DATASET_ID: die ID Ihres Datasets. Weitere Informationen finden Sie unter Dataset-Qualifier.

Beispiel

Im folgenden Beispiel werden aus der Ansicht INFORMATION_SCHEMA.COLUMNS Metadaten für die Tabelle population_by_zip_2010 im Dataset census_bureau_usa abgerufen. Dieses Dataset ist Teil des öffentlichen Dataset-Programms von BigQuery.

Da sich die abgefragte Tabelle in einem anderen Projekt (bigquery-public-data) befindet, fügen Sie dem Dataset die Projekt-ID im Format `project_id`.dataset.INFORMATION_SCHEMA.view hinzu, beispielsweise so: `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

Die folgende Spalte ist nicht in den Abfrageergebnissen enthalten:

  • IS_UPDATABLE
  SELECT
    * EXCEPT(is_updatable)
  FROM
    `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS
  WHERE
    table_name = 'population_by_zip_2010';

Das Ergebnis sieht etwa so aus. Zur besseren Lesbarkeit werden einige Spalten aus dem Ergebnis ausgeschlossen.

+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
|       table_name       | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position | policy_tags |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
| population_by_zip_2010 | zipcode     |                1 | NO          | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | geo_id      |                2 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | minimum_age |                3 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | maximum_age |                4 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | gender      |                5 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | population  |                6 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+