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 des bq-Befehlszeilentools
  • 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 IAM-Rollen enthalten bigquery.tables.get-Berechtigungen:

  • 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 zur Ansicht 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 Details werden die Beschreibung der Ansicht, die Ansichtsinformationen und die SQL-Abfrage angezeigt, die die Ansicht definiert.

    Details ansehen

bq

Führen Sie den Befehl bq show aus. Mit dem Flag --format kann die Ausgabe gesteuert werden. Wenn Sie Informationen zu einer Ansicht 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 die 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 in 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)
	}
	defer client.Close()

	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
}

Java

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

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;

// Sample to get a view
public class GetView {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String viewName = "MY_VIEW_NAME";
    getView(datasetName, viewName);
  }

  public static void getView(String datasetName, String viewName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, viewName);
      Table view = bigquery.getTable(tableId);
      System.out.println("View retrieved successfully" + view.getDescription());
    } catch (BigQueryException e) {
      System.out.println("View not retrieved. \n" + e.toString());
    }
  }
}

Node.js

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function getView() {
  // Retrieves view properties.

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_view";

  // Retrieve view
  const dataset = bigquery.dataset(datasetId);
  const [view] = await dataset.table(tableId).get();

  const fullTableId = view.metadata.id;
  const viewQuery = view.metadata.view.query;

  // Display view properties
  console.log(`View at ${fullTableId}`);
  console.log(`View query: ${viewQuery}`);
}
getView();

Python

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

# from google.cloud import bigquery
# client = bigquery.Client()
# shared_dataset_id = 'my_shared_dataset'
project = client.project
shared_dataset_ref = bigquery.DatasetReference(project, shared_dataset_id)
view_ref = shared_dataset_ref.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 umfasst mehrere Ansichten, über die auf Metadaten von Datasets, Routinen, Tabellen, Ansichten, Jobs, Reservierungen und Streamingdaten zugegriffen werden kann.

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. Öffnen Sie in der Cloud Console die Seite "BigQuery".

    Zur Seite "BigQuery"

  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.

bq

Verwenden Sie den Befehl query und geben Sie dabei 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. Öffnen Sie in der Cloud Console die Seite "BigQuery".

    Zur Seite "BigQuery"

  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.

bq

Verwenden Sie den Befehl query und geben Sie dabei 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