Informationen zu Datasets abrufen

In diesem Dokument erfahren Sie, wie Sie Informationen oder Metadaten zu Datasets in BigQuery abrufen.

Dataset-Informationen können so abgerufen werden:

  • Cloud Console verwenden
  • Mit dem Befehl bq show im bq-Befehlszeilentool
  • Durch Aufruf der API-Methode datasets.get
  • Durch Abfragen der INFORMATION_SCHEMA-Ansichten (Beta)
  • Mithilfe der Clientbibliotheken

Erforderliche Berechtigungen

Zum Abrufen von Informationen oder Metadaten zu einem Dataset benötigen Sie mindestens Berechtigungen vom Typ bigquery.datasets.get. Die folgenden vordefinierten IAM-Rollen enthalten bigquery.datasets.get-Berechtigungen:

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

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

Dataset-Informationen abrufen

So rufen Sie Informationen zu den Datasets eines Projekts ab:

Console

Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus. Die Beschreibung und die Details werden im Detailbereich angezeigt. Die Tabellen für ein Dataset werden im Bereich Explorer mit dem Namen des Datasets aufgeführt.

Standardmäßig sind anonyme Datasets in der Cloud Console ausgeblendet. Zum Aufrufen von Informationen zu anonymen Datasets können Sie das bq-Befehlszeilentool oder die API verwenden.

bq

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

Wenn Sie Informationen zu einem anonymen Dataset aufrufen möchten, geben Sie den Befehl bq ls --all zum Auflisten aller Datasets ein. Führen Sie anschließend den Befehl bq show mit dem Namen des anonymen Datasets aus.

bq show --format=prettyjson project_id:dataset

Dabei gilt:

  • project_id ist der Name Ihres Projekts.
  • dataset ist der Name des Datasets

Beispiele:

Geben Sie den folgenden Befehl ein, um Informationen zu mydataset in Ihrem Standardprojekt aufzurufen.

bq show --format=prettyjson mydataset

Geben Sie den folgenden Befehl ein, um Informationen zu mydataset in myotherproject aufzurufen.

bq show --format=prettyjson myotherproject:mydataset

Geben Sie den folgenden Befehl ein, um Informationen zu einem anonymen Dataset _1234abcd56efgh78ijkl1234 in Ihrem Standardprojekt aufzurufen.

bq show --format=prettyjson _1234abcd56efgh78ijkl1234

API

Rufen Sie die API-Methode datasets.get auf und 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 Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// printDatasetInfo demonstrates fetching dataset metadata and printing some of it to an io.Writer.
func printDatasetInfo(w io.Writer, projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	meta, err := client.Dataset(datasetID).Metadata(ctx)
	if err != nil {
		return err
	}

	fmt.Fprintf(w, "Dataset ID: %s\n", datasetID)
	fmt.Fprintf(w, "Description: %s\n", meta.Description)
	fmt.Fprintln(w, "Labels:")
	for k, v := range meta.Labels {
		fmt.Fprintf(w, "\t%s: %s", k, v)
	}
	fmt.Fprintln(w, "Tables:")
	it := client.Dataset(datasetID).Tables(ctx)

	cnt := 0
	for {
		t, err := it.Next()
		if err == iterator.Done {
			break
		}
		cnt++
		fmt.Fprintf(w, "\t%s\n", t.TableID)
	}
	if cnt == 0 {
		fmt.Fprintln(w, "\tThis dataset does not contain any tables.")
	}
	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.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.TableListOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import com.google.cloud.bigquery.DatasetId;
import com.google.cloud.bigquery.Table;

public class GetDatasetInfo {

  public static void runGetDatasetInfo() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    getDatasetInfo(projectId, datasetName);
  }

  public static void getDatasetInfo(String projectId, String datasetName) {
    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();
      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      Dataset dataset = bigquery.getDataset(datasetId);

      // View dataset properties
      String description = dataset.getDescription();
      System.out.println(description);

      // View tables in the dataset
      // For more information on listing tables see:
      // https://javadoc.io/static/com.google.cloud/google-cloud-bigquery/0.22.0-beta/com/google/cloud/bigquery/BigQuery.html
      Page<Table> tables = bigquery.listTables(datasetName, TableListOption.pageSize(100));

      tables.iterateAll().forEach(table -> System.out.print(table.getTableId().getTable() + "\n"));

      System.out.println("Dataset info retrieved successfully.");
    } catch (BigQueryException e) {
      System.out.println("Dataset info 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 Angaben 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 getDataset() {
  // Retrieves dataset named "my_dataset".

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

  // Retrieve dataset reference
  const [dataset] = await bigquery.dataset(datasetId).get();

  console.log('Dataset:');
  console.log(dataset.metadata.datasetReference);
}
getDataset();

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

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)  # Make an API request.

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
friendly_name = dataset.friendly_name
print(
    "Got dataset '{}' with friendly_name '{}'.".format(
        full_dataset_id, friendly_name
    )
)

# View dataset properties.
print("Description: {}".format(dataset.description))
print("Labels:")
labels = dataset.labels
if labels:
    for label, value in labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")

# View tables in dataset.
print("Tables:")
tables = list(client.list_tables(dataset))  # Make an API request(s).
if tables:
    for table in tables:
        print("\t{}".format(table.table_id))
else:
    print("\tThis dataset does not contain any tables.")

INFORMATION_SCHEMA

INFORMATION_SCHEMA umfasst mehrere Ansichten, über die auf Metadaten von Datasets, Routinen, Tabellen, Ansichten, Jobs, Reservierungen und Streamingdaten zugegriffen werden kann.

Ansicht SCHEMATA

Wenn Sie die Ansicht INFORMATION_SCHEMA.SCHEMATA abfragen, enthalten die Abfrageergebnisse eine Zeile für jedes Dataset in einem Projekt, auf das der aktuelle Nutzer Zugriff hat.

Die Ansicht INFORMATION_SCHEMA.SCHEMATA hat das folgende Schema:

Spaltenname Datentyp Wert
CATALOG_NAME STRING Der Name des Projekts, zu dem das Dataset gehört
SCHEMA_NAME STRING Der Name des Datasets, auch als datasetId bezeichnet
SCHEMA_OWNER STRING Der Wert ist immer NULL
CREATION_TIME TIMESTAMP Der Erstellungszeitpunkt des Datasets
LAST_MODIFIED_TIME TIMESTAMP Der Zeitpunkt der letzten Änderung des Datasets
LOCATION STRING Der geografische Standort des Datasets

Beispiele

Im folgenden Beispiel werden alle Spalten der Ansicht INFORMATION_SCHEMA.SCHEMATA mit Ausnahme von schema_owner abgerufen. Diese Spalte ist für eine zukünftige Verwendung reserviert. Die zurückgegebenen Metadaten gelten für alle Datasets im Standardprojekt myproject.

Wenn Sie die Abfrage für ein anderes Projekt als Ihr Standardprojekt ausführen möchten, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: `project_id`.INFORMATION_SCHEMA.view; beispielsweise `myproject`.INFORMATION_SCHEMA.SCHEMATA.

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(schema_owner)
    FROM
     INFORMATION_SCHEMA.SCHEMATA
    
  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(schema_owner)
 FROM
   INFORMATION_SCHEMA.SCHEMATA'

Die Ergebnisse sollten so aussehen:

  +----------------+---------------+---------------------+---------------------+-----------------+
  |  catalog_name  |  schema_name  |    creation_time    | last_modified_time  |    location     |
  +----------------+---------------+---------------------+---------------------+-----------------+
  | myproject      | mydataset1    | 2018-11-07 19:50:24 | 2018-11-07 19:50:24 | US              |
  | myproject      | mydataset2    | 2018-07-16 04:24:22 | 2018-07-16 04:24:22 | US              |
  | myproject      | mydataset3    | 2018-02-07 21:08:45 | 2018-05-01 23:32:53 | asia-northeast1 |
  +----------------+---------------+---------------------+---------------------+-----------------+
  

Ansicht SCHEMATA_OPTIONS

Wenn Sie die Ansicht INFORMATION_SCHEMA.SCHEMATA_OPTIONS abfragen, wird im Ergebnis jede Option jedes Datasets in einem Projekt in einer eigenen Zeile dargestellt.

Die Ansicht INFORMATION_SCHEMA.SCHEMATA_OPTIONS hat das folgende Schema:

Spaltenname Datentyp Wert
CATALOG_NAME STRING Der Name des Projekts, zu dem das Dataset gehört
SCHEMA_NAME STRING Der Name des Datasets, auch als datasetId bezeichnet
OPTION_NAME STRING Ein Namenswert der Optionstabelle
OPTION_TYPE STRING Ein Datentypwert der Optionstabelle
OPTION_VALUE STRING Eine Wertoption der Optionstabelle

Optionstabelle
OPTION_NAME OPTION_TYPE OPTION_VALUE
default_table_expiration_days FLOAT64 Die Standardlebensdauer aller Tabellen im Dataset in Tagen
friendly_name STRING Der beschreibende Name des Datasets
description STRING Eine Beschreibung des Datasets
labels ARRAY<STRUCT<STRING, STRING>> Ein STRUCT-Array, das die Labels des Datasets darstellt

Beispiele

Beispiel 1:

Im folgenden Beispiel werden die Standardablaufzeiten für alle Datasets in Ihrem Standardprojekt (myproject) durch Abfragen der Ansicht INFORMATION_SCHEMA.SCHEMATA_OPTIONS abgerufen.

Wenn Sie die Abfrage für ein anderes Projekt als Ihr Standardprojekt ausführen möchten, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: `project_id`.INFORMATION_SCHEMA.view; beispielsweise `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS.

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
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="default_table_expiration_days"
    
  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
   *
 FROM
   INFORMATION_SCHEMA.SCHEMATA_OPTIONS
 WHERE
   option_name="default_table_expiration_days"'

Die Ergebnisse sollten so aussehen:

  +----------------+---------------+-------------------------------+-------------+---------------------+
  |  catalog_name  |  schema_name  |          option_name          | option_type |    option_value     |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  | myproject      | mydataset3    | default_table_expiration_days | FLOAT64     | 0.08333333333333333 |
  | myproject      | mydataset2    | default_table_expiration_days | FLOAT64     | 90.0                |
  | myproject      | mydataset1    | default_table_expiration_days | FLOAT64     | 30.0                |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  

Beispiel 2:

Im folgenden Beispiel werden die Labels für alle Datasets in Ihrem Standardprojekt (myproject) durch Abfragen der Ansicht INFORMATION_SCHEMA.SCHEMATA_OPTIONS abgerufen.

Wenn Sie die Abfrage für ein anderes Projekt als Ihr Standardprojekt ausführen möchten, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: `project_id`.INFORMATION_SCHEMA.view; beispielsweise `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS.

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
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="labels"
    
  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
   *
 FROM
   INFORMATION_SCHEMA.SCHEMATA_OPTIONS
 WHERE
   option_name="labels"'

Die Ergebnisse sollten in etwa so aussehen:

  +----------------+---------------+-------------+---------------------------------+------------------------+
  |  catalog_name  |  schema_name  | option_name |          option_type            |      option_value      |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  | myproject      | mydataset1    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  | myproject      | mydataset2    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  

Weitere Informationen