Informationen zu Ansichten abrufen

In diesem Dokument wird gezeigt, wie Sie Informationen oder Metadaten zu Ansichten in BigQuery abrufen.

Metadaten können Sie auf folgende Weise abrufen:

  • Mit der Cloud Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq show über die Befehlszeile
  • Durch Aufrufen der API-Methode tables.get
  • Mit den Clientbibliotheken
  • Durch Abfragen der INFORMATION_SCHEMA-Ansichten (Beta)

Erforderliche Berechtigungen

Sie benötigen mindestens Berechtigungen des Typs bigquery.tables.get, um Informationen zu Ansichten abzurufen. Die folgenden vordefinierten Cloud IAM-Rollen enthalten die Berechtigungen vom Typ bigquery.tables.get:

  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

Wenn ein Nutzer mit Berechtigungen vom Typ bigquery.datasets.create ein Dataset erstellt, hat er dafür außerdem bigquery.dataOwner-Zugriff. Mit bigquery.dataOwner-Zugriff haben Nutzer die Möglichkeit, Informationen zu Ansichten im Dataset abzurufen.

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

Informationen zu Ansichten abrufen

Das Verfahren zum Abrufen von Informationen zu Ansichten ist identisch mit dem Vorgang zum Abrufen von Informationen zu Tabellen.

So rufen Sie Informationen zu Ansichten ab:

Console

  1. Maximieren Sie das Dataset.

  2. Klicken Sie auf den Namen der Ansicht.

  3. Klicken Sie auf Details. Auf dem Tab Details werden die Beschreibung der Ansicht, die Ansichtsinformationen und die SQL-Abfrage angezeigt, die die Ansicht definiert.

    Details ansehen

Klassische UI

  1. Maximieren Sie das Dataset.

  2. Klicken Sie auf den Namen der Ansicht.

  3. Klicken Sie auf Details. Auf der Seite View Details (Ansichtsdetails) werden die Ansichtsbeschreibung sowie Ansichtsinformationen und die SQL-Abfrage angezeigt, die die Ansicht definiert.

    Details ansehen

Befehlszeile

Führen Sie den Befehl bq show aus. Mit dem Flag --format kann die Ausgabe gesteuert werden. Wenn Sie Informationen zu einer Tabelle in einem anderen Projekt als Ihrem Standardprojekt abrufen, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET]

bq show \
--format=prettyjson \
project_id:dataset.view

Dabei gilt:

  • project_id ist Ihre Projekt-ID.
  • dataset ist der Name des Datasets.
  • view ist der Name der Ansicht.

Beispiele:

Mit dem folgenden Befehl listen Sie Informationen zu myview im Dataset mydataset Ihres Standardprojekts auf.

bq show --format=prettyjson mydataset.myview

Mit dem folgenden Befehl rufen Sie alle Informationen zu myview im Dataset mydataset im myotherproject auf.

bq show --format=prettyjson myotherproject:mydataset.myview

API

Mithilfe der Methode tables.get geben Sie alle relevanten Parameter an.

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// getView demonstrates fetching the metadata from a BigQuery logical view and printing it to an io.Writer.
func getView(w io.Writer, projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}
	fmt.Fprintf(w, "View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)
	return nil
}

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zum Einrichten von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

# from google.cloud import bigquery
# client = bigquery.Client()
# shared_dataset_id = 'my_shared_dataset'

view_ref = client.dataset(shared_dataset_id).table("my_shared_view")
view = client.get_table(view_ref)  # API Request

# Display view properties
print("View at {}".format(view.full_table_id))
print("View Query:\n{}".format(view.view_query))

INFORMATION_SCHEMA (Beta)

INFORMATION_SCHEMA steht für eine Reihe von Ansichten, die den Zugriff auf Metadaten von Datasets, Routinen, Tabellen und Ansichten ermöglichen.

Ansicht VIEWS

Wenn Sie die Ansicht INFORMATION_SCHEMA.VIEWS abfragen, wird im Ergebnis jede Ansicht in einem Dataset in einer eigenen Zeile dargestellt.

Die Ansicht INFORMATION_SCHEMA.VIEWS hat das folgende Schema:

Spaltenname Datentyp Wert
TABLE_CATALOG STRING Der Name des Projekts, zu dem das Dataset gehört
TABLE_SCHEMA STRING Der Name des Datasets, das die Ansicht enthält (auch als Dataset-id bezeichnet)
TABLE_NAME STRING Der Name der Ansicht (auch als Tabellen-id bezeichnet)
VIEW_DEFINITION STRING Die SQL-Abfrage, die die Ansicht definiert
CHECK_OPTION STRING Der zurückgegebene Wert ist immer NULL
USE_STANDARD_SQL STRING YES, wenn die Ansicht mithilfe einer Standard-SQL-Abfrage erstellt wurde; NO, wenn für useLegacySql der Wert true festgelegt ist

Beispiele

Beispiel 1:

Im folgenden Beispiel werden alle Spalten der Ansicht INFORMATION_SCHEMA.VIEWS mit Ausnahme von check_option abgerufen. Diese Spalte ist für die zukünftige Verwendung reserviert. Die zurückgegebenen Metadaten gelten für alle Ansichten in mydataset in Ihrem Standardprojekt myproject.

Dem Dataset fügen Sie die Projekt-ID im folgenden Format hinzu, um die Abfrage für ein anderes Projekt als Ihr Standardprojekt auszuführen: `project_id`.dataset.INFORMATION_SCHEMA.view; beispielsweise `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS.

So führen Sie die Abfrage aus:

Console

  1. Rufen Sie in der Cloud Console die BigQuery-Web-UI auf.

    Zur Cloud Console

  2. Geben Sie im Feld Abfrageeditor die folgende Standard-SQL-Abfrage ein. Für INFORMATION_SCHEMA muss die Standard-SQL-Syntax verwendet werden. In der Cloud Console ist Standard-SQL die Standardsyntax.

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. Klicken Sie auf Ausführen.

Befehlszeile

Verwenden Sie den Befehl query und geben Sie die Standard-SQL-Syntax mit dem Flag --nouse_legacy_sql oder --use_legacy_sql=false an. Für Abfragen von INFORMATION_SCHEMA ist die Standard-SQL-Syntax erforderlich.

So führen Sie die Abfrage aus:

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(check_option)
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS'

Die Ergebnisse sollten so aussehen:

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

Dem Ergebnis können Sie entnehmen, dass diese Ansicht mithilfe einer Legacy-SQL-Abfrage erstellt wurde.

Beispiel 2:

Im folgenden Beispiel werden die SQL-Abfrage und Abfragesyntax für die Definition von myview in mydataset in Ihrem Standardprojekt myproject abgerufen.

Dem Dataset fügen Sie die Projekt-ID im folgenden Format hinzu, um die Abfrage für ein anderes Projekt als Ihr Standardprojekt auszuführen: `project_id`.dataset.INFORMATION_SCHEMA.view; beispielsweise `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS.

So führen Sie die Abfrage aus:

Console

  1. Rufen Sie in der Cloud Console die BigQuery-Web-UI auf.

    Zur Cloud Console

  2. Geben Sie im Feld Abfrageeditor die folgende Standard-SQL-Abfrage ein. Für INFORMATION_SCHEMA muss die Standard-SQL-Syntax verwendet werden. In der Cloud Console ist Standard-SQL die Standardsyntax.

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. Klicken Sie auf Ausführen.

Befehlszeile

Verwenden Sie den Befehl query und geben Sie die Standard-SQL-Syntax mit dem Flag --nouse_legacy_sql oder --use_legacy_sql=false an. Für Abfragen von INFORMATION_SCHEMA ist die Standard-SQL-Syntax erforderlich.

So führen Sie die Abfrage aus:

bq query --nouse_legacy_sql \
'SELECT
   table_name, view_definition, use_standard_sql
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS
 WHERE
   table_name="myview"'

Die Ergebnisse sollten so aussehen:

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

Dem Ergebnis können Sie entnehmen, dass diese Ansicht mithilfe einer Standard-SQL-Abfrage erstellt wurde.

Weitere Informationen