Externe Cloud Storage-Tabellen erstellen

BigQuery unterstützt die Abfrage von Cloud Storage-Daten in den folgenden Formaten:

  • Kommagetrennte Werte (CSV)
  • JSON (durch Zeilenumbruch getrennt)
  • Avro
  • ORC
  • Parquet
  • Datastore-Exporte
  • Firestore-Exporte

BigQuery unterstützt die Abfrage von Cloud Storage-Daten aus den folgenden Speicherklassen:

  • Standard
  • Nearline
  • Coldline
  • Archivieren

Zum Abfragen einer externen Cloud Storage-Tabelle benötigen Sie Berechtigungen sowohl für die externe Tabelle als auch für die Cloud Storage-Dateien. Wir empfehlen, wenn möglich stattdessen eine BigLake-Tabelle zu verwenden. BigLake-Tabellen bieten Zugriffsdelegation, sodass Sie nur Berechtigungen für die BigLake-Tabelle benötigen, um die Cloud Storage-Daten abzufragen.

Beachten Sie den Standort Ihres Datasets und Ihres Cloud Storage-Buckets bei der Abfrage von in Cloud Storage gespeicherten Daten.

Hinweis

Erteilen Sie IAM-Rollen (Identity and Access Management), die Nutzern die erforderlichen Berechtigungen zum Ausführen der einzelnen Aufgaben in diesem Dokument geben. Die Berechtigungen, die zum Ausführen einer Aufgabe erforderlich sind (sofern zutreffend), werden im Abschnitt "Erforderliche Berechtigungen" der Aufgabe aufgelistet.

Erforderliche Rollen

Zum Erstellen einer externen Tabelle benötigen Sie die IAM-Berechtigung (BigQuery Identity and Access Management) bigquery.tables.create.

Jede der folgenden vordefinierten Rollen für das Identity and Access Management enthält diese Berechtigung:

  • BigQuery Datenmitbearbeiter (roles/bigquery.dataEditor)
  • BigQuery Dateninhaber (roles/bigquery.dataOwner)
  • BigQuery Administrator (roles/bigquery.admin)

Sie benötigen außerdem die folgenden Berechtigungen, um auf den Cloud Storage-Bucket zuzugreifen, der Ihre Daten enthält:

  • storage.buckets.get
  • storage.objects.get
  • storage.objects.list (erforderlich, wenn Sie einen URI-Platzhalter verwenden)

Die vordefinierte Rolle Identity and Access Management des „Cloud Identity Storage-Administrator“ (roles/storage.admin) enthält diese Berechtigungen.

Wenn Sie in keiner dieser Rollen ein Hauptkonto sind, bitten Sie Ihren Administrator, Ihnen Zugriff zu gewähren oder die externe Tabelle für Sie zu erstellen.

Weitere Informationen zu Rollen und Berechtigungen für das Identity and Access Management in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Zugriffsbereiche für Compute Engine-Instanzen

Wenn Sie von einer Compute Engine-Instanz aus eine externe Tabelle abfragen müssen, die mit einer Cloud Storage-Quelle verknüpft ist, muss die Instanz mindestens den Lesezugriff auf Cloud Storage haben (https://www.googleapis.com/auth/devstorage.read_only).

Mit den Bereichen steuern Sie den Zugriff der Compute Engine-Instanz auf Google Cloud-Produkte wie Cloud Storage. Anwendungen, die auf der Instanz ausgeführt werden, rufen die Google Cloud APIs über das mit der Instanz verknüpfte Dienstkonto auf.

Wenn Sie eine Compute Engine-Instanz als Standard-Compute Engine-Dienstkonto einrichten, wird der Instanz standardmäßig eine Reihe von Standardbereichen zugewiesen, einschließlich des Bereichs https://www.googleapis.com/auth/devstorage.read_only.

Wenn Sie die Instanz stattdessen mit einem benutzerdefinierten Dienstkonto einrichten, müssen Sie der Instanz explizit den Bereich https://www.googleapis.com/auth/devstorage.read_only zuweisen.

Wie Sie Bereiche auf eine Compute Engine-Instanz anwenden, erfahren Sie unter Dienstkonto und Zugriffsbereiche für eine Instanz ändern. Weitere Informationen zu Compute Engine-Dienstkonten finden Sie unter Dienstkonten.

Externe Tabellen für nicht partitionierte Daten erstellen

So können Sie eine permanente Tabelle erstellen, die mit der externen Datenquelle verknüpft ist:

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.

  3. Maximieren Sie die Option Aktionen und klicken Sie auf Tabelle erstellen.

  4. Geben Sie im Bereich Quelle die folgenden Details an:

    1. Wählen Sie unter Tabelle erstellen aus die Option Google Cloud Storage aus.

    2. Wählen Sie unter Datei aus GCS-Bucket auswählen oder URI-Muster auswählen einen Bucket und eine Datei aus, die verwendet werden sollen, oder geben Sie den Pfad im Format gs://bucket_name/[folder_name/]file_name ein.

      In der Google Cloud Console können Sie nicht mehrere URIs angeben. Sie können jedoch mehrere Dateien auswählen, indem Sie ein Platzhalterzeichen (*) angeben. Beispiel: gs://mybucket/file_name*. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.

      Der Cloud Storage-Bucket muss sich am selben Standort wie das Dataset befinden, das die von Ihnen erstellte Tabelle enthält.

    3. Wählen Sie bei Dateiformat das Format aus, das zu Ihrer Datei passt.

  5. Geben Sie im Bereich Ziel die folgenden Details an:

    1. Wählen Sie unter Projekt das Projekt aus, in dem die Tabelle erstellt werden soll.

    2. Wählen Sie unter Dataset das Dataset aus, in dem die Tabelle erstellt werden soll.

    3. Geben Sie unter Tabelle den Namen der Tabelle ein, die Sie in BigQuery erstellen.

    4. Wählen Sie als Tabellentyp die Option Externe Tabelle aus.

  6. Im Abschnitt Schema können Sie entweder die automatische Schemaerkennung aktivieren oder ein Schema manuell angeben, wenn Sie eine Quelldatei haben. Wenn Sie keine Quelldatei haben, müssen Sie ein Schema manuell angeben.

    • Klicken Sie auf die Option Automatisch erkennen, um die automatische Schemaerkennung zu aktivieren.

    • Wenn Sie ein Schema manuell angeben möchten, klicken Sie das Kästchen Automatisch erkennen nicht an. Klicken Sie auf Als Text bearbeiten und geben Sie das Tabellenschema als JSON-Array ein.

  7. Wenn Sie Zeilen mit zusätzlichen Spaltenwerten Zeilen ignorieren möchten, die nicht mit dem Schema übereinstimmen, maximieren Sie den Abschnitt Erweiterte Optionen und wählen Sie Unbekannte Werte aus.

  8. Klicken Sie auf Tabelle erstellen.

Nachdem die permanente Tabelle erstellt wurde, können Sie die Tabelle wie eine native BigQuery-Tabelle abfragen. Nach Abschluss der Abfrage können Sie die Ergebnisse als CSV- oder JSON-Dateien exportieren oder als Tabelle bzw. in Google Sheets speichern.

SQL

Sie können eine permanente externe Tabelle erstellen, indem Sie die CREATE EXTERNAL TABLEDDL-Anweisung ausführen. Sie können das Schema explizit angeben oder die automatische Schemaerkennung verwenden, um das Schema aus den externen Daten abzuleiten.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
      OPTIONS (
        format ="TABLE_FORMAT",
        uris = ['BUCKET_PATH'[,...]]
        );
    

    Dabei gilt:

    • PROJECT_ID: der Name Ihres Projekts, in dem Sie die Tabelle erstellen möchten, z. B. myproject
    • DATASET: der Name des BigQuery-Datasets, in dem Sie die Tabelle erstellen möchten, z. B. mydataset
    • EXTERNAL_TABLE_NAME: der Name der Tabelle, die Sie erstellen möchten, z. B. mytable
    • TABLE_FORMAT: das Format der Tabelle, die Sie erstellen möchten, z. B. PARQUET
    • BUCKET_PATH: der Pfad zum Cloud Storage-Bucket, der die Daten für die externe Tabelle im Format ['gs://bucket_name/[folder_name/]file_name'] enthält.

      Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im Pfad ein Sternchenzeichen (*) angeben. Beispiel: ['gs://mybucket/file_name*']. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.

      Sie können mehrere Buckets für die Option uris angeben, indem Sie mehrere Pfade angeben.

      Die folgenden Beispiele zeigen gültige uris-Werte:

      • ['gs://bucket/path1/myfile.csv']
      • ['gs://bucket/path1/*.csv']
      • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

      Wenn Sie uris-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.

      Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Beispiele

Im folgenden Beispiel wird die automatische Schemaerkennung verwendet, um eine externe Tabelle namens sales zu erstellen, die mit einer in Cloud Storage gespeicherten CSV-Datei verknüpft ist:

CREATE OR REPLACE EXTERNAL TABLE mydataset.sales
  OPTIONS (
  format = 'CSV',
  uris = ['gs://mybucket/sales.csv']);

Im nächsten Beispiel wird ein Schema explizit angegeben und die erste Zeile der CSV-Datei wird übersprungen:

CREATE OR REPLACE EXTERNAL TABLE mydataset.sales (
  Region STRING,
  Quarter STRING,
  Total_Sales INT64
) OPTIONS (
    format = 'CSV',
    uris = ['gs://mybucket/sales.csv'],
    skip_leading_rows = 1);

bq

Verwenden Sie zum Erstellen einer externen Tabelle den Befehl bq mk mit dem --external_table_definition-Flag. Dieses Flag enthält entweder einen Pfad zu einer Tabellendefinitionsdatei oder eine Inline-Tabellendefinition.

Option 1: Tabellendefinitionsdatei

Verwenden Sie den Befehl bq mkdef, um eine Tabellendefinitionsdatei zu erstellen, und übergeben Sie dann den Dateipfad an den bq mk-Befehl so:

bq mkdef --source_format=SOURCE_FORMAT \
  BUCKET_PATH > DEFINITION_FILE

bq mk --table \
  --external_table_definition=DEFINITION_FILE \
  DATASET_NAME.TABLE_NAME \
  SCHEMA

Dabei gilt:

  • SOURCE_FORMAT: das Format der externen Datenquelle Beispiel: CSV.
  • BUCKET_PATH: der Pfad zum Cloud Storage-Bucket, der die Daten für die Tabelle im Format gs://bucket_name/[folder_name/]file_pattern enthält.

    Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im file_pattern ein Sternchenzeichen (*) angeben. Beispiel: gs://mybucket/file00*.parquet Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.

    Sie können mehrere Buckets für die Option uris angeben, indem Sie mehrere Pfade angeben.

    Die folgenden Beispiele zeigen gültige uris-Werte:

    • gs://bucket/path1/myfile.csv
    • gs://bucket/path1/*.parquet
    • gs://bucket/path1/file1*, gs://bucket1/path1/*

    Wenn Sie uris-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.

    Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.

  • DEFINITION_FILE: der Pfad zur Tabellendefinitionsdatei auf Ihrem lokalen Rechner.

  • DATASET_NAME: der Name des Datasets, das die Tabelle enthält

  • TABLE_NAME: Der Name der Tabelle, die Sie erstellen.

  • SCHEMA: gibt einen Pfad zu einer JSON-Schemadatei oder das Schema im Format field:data_type,field:data_type,... an.

Beispiel:

bq mkdef --source_format=CSV gs://mybucket/sales.csv > mytable_def

bq mk --table --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

Um die automatische Schemaerkennung zu verwenden, geben Sie im mkdef-Befehl das --autodetect=true-Flag an und lassen das Schema weg:

bq mkdef --source_format=CSV --autodetect=true \
  gs://mybucket/sales.csv > mytable_def

bq mk --table --external_table_definition=mytable_def \
  mydataset.mytable

Option 2: Inline-Tabellendefinition

Anstatt eine Tabellendefinitionsdatei zu erstellen, können Sie die Tabellendefinition direkt an den bq mk-Befehl übergeben:

bq mk --table \
  --external_table_definition=@SOURCE_FORMAT=BUCKET_PATH \
  DATASET_NAME.TABLE_NAME \
  SCHEMA

Dabei gilt:

  • SOURCE_FORMAT: das Format der externen Datenquelle

    Beispiel: CSV.

  • BUCKET_PATH: der Pfad zum Cloud Storage-Bucket, der die Daten für die Tabelle im Format gs://bucket_name/[folder_name/]file_pattern enthält.

    Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im file_pattern ein Sternchenzeichen (*) angeben. Beispiel: gs://mybucket/file00*.parquet Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.

    Sie können mehrere Buckets für die Option uris angeben, indem Sie mehrere Pfade angeben.

    Die folgenden Beispiele zeigen gültige uris-Werte:

    • gs://bucket/path1/myfile.csv
    • gs://bucket/path1/*.parquet
    • gs://bucket/path1/file1*, gs://bucket1/path1/*

    Wenn Sie uris-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.

    Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.

  • DATASET_NAME: der Name des Datasets, das die Tabelle enthält.

  • TABLE_NAME: Der Name der Tabelle, die Sie erstellen.

  • SCHEMA: gibt einen Pfad zu einer JSON-Schemadatei oder das Schema im Format field:data_type,field:data_type,... an. Wenn Sie die automatische Schemaerkennung verwenden möchten, lassen Sie dieses Argument weg.

Beispiel:

bq mkdef --source_format=CSV gs://mybucket/sales.csv > mytable_def
bq mk --table --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

API

Rufen Sie die API-Methode tables.insert auf und erstellen Sie eine ExternalDataConfiguration in der Ressource Table, die Sie übergeben.

Geben Sie das Attribut schema an oder setzen Sie das Attribut autodetect auf true, um die automatische Schemaerkennung für unterstützte Datenquellen zu aktivieren.

Java

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.CsvOptions;
import com.google.cloud.bigquery.ExternalTableDefinition;
import com.google.cloud.bigquery.Field;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.Schema;
import com.google.cloud.bigquery.StandardSQLTypeName;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;
import com.google.cloud.bigquery.TableResult;

// Sample to queries an external data source using a permanent table
public class QueryExternalGCSPerm {

  public static void runQueryExternalGCSPerm() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.csv";
    Schema schema =
        Schema.of(
            Field.of("name", StandardSQLTypeName.STRING),
            Field.of("post_abbr", StandardSQLTypeName.STRING));
    String query =
        String.format("SELECT * FROM %s.%s WHERE name LIKE 'W%%'", datasetName, tableName);
    queryExternalGCSPerm(datasetName, tableName, sourceUri, schema, query);
  }

  public static void queryExternalGCSPerm(
      String datasetName, String tableName, String sourceUri, Schema schema, String query) {
    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();

      // Skip header row in the file.
      CsvOptions csvOptions = CsvOptions.newBuilder().setSkipLeadingRows(1).build();

      TableId tableId = TableId.of(datasetName, tableName);
      // Create a permanent table linked to the GCS file
      ExternalTableDefinition externalTable =
          ExternalTableDefinition.newBuilder(sourceUri, csvOptions).setSchema(schema).build();
      bigquery.create(TableInfo.of(tableId, externalTable));

      // Example query to find states starting with 'W'
      TableResult results = bigquery.query(QueryJobConfiguration.of(query));

      results
          .iterateAll()
          .forEach(row -> row.forEach(val -> System.out.printf("%s,", val.toString())));

      System.out.println("Query on external permanent table performed successfully.");
    } catch (BigQueryException | InterruptedException e) {
      System.out.println("Query not performed \n" + e.toString());
    }
  }
}

Node.js

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

async function queryExternalGCSPerm() {
  // Queries an external data source using a permanent table

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

  // Configure the external data source
  const dataConfig = {
    sourceFormat: 'CSV',
    sourceUris: ['gs://cloud-samples-data/bigquery/us-states/us-states.csv'],
    // Optionally skip header row
    csvOptions: {skipLeadingRows: 1},
  };

  // For all options, see https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
  const options = {
    schema: schema,
    externalDataConfiguration: dataConfig,
  };

  // Create an external table linked to the GCS file
  const [table] = await bigquery
    .dataset(datasetId)
    .createTable(tableId, options);

  console.log(`Table ${table.id} created.`);

  // Example query to find states starting with 'W'
  const query = `SELECT post_abbr
  FROM \`${datasetId}.${tableId}\`
  WHERE name LIKE 'W%'`;

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(query);
  console.log(`Job ${job.id} started.`);

  // Wait for the query to finish
  const [rows] = await job.getQueryResults();

  // Print the results
  console.log('Rows:');
  console.log(rows);
}

Python

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

from google.cloud import bigquery

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

# TODO(developer): Set table_id to the ID of the table to create.
table_id = "your-project.your_dataset.your_table_name"

# TODO(developer): Set the external source format of your table.
# Note that the set of allowed values for external data sources is
# different than the set used for loading data (see :class:`~google.cloud.bigquery.job.SourceFormat`).
external_source_format = "AVRO"

# TODO(developer): Set the source_uris to point to your data in Google Cloud
source_uris = [
    "gs://cloud-samples-data/bigquery/federated-formats-reference-file-schema/a-twitter.avro",
    "gs://cloud-samples-data/bigquery/federated-formats-reference-file-schema/b-twitter.avro",
    "gs://cloud-samples-data/bigquery/federated-formats-reference-file-schema/c-twitter.avro",
]

# Create ExternalConfig object with external source format
external_config = bigquery.ExternalConfig(external_source_format)
# Set source_uris that point to your data in Google Cloud
external_config.source_uris = source_uris

# TODO(developer) You have the option to set a reference_file_schema_uri, which points to
# a reference file for the table schema
reference_file_schema_uri = "gs://cloud-samples-data/bigquery/federated-formats-reference-file-schema/b-twitter.avro"

external_config.reference_file_schema_uri = reference_file_schema_uri

table = bigquery.Table(table_id)
# Set the external data configuration of the table
table.external_data_configuration = external_config
table = client.create_table(table)  # Make an API request.

print(
    f"Created table with external source format {table.external_data_configuration.source_format}"
)

Externe Tabellen für partitionierte Daten erstellen

Sie können eine externe Tabelle für mit Hive partitionierte Daten erstellen, die sich in Cloud Storage befinden. Nachdem Sie eine extern partitionierte Tabelle erstellt haben, können Sie den Partitionsschlüssel nicht mehr ändern. Sie müssen die Tabelle neu erstellen, um den Partitionierungsschlüssel zu ändern.

Wählen Sie eine der folgenden Optionen aus, um eine externe Tabelle für partitionierte Hive-Daten zu erstellen:

Console

  1. Wechseln Sie in der Google Cloud Console zu BigQuery.

    BigQuery aufrufen

  2. Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
  3. Klicken Sie auf Aktionen ansehen und dann auf Tabelle erstellen. Der Bereich Tabelle erstellen wird geöffnet.
  4. Geben Sie im Bereich Quelle die folgenden Details an:
    1. Wählen Sie unter Tabelle erstellen aus die Option Google Cloud Storage aus.
    2. Geben Sie unter Datei aus Cloud Storage-Bucket auswählen den Pfad zum Cloud Storage-Ordner mithilfe von Platzhaltern ein. Beispiel: my_bucket/my_files* Der Cloud Storage-Bucket muss sich am selben Standort wie das Dataset befinden, das die Tabelle enthält, die Sie erstellen, anhängen oder überschreiben möchten.
    3. Wählen Sie in der Liste Dateiformat den Dateityp aus.
    4. Klicken Sie auf das Kästchen Quelldatenpartitionierung und geben Sie dann für Quell-URI-Präfix auswählen das Cloud Storage-URI-Präfix ein. Beispiel: gs://my_bucket/my_files
    5. Wählen Sie im Bereich Partitionsinferenzmodus eine der folgenden Optionen aus:
      • Typen automatisch ableiten: Legen Sie den Erkennungsmodus des Partitionsschemas auf AUTO fest.
      • Alle Spalten sind Strings: Legen Sie den Modus für die Erkennung des Partitionsschemas auf STRINGS fest.
      • Eigene bereitstellen: Legen Sie den Erkennungsmodus für das Partitionsschema auf CUSTOM fest und geben Sie die Schemainformationen für die Partitionierungsschlüssel manuell ein. Weitere Informationen finden Sie unter Benutzerdefiniertes Partitionierungsschlüsselschema bereitstellen.
    6. Optional: Wenn Sie einen Partitionsfilter für alle Abfragen für diese Tabelle benötigen, klicken Sie das Kästchen Partitionsfilter anfordern an. Der Partitionsfilter, den Sie dadurch obligatorisch machen, kann die Kosten senken und die Leistung verbessern. Weitere Informationen finden Sie unter Prädikatfilter für Partitionsschlüssel in Abfragen erforderlich.
  5. Geben Sie im Bereich Ziel die folgenden Details an:
    1. Wählen Sie unter Projekt das Projekt aus, in dem Sie die Tabelle erstellen möchten.
    2. Wählen Sie bei Dataset das Dataset aus, in dem Sie die Tabelle erstellen möchten.
    3. Geben Sie unter Tabelle den Namen der Tabelle ein, die Sie erstellen möchten.
    4. Wählen Sie als Tabellentyp die Option Externe Tabelle aus.
  6. Geben Sie im Abschnitt Schema die Schemadefinition ein.
  7. Wählen Sie Automatisch erkennen aus, um die automatische Erkennung des Schemas zu aktivieren.
  8. Wenn Sie Zeilen mit zusätzlichen Spaltenwerten ignorieren möchten, die nicht mit dem Schema übereinstimmen, maximieren Sie den Abschnitt Erweiterte Optionen und wählen Sie Unbekannte Werte aus.
  9. Klicken Sie auf Tabelle erstellen.

SQL

Verwenden Sie die DDL-Anweisung CREATE EXTERNAL TABLE.

Das folgende Beispiel verwendet die automatische Erkennung von Hive-Partitionsschlüsseln:

CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
WITH PARTITION COLUMNS
OPTIONS (
format = 'SOURCE_FORMAT',
uris = ['GCS_URIS'],
hive_partition_uri_prefix = 'GCS_URI_SHARED_PREFIX',
require_hive_partition_filter = BOOLEAN);

Dabei gilt:

  • SOURCE_FORMAT ist das Format der externen Datenquelle, z. B. PARQUET
  • GCS_URIS ist der Pfad zum Cloud Storage-Ordner im Platzhalterformat
  • GCS_URI_SHARED_PREFIX ist das Präfix des Quell-URI ohne den Platzhalter
  • BOOLEAN gibt an, ob ein Prädikatfilter zur Zeit der Abfrage erforderlich ist Dieses Flag ist optional. Der Standardwert ist false.

Das folgende Beispiel verwendet benutzerdefinierte Hive-Partitionsschlüssel und -Typen, die in der WITH PARTITION COLUMNS-Klausel aufgelistet werden:

CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
WITH PARTITION COLUMNS (PARTITION_COLUMN_LIST)
OPTIONS (
format = 'SOURCE_FORMAT',
uris = ['GCS_URIS'],
hive_partition_uri_prefix = 'GCS_URI_SHARED_PREFIX',
require_hive_partition_filter = BOOLEAN);

Dabei gilt:

  • PARTITION_COLUMN_LIST ist eine Liste an Spalten, die der Reihenfolge im Pfad des Cloud Storage-Ordners folgen und folgendes Format haben:
KEY1 TYPE1, KEY2 TYPE2

Im folgenden Beispiel wird eine extern partitionierte Tabelle erstellt. Mit der automatischen Schemaerkennung wird sowohl das Dateisystem als auch das Hive-Partitionierungslayout ermittelt. Ist der externe Pfad gs://bucket/path/field_1=first/field_2=1/data.parquet, werden die Partitionsspalten als field_1 (STRING) und field_2 (INT64) erkannt.

CREATE EXTERNAL TABLE dataset.AutoHivePartitionedTable
WITH PARTITION COLUMNS
OPTIONS (
uris = ['gs://bucket/path/*'],
format = 'PARQUET',
hive_partition_uri_prefix = 'gs://bucket/path',
require_hive_partition_filter = false);

Im folgenden Beispiel wird eine extern partitionierte Tabelle erstellt, indem die Partitionsspalten explizit angegeben werden. In diesem Beispiel wird davon ausgegangen, dass der externe Dateipfad das Muster gs://bucket/path/field_1=first/field_2=1/data.parquet hat.

CREATE EXTERNAL TABLE dataset.CustomHivePartitionedTable
WITH PARTITION COLUMNS (
field_1 STRING, -- column order must match the external path
field_2 INT64)
OPTIONS (
uris = ['gs://bucket/path/*'],
format = 'PARQUET',
hive_partition_uri_prefix = 'gs://bucket/path',
require_hive_partition_filter = false);

bq

Verwenden Sie zuerst den Befehl bq mkdef, um eine Tabellendefinitionsdatei zu erstellen:

bq mkdef \
--source_format=SOURCE_FORMAT \
--hive_partitioning_mode=PARTITIONING_MODE \
--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX \
--require_hive_partition_filter=BOOLEAN \
 GCS_URIS > DEFINITION_FILE

Dabei gilt:

  • SOURCE_FORMAT: das Format der externen Datenquelle. Beispiel: CSV
  • PARTITIONING_MODE: der Hive-Partitionierungsmodus. Verwenden Sie einen der folgenden Werte:
    • AUTO: Schlüsselnamen und -typen automatisch erkennen.
    • STRINGS: Schlüsselnamen automatisch in Strings konvertieren.
    • CUSTOM: Schlüsselschema im Präfix des Quell-URI codieren.
  • GCS_URI_SHARED_PREFIX: das Präfix des Quell-URI.
  • BOOLEAN gibt an, ob ein Prädikatfilter zum Zeitpunkt der Abfrage erforderlich ist. Dieses Flag ist optional. Der Standardwert ist false.
  • GCS_URIS: der Pfad zum Cloud Storage-Ordner im Platzhalterformat.
  • DEFINITION_FILE: der Pfad zur Tabellendefinitionsdatei auf Ihrem lokalen Rechner.

Wenn PARTITIONING_MODE den Wert CUSTOM hat, fügen Sie das Partitionsschlüsselschema im Präfix des Quell-URI im folgenden Format ein:

--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...

Verwenden Sie nach dem Erstellen der Tabellendefinitionsdatei den Befehl bq mk, um die externe Tabelle zu erstellen:

bq mk --external_table_definition=DEFINITION_FILE \
DATASET_NAME.TABLE_NAME \
SCHEMA

Dabei gilt:

  • DEFINITION_FILE: der Pfad zur Tabellendefinitionsdatei.
  • DATASET_NAME: der Name des Datasets, das die Tabelle enthält
  • TABLE_NAME: Der Name der Tabelle, die Sie erstellen.
  • SCHEMA: gibt einen Pfad zu einer JSON-Schemadatei oder das Schema im Format field:data_type,field:data_type,... an. Wenn Sie die automatische Schemaerkennung verwenden möchten, lassen Sie dieses Argument weg.

Beispiele

Im folgenden Beispiel wird der Hive-Partitionierungsmodus AUTO verwendet:

bq mkdef --source_format=CSV \
  --hive_partitioning_mode=AUTO \
  --hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
  gs://myBucket/myTable/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

Im folgenden Beispiel wird der Hive-Partitionierungsmodus STRING verwendet:

bq mkdef --source_format=CSV \
  --hive_partitioning_mode=STRING \
  --hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
  gs://myBucket/myTable/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

Im folgenden Beispiel wird der Hive-Partitionierungsmodus CUSTOM verwendet:

bq mkdef --source_format=CSV \
  --hive_partitioning_mode=CUSTOM \
  --hive_partitioning_source_uri_prefix=gs://myBucket/myTable/{dt:DATE}/{val:STRING} \
  gs://myBucket/myTable/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

API

Wenn Sie die Hive-Partitionierung mithilfe der BigQuery API festlegen möchten, fügen Sie einhivePartitioningOptions-Objekt in derExternalDataConfiguration ein, wenn Sie dieTabellendefinitionsdatei erstellen.

Wenn Sie das Feld hivePartitioningOptions.mode auf CUSTOM festlegen, müssen Sie das Schema für den Partitionierungsschlüssel im Feld hivePartitioningOptions.sourceUriPrefix folgendermaßen codieren: gs://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...

Wenn Sie die Verwendung eines Prädikatfilters zum Zeitpunkt der Abfrage erzwingen möchten, legen Sie das Feld hivePartitioningOptions.requirePartitionFilter auf true fest.

Java

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.ExternalTableDefinition;
import com.google.cloud.bigquery.FormatOptions;
import com.google.cloud.bigquery.HivePartitioningOptions;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;

// Sample to create external table using hive partitioning
public class SetHivePartitioningOptions {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String sourceUri = "gs://cloud-samples-data/bigquery/hive-partitioning-samples/customlayout/*";
    String sourceUriPrefix =
        "gs://cloud-samples-data/bigquery/hive-partitioning-samples/customlayout/{pkey:STRING}/";
    setHivePartitioningOptions(datasetName, tableName, sourceUriPrefix, sourceUri);
  }

  public static void setHivePartitioningOptions(
      String datasetName, String tableName, String sourceUriPrefix, String sourceUri) {
    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();

      // Configuring partitioning options
      HivePartitioningOptions hivePartitioningOptions =
          HivePartitioningOptions.newBuilder()
              .setMode("CUSTOM")
              .setRequirePartitionFilter(true)
              .setSourceUriPrefix(sourceUriPrefix)
              .build();

      TableId tableId = TableId.of(datasetName, tableName);
      ExternalTableDefinition customTable =
          ExternalTableDefinition.newBuilder(sourceUri, FormatOptions.parquet())
              .setAutodetect(true)
              .setHivePartitioningOptions(hivePartitioningOptions)
              .build();
      bigquery.create(TableInfo.of(tableId, customTable));
      System.out.println("External table created using hivepartitioningoptions");
    } catch (BigQueryException e) {
      System.out.println("External table was not created" + e.toString());
    }
  }
}

Externe Tabellen abfragen

Weitere Informationen finden Sie unter Cloud Storage-Daten in externen Tabellen abfragen.

Externe Tabellen auf BigLake aktualisieren

Sie können ein Upgrade auf Cloud Storage auf BigLake-Tabellen ausführen, wenn Sie die externe Tabelle einer Verbindung zuordnen. Wenn Sie Metadaten-Caching mit der BigLake-Tabelle verwenden möchten, können Sie gleichzeitig Einstellungen dafür festlegen. Tabellendetails wie das Quellformat und den Quell-URI finden Sie unter Tabelleninformationen abrufen.

Wählen Sie eine der folgenden Optionen, um eine externe Tabelle auf eine BigLake-Tabelle zu aktualisieren:

SQL

Verwenden Sie die DDL-Anweisung CREATE OR REPLACE EXTERNAL TABLE, um eine Tabelle zu aktualisieren:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE OR REPLACE EXTERNAL TABLE
      `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
      WITH CONNECTION `REGION.CONNECTION_ID`
      OPTIONS(
        format ="TABLE_FORMAT",
        uris = ['BUCKET_PATH'],
        max_staleness = STALENESS_INTERVAL,
        metadata_cache_mode = 'CACHE_MODE'
        );
    

    Dabei gilt:

    • PROJECT_ID: der Name des Projekts, das die Verbindung enthält
    • DATASET: der Name des Datasets, das die Tabelle enthält
    • EXTERNAL_TABLE_NAME: der Name der Tabelle
    • REGION: die Region, die die Verbindung enthält
    • CONNECTION_ID: der Name der zu verwendenden Verbindung
    • TABLE_FORMAT: das von der Tabelle verwendete Format

      Dies kann beim Aktualisieren der Tabelle nicht geändert werden.

    • BUCKET_PATH: der Pfad zum Cloud Storage-Bucket, der die Daten für die externe Tabelle im Format ['gs://bucket_name/[folder_name/]file_name'] enthält.

      Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im Pfad ein Sternchenzeichen (*) angeben. Beispiel: ['gs://mybucket/file_name*']. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.

      Sie können mehrere Buckets für die Option uris angeben, indem Sie mehrere Pfade angeben.

      Die folgenden Beispiele zeigen gültige uris-Werte:

      • ['gs://bucket/path1/myfile.csv']
      • ['gs://bucket/path1/*.csv']
      • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

      Wenn Sie uris-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.

      Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.

    • STALENESS_INTERVAL: Gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit der Vorgang sie verwenden kann.

      Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.

      Geben Sie 0 an, um das Caching von Metadaten zu deaktivieren. Das ist die Standardeinstellung.

      Geben Sie zum Aktivieren des Metadaten-Cachings für das Intervallliteral einen Wert zwischen 30 Minuten und 7 Tagen an. Beispiel: Geben Sie INTERVAL 4 HOUR für ein Veralterungsintervall von vier Stunden an. Mit diesem Wert verwenden Vorgänge im Zusammenhang mit der Tabelle im Cache gespeicherte Metadaten, wenn sie innerhalb der letzten vier Stunden aktualisiert wurden. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.

    • CACHE_MODE: gibt an, ob der Metadaten-Cache automatisch oder manuell aktualisiert wird.

      Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.

      Legen Sie AUTOMATIC fest, damit der Metadaten-Cache in einem systemdefinierten Intervall aktualisiert wird, normalerweise zwischen 30 und 60 Minuten.

      Legen Sie MANUAL fest, wenn Sie den Metadaten-Cache nach einem von Ihnen bestimmten Zeitplan aktualisieren möchten. In diesem Fall können Sie den Systemvorgang BQ.REFRESH_EXTERNAL_METADATA_CACHE aufrufen, um den Cache zu aktualisieren.

      Sie müssen CACHE_MODE festlegen, wenn STALENESS_INTERVAL auf einen Wert größer als 0 festgelegt ist.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Verwenden Sie die Befehle bq mkdef und bq update, um eine Tabelle zu aktualisieren:

  1. Generieren Sie eine externe Tabellendefinition, in der die Aspekte der zu ändernden Tabelle beschrieben werden:

    bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \
    --source_format=TABLE_FORMAT \
    --metadata_cache_mode=CACHE_MODE \
    "BUCKET_PATH" > /tmp/DEFINITION_FILE
    

    Dabei gilt:

    • PROJECT_ID: der Name des Projekts, das die Verbindung enthält
    • REGION: die Region, die die Verbindung enthält
    • CONNECTION_ID: Name der zu verwendenden Verbindung
    • TABLE_FORMAT: das von der Tabelle verwendete Format Dies kann beim Aktualisieren der Tabelle nicht geändert werden.
    • CACHE_MODE: gibt an, ob der Metadaten-Cache automatisch oder manuell aktualisiert wird. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.

      Legen Sie AUTOMATIC fest, damit der Metadaten-Cache in einem systemdefinierten Intervall aktualisiert wird, normalerweise zwischen 30 und 60 Minuten.

      Legen Sie MANUAL fest, wenn Sie den Metadaten-Cache nach einem von Ihnen bestimmten Zeitplan aktualisieren möchten. In diesem Fall können Sie den SystemvorgangBQ.REFRESH_EXTERNAL_METADATA_CACHE aufrufen, um den Cache zu aktualisieren.

      Sie müssen CACHE_MODE festlegen, wenn STALENESS_INTERVAL auf einen Wert größer als 0 festgelegt ist.

    • BUCKET_PATH: der Pfad zum Cloud Storage-Bucket, der die Daten für die externe Tabelle im Format gs://bucket_name/[folder_name/]file_name enthält.

      Sie können die aus dem Bucket ausgewählten Dateien einschränken, indem Sie im Pfad ein Sternchenzeichen (*) angeben. Beispiel: gs://mybucket/file_name*. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.

      Sie können mehrere Buckets für die Option uris angeben, indem Sie mehrere Pfade angeben.

      Die folgenden Beispiele zeigen gültige uris-Werte:

      • gs://bucket/path1/myfile.csv
      • gs://bucket/path1/*.csv
      • gs://bucket/path1/*,gs://bucket/path2/file00*

      Wenn Sie uris-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.

      Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.

    • DEFINITION_FILE: der Name der Tabellendefinitionsdatei, die Sie erstellen.

  2. Aktualisieren Sie die Tabelle mit der neuen externen Tabellendefinition:

    bq update --max_staleness=STALENESS_INTERVAL \
    --external_table_definition=/tmp/DEFINITION_FILE \
    PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME
    

    Ersetzen Sie Folgendes:

    • STALENESS_INTERVAL: Gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit der Vorgang sie verwenden kann. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.

      Geben Sie 0 an, um das Caching von Metadaten zu deaktivieren. Das ist die Standardeinstellung.

      Geben Sie zum Aktivieren des Metadaten-Cachings einen Intervallwert zwischen 30 Minuten und 7 Tagen unter Verwendung des in der INTERVAL-Datentypdokumentation beschriebenen Formats Y-M D H:M:S. Beispiel: Geben Sie 0-0 0 4:0:0 für ein Veralterungsintervall von vier Stunden an. Mit diesem Wert verwenden Vorgänge im Zusammenhang mit der Tabelle im Cache gespeicherte Metadaten, wenn sie innerhalb der letzten vier Stunden aktualisiert wurden. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.

    • DEFINITION_FILE: der Name der Tabellendefinitionsdatei, die Sie erstellt oder aktualisiert haben.

    • PROJECT_ID: der Name des Projekts, das die Verbindung enthält

    • DATASET: der Name des Datasets, das die Tabelle enthält

    • EXTERNAL_TABLE_NAME: der Name der Tabelle

Cloud Storage-Ressourcenpfad

Wenn Sie eine externe Tabelle basierend auf einer Cloud Storage-Datenquelle erstellen, müssen Sie den Pfad zu den Daten angeben.

Der Cloud Storage-Ressourcenpfad enthält den Bucket-Namen und das Objekt (Dateiname). Wenn der Cloud Storage-Bucket beispielsweise den Namen mybucket hat und die Datendatei den Namen myfile.csv hat, lautet der Bucket-URI gs://mybucket/myfile.csv.

BigQuery unterstützt keine Cloud Storage-Ressourcenpfade, die nach dem anfänglichen doppelten Schrägstrich weitere, aufeinanderfolgende Schrägstriche enthalten. Cloud Storage-Objektnamen können mehrere aufeinanderfolgende Schrägstriche ("/") enthalten. BigQuery wandelt diese jedoch in einen einzelnen Schrägstrich um. Der folgende Ressourcenpfad ist beispielsweise in Cloud Storage gültig, funktioniert aber nicht in BigQuery: gs://bucket/my//object//name

So rufen Sie den Cloud Storage-Ressourcenpfad ab:

  1. Öffnen Sie die Cloud Storage-Konsole.

    Cloud Storage-Konsole

  2. Gehen Sie zum Speicherort des Objekts (Datei), das die Quelldaten enthält.

  3. Klicken Sie auf den Namen des gewünschten Objekts.

    Die Seite Objektdetails wird geöffnet.

  4. Kopieren Sie den Wert im Feld gsutil URI, der mit gs:// beginnt.

Unterstützung von Platzhaltern für Cloud Storage-URIs

Wenn Ihre Daten auf mehrere Dateien verteilt sind, können Sie mehrere Dateien mit einem Sternchenplatzhalter (*) auswählen. Die Verwendung des Sternchenplatzhalters muss folgenden Regeln entsprechen:

  • Das Sternchen kann innerhalb oder am Ende des Objektnamens stehen.
  • Die Verwendung mehrerer Sternchen wird nicht unterstützt. Beispiel: Der Pfad gs://mybucket/fed-*/temp/*.csv ist ungültig.
  • Die Verwendung eines Sternchens mit dem Bucket-Namen wird nicht unterstützt.

Beispiele:

  • Im folgenden Beispiel wird gezeigt, wie Sie alle Dateien in allen Ordnern auswählen, die mit dem Präfix gs://mybucket/fed-samples/fed-sample beginnen:

    gs://mybucket/fed-samples/fed-sample*
    
  • Im folgenden Beispiel wird gezeigt, wie nur Dateien mit der .csv-Erweiterung im Ordner mit dem Namen fed-samples und allen Unterordnern von fed-samples ausgewählt werden:

    gs://mybucket/fed-samples/*.csv
    
  • Das folgende Beispiel zeigt, wie Sie Dateien mit dem Benennungsmuster fed-sample*.csv im Ordner fed-samples auswählen. In diesem Beispiel werden keine Dateien in Unterordnern von fed-samples ausgewählt.

    gs://mybucket/fed-samples/fed-sample*.csv
    

Bei der Verwendung des bq-Befehlszeilentools müssen Sie das Sternchen auf einigen Plattformen unter Umständen mit einem Escape-Zeichen versehen.

Sie können keinen Sternchenplatzhalter verwenden, wenn Sie externe Tabellen erstellen, die mit Datastore- oder Firestore-Exporten verknüpft sind.

Beschränkungen

Informationen zu Einschränkungen für externe Tabellen finden Sie unter Einschränkungen für externe Tabellen.

Nächste Schritte