Partitionierte Tabellendaten verwalten

In diesem Dokument wird die Verwaltung von Daten in partitionierten Tabellen in BigQuery beschrieben. Sie haben folgende Möglichkeiten, mit Daten in partitionierten Tabellen zu arbeiten:

  • Daten in eine partitionierte Tabelle laden
  • Daten in partitionierten Tabellen durchsuchen (oder in einer Vorschau anzeigen)
  • Daten in partitionierten Tabellen abfragen
  • Daten in partitionierten Tabellen anfügen oder überschreiben
  • Daten in partitionierten Tabellen mit Anweisungen der Datenbearbeitungssprache bearbeiten
  • Daten in partitionierten Tabellen kopieren
  • Daten in partitionierte Tabellen streamen
  • Daten in partitionierten Tabellen exportieren

Weitere Informationen zum Verwalten von Tabellenschemas finden Sie unter Tabellenschemas ändern.

Daten in eine partitionierte Tabelle laden

Sie können partitionierte Tabellen beim Laden von Daten erstellen oder eine leere partitionierte Tabelle erstellen und die Daten später laden. Beim Laden von Daten in eine partitionierte Tabelle können Sie die automatische Schemaerkennung für unterstützte Datenformate verwenden oder das Schema angeben.

Weitere Informationen zum Laden von Daten finden Sie in der Dokumentation zum Format und Speicherort Ihrer Quelldaten:

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.Field;
import com.google.cloud.bigquery.FormatOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.LoadJobConfiguration;
import com.google.cloud.bigquery.Schema;
import com.google.cloud.bigquery.StandardSQLTypeName;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TimePartitioning;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.UUID;

public class LoadPartitionedTable {

  public static void runLoadPartitionedTable() throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String sourceUri = "/path/to/file.csv";
    loadPartitionedTable(datasetName, tableName, sourceUri);
  }

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

      Schema schema =
          Schema.of(
              Field.of("name", StandardSQLTypeName.STRING),
              Field.of("post_abbr", StandardSQLTypeName.STRING),
              Field.of("date", StandardSQLTypeName.DATE));

      // Configure time partitioning. For full list of options, see:
      // https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#TimePartitioning
      TimePartitioning partitioning =
          TimePartitioning.newBuilder(TimePartitioning.Type.DAY)
              .setField("date")
              .setExpirationMs(Duration.of(90, ChronoUnit.DAYS).toMillis())
              .build();

      LoadJobConfiguration loadJobConfig =
          LoadJobConfiguration.builder(tableId, sourceUri)
              .setFormatOptions(FormatOptions.csv())
              .setSchema(schema)
              .setTimePartitioning(partitioning)
              .build();

      // Create a job ID so that we can safely retry.
      JobId jobId = JobId.of(UUID.randomUUID().toString());
      Job loadJob = bigquery.create(JobInfo.newBuilder(loadJobConfig).setJobId(jobId).build());

      // Load data from a GCS parquet file into the table
      // Blocks until this load table job completes its execution, either failing or succeeding.
      Job completedJob = loadJob.waitFor();

      // Check for errors
      if (completedJob == null) {
        throw new Exception("Job not executed since it no longer exists.");
      } else if (completedJob.getStatus().getError() != null) {
        // You can also look at queryJob.getStatus().getExecutionErrors() for all
        // errors, not just the latest one.
        throw new Exception(
            "BigQuery was unable to load into the table due to an error: \n"
                + loadJob.getStatus().getError());
      }
      System.out.println("Data successfully loaded into time partitioned table during load job");
    } catch (BigQueryException | InterruptedException e) {
      System.out.println(
          "Data not loaded into time partitioned table during load job \n" + e.toString());
    }
  }
}

In Tabellendaten suchen

So können Sie in partitionierten Tabellendaten suchen:

  • Mit der Cloud Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq head des bq-Befehlszeilentools
  • Durch Aufrufen der API-Methode tabledata.list
  • Mit den Clientbibliotheken

Erforderliche Berechtigungen

Zum Abrufen einer Tabelle müssen Ihnen mindestens Berechtigungen des Typs bigquery.tables.getData erteilt worden sein. Die folgenden vordefinierten Cloud IAM-Rollen enthalten Berechtigungen des Typs bigquery.tables.getData:

  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • 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 hat der Nutzer die Möglichkeit, Daten in Tabellen und Partitionen im Dataset zu durchsuchen.

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

Daten in partitionierten Tabellen durchsuchen und ansehen

So sehen Sie sich Daten in partitionierten Tabellen in verschiedenen Ansichten an:

Console

  1. Klicken Sie in der Cloud Console im Navigationsbereich auf ein Dataset, um dessen Tabellen und Ansichten aufzulisten.

  2. Klicken Sie auf eine partitionierte Tabelle in der Liste.

  3. Klicken Sie auf den Tab Details.

    Tabellendetails

  4. Notieren Sie den Wert in Zeilenanzahl. Unter Umständen benötigen Sie diesen Wert, um den Startpunkt für Ihre Ergebnisse mit der API oder dem bq-Befehlszeilentool zu steuern.

    Zeilenanzahl

  5. Klicken Sie auf den Tab Preview (Vorschau). Ein Beispielsatz mit Daten wird angezeigt: Sie können mit der Cloud Console keine Vorschau für einzelne Partitionen erstellen.

Klassische UI

  1. Klicken Sie im Navigationsbereich der BigQuery-Web-UI auf den blauen Pfeil links neben dem Dataset, um es zu erweitern, oder klicken Sie doppelt auf den Namen des Datasets. Hierdurch werden die Tabellen und Ansichten im Dataset angezeigt.

  2. Klicken Sie auf eine partitionierte Tabelle in der Liste.

  3. Klicken Sie auf Details und notieren Sie den Wert in Zeilenanzahl. Sie benötigen diesen Wert möglicherweise, um den Ausgangspunkt für Ihre Ergebnisse mit der API oder dem bq-Befehlszeilentool zu steuern.

  4. Klicken Sie auf Vorschau. Ein Beispielsatz mit Daten wird angezeigt: Sie können mit der BigQuery-Web-UI keine Vorschau für einzelne Partitionen erstellen.

    Tabellenvorschau

bq

Führen Sie den Befehl bq head mit dem Flag --max_rows aus, um alle Felder in einer bestimmten Anzahl von Tabellenzeilen aufzulisten. Wenn --max_rows nicht angegeben wird, ist die Standardeinstellung 100. Geben Sie eine zu durchsuchende Partition mit dem Partitions-Decorator an, z. B. $20180224.

Da mit dem Befehl bq head kein Abfragejob erstellt wird, werden bq head-Befehle nicht im Abfrageverlauf angezeigt und nicht berechnet.

Wenn Sie eine Teilmenge von Feldern in der Tabelle (einschließlich verschachtelter und wiederholter Felder) ansehen möchten, verwenden Sie das Flag --selected_fields und geben Sie die Felder als durch Kommas getrennte Liste ein.

Mit dem Flag --start_row=integer (oder dem Kürzel -s) können Sie festlegen, wie viele Zeilen übersprungen werden, bevor die Tabellendaten angezeigt werden. Der Standardwert ist 0. Die Anzahl der Zeilen in einer Tabelle können Sie mit dem Befehl bq show zum Abrufen von Tabelleninformationen abfragen.

Wenn sich die Tabelle, die Sie ansehen möchten, in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie dem Befehl die Projekt-ID im folgenden Format hinzu: project_id:dataset.table.

bq head \
--max_rows integer1 \
--start_row integer2 \
--selected_fields "fields" \
project_id:dataset.table$partition

Dabei gilt:

  • integer1 ist die Anzahl der anzuzeigenden Zeilen.
  • integer2 ist die Anzahl der zu überspringenden Zeilen, bevor Daten angezeigt werden.
  • fields ist eine durch Kommas getrennte Liste von Feldern.
  • project_id ist die Projekt-ID.
  • dataset ist der Name des Datasets, das die Tabelle enthält.
  • table ist der Name der zu durchsuchenden Tabelle.
  • $partition ist der Partitions-Decorator.

Beispiele:

Geben Sie den folgenden Befehl ein, um alle Felder in den ersten 10 Zeilen in mydataset.mytable in der Partition "2018-02-24" aufzulisten. mydataset befindet sich in Ihrem Standardprojekt.

bq head --max_rows=10 'mydataset.mytable$20180224'

Geben Sie den folgenden Befehl ein, um alle Felder in den ersten 100 Zeilen in mydataset.mytable in der Partition "2016-09-01" aufzulisten. Die Ausgabe ist im JSON-Format geschrieben. Dieses Beispiel gibt myotherproject als das Projekt an, anstatt das Standardprojekt zu verwenden.

bq head --format=prettyjson 'myotherproject:mydataset.mytable$20160901'

Geben Sie den folgenden Befehl ein, um nur die Felder field1 und field2 in mydataset.mytable in der Partition "2016-09-01" aufzulisten. Der Befehl verwendet das Flag --start_row, um zu Zeile 100 zu springen. mydataset.mytable befindet sich in Ihrem Standardprojekt.

bq head \
--format=prettyjson \
--start_row 100 \
--selected_fields "field1,field2" \
'mydataset.mytable$20160901'

API

Wenn Sie die Daten in einer Tabelle ansehen möchten, rufen Sie tabledata.list auf. Geben Sie im Parameter tableId den Namen der Tabelle und den Partitions-Decorator an.

Mit den folgenden optionalen Parametern können Sie die Ausgabe steuern:

  • maxResults: Maximale Anzahl der Ergebnisse, die zurückgegeben werden sollen
  • selectedFields: Durch Kommas getrennte Liste der Felder, die zurückgegeben werden sollen; wenn nicht angegeben, werden alle Felder zurückgegeben
  • startIndex: Nullbasierter Index der Startzeile, die gelesen werden soll

Die Werte werden in ein JSON-Objekt eingebettet zurückgegeben. Dieses Objekt muss dann wie in der Referenzdokumentation zu tabledata.list beschrieben geparst werden.

Daten in partitionierten Tabellen abfragen

Nachdem Sie Ihre Daten in BigQuery geladen haben, können Sie die Daten in Ihren Tabellen abfragen. BigQuery unterstützt zwei Arten von Abfragen:

BigQuery verwendet standardmäßig interaktive Abfragen. Dies bedeutet, dass die Abfrage so bald wie möglich ausgeführt wird.

Außerdem sind in BigQuery Batch-Abfragen möglich. BigQuery stellt jede Batch-Abfrage in Ihrem Namen in die Warteschlange und startet sie, sobald Ressourcen verfügbar sind – meist innerhalb von ein paar Minuten.

Sie können interaktive Abfragen und Batch-Abfragen mit den folgenden Tools ausführen:

Weitere Informationen finden Sie unter Partitionierte Tabellen abfragen.

Daten in partitionierten Tabellen anfügen oder überschreiben

Sie können Daten in partitionierten Tabellen mit einem Lade- oder Abfragevorgang überschreiben. Zusätzliche Daten können einer vorhandenen partitionierten Tabelle entweder durch einen Load-Append-Vorgang oder durch Anfügen von Abfrageergebnissen angefügt werden. Die Vorgänge in diesem Abschnitt werden für täglich und stündlich partitionierte Tabellen unterstützt.

Erforderliche Berechtigungen

Wenn Sie eine vorhandene Partition überschreiben oder Daten an eine vorhandene Partition anhängen möchten, benötigen Sie mindestens die folgenden Berechtigungen:

  • bigquery.tables.create
  • bigquery.tables.updateData
  • bigquery.jobs.create

Unter Umständen sind zusätzliche Berechtigungen wie bigquery.tables.getData erforderlich, um auf die Daten zuzugreifen, die Sie zum Anhängen oder Überschreiben verwenden.

Die folgenden vordefinierten Cloud IAM-Rollen enthalten die Berechtigungen bigquery.tables.updateData und bigquery.tables.create:

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

Die folgenden vordefinierten Cloud IAM-Rollen enthalten Berechtigungen des Typs bigquery.jobs.create:

  • bigquery.user
  • bigquery.jobUser
  • 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 hat der Nutzer die Möglichkeit, Tabellen und Partitionen im Dataset zu überschreiben und Daten an sie anzuhängen.

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

Ladejob verwenden

Wenn Sie Daten in Partitionen überschreiben oder an Partitionen anfügen möchten, verwenden Sie den Befehl bq load oder rufen Sie die Methode jobs.insert auf und konfigurieren Sie einen load-Job. Die Cloud Console und die klassische BigQuery-Web-UI unterstützen das Anfügen oder Überschreiben von Daten in Partitionen in einem Ladejob nicht.

Achten Sie auf Folgendes, wenn Sie einen Ladejob zum Anfügen oder Überschreiben einer Partition verwenden:

  • Wenn Sie Daten aus Cloud Storage laden, muss sich der Bucket am selben Speicherort wie das BigQuery-Dataset befinden.
  • Die geladenen Daten müssen dem Partitionierungsschema der Tabelle entsprechen. Alle in die Partition geschriebenen Zeilen müssen Werte enthalten, die in das Datum der Partition fallen.
  • Die Partitionen in einer partitionierten Tabelle teilen ein Tabellenschema. Daher wird das Schema nicht angetastet, wenn die Daten in einer Partition ersetzt werden. Stattdessen muss das Schema der neuen Daten mit dem Tabellenschema kompatibel sein. Weitere Informationen zum Aktualisieren von Tabellenschemas im Ladejob finden Sie unter Tabellenschemas verwalten.
  • Wenn Sie Daten an eine nach Aufnahmezeit partitionierte Tabelle anfügen und dabei keinen Partitions-Decorator angeben, wird die aktuelle Partition verwendet.

Um Daten mit einem Ladejob an eine partitionierte Tabelle anzufügen oder Daten zu überschreiben, geben Sie eine Zieltabelle und einen Partition-Decorator an und stellen Sie das Flag für Schreib-Disposition wie folgt ein:

Befehlszeilenoption API-Option Beschreibung
--noreplace WRITE_APPEND Fügt die Daten an eine vorhandene Partition an. Wenn keine Option für die Schreibanordnung angegeben ist, werden die Daten standardmäßig an die Partition angefügt.
--replace WRITE_TRUNCATE Überschreibt eine Partition (formuliert sie neu).

Ein Partitions-Decorator steht für ein bestimmtes Datum und hat folgendes Format:

$YYYYMMDD

Mit dem folgenden Befehl werden beispielsweise in einer partitionierten Tabelle mit dem Namen mydataset.table1 die Daten in der gesamten Partition für das Datum 1. Januar 2016 (20160101) ersetzt. Die JSON-Daten werden aus einem Cloud Storage-Bucket geladen.

bq load \
--replace \
--source_format=NEWLINE_DELIMITED_JSON \
'mydataset.table1$20160101' \
gs://mybucket/myfile.json

Abfragejobs verwenden

Wenn Sie Daten in Partitionen überschreiben oder an Partitionen anfügen möchten, verwenden Sie den Befehl bq query oder rufen Sie die Methode jobs.insert auf und konfigurieren Sie einen query-Job. Die Cloud Console und die klassische BigQuery-Web-UI unterstützen das Anfügen oder Überschreiben von Daten in Partitionen in einem Abfragejob nicht.

Achten Sie auf Folgendes, wenn Sie einen Abfragejob zum Anfügen oder Überschreiben einer Partition verwenden:

  • Die Tabellen, die Sie abfragen, müssen sich am selben Speicherort befinden wie die Tabelle, die Sie anfügen oder überschreiben.
  • Wenn Sie in einer nach Aufnahmezeit partitionierten Tabelle Daten an Partitionen anfügen oder Partitionen überschreiben, können Sie die Legacy-SQL-Syntax oder die Standard-SQL-Syntax verwenden.
  • Wenn Sie in einer partitionierten Tabelle Daten an Partitionen anfügen oder Partitionen überschreiben, müssen Sie die Standard-SQL-Syntax verwenden. Die Legacy-SQL-Syntax wird derzeit nicht unterstützt, um partitionierte Tabellen abzufragen oder Abfrageergebnisse in partitionierte Tabellen zu schreiben.
  • Wenn Sie Abfrageergebnisse in eine bestimmte Partition schreiben, müssen diese Daten dem Partitionierungsschema der Tabelle entsprechen. Alle in die Partition geschriebenen Zeilen müssen Werte enthalten, die in das Datum der Partition fallen.
  • Wenn Sie Daten an eine nach Aufnahmezeit partitionierte Tabelle anfügen und dabei keinen Partitions-Decorator angeben, wird die aktuelle Partition verwendet.

Wenn Sie Abfrageergebnisse an eine Partition anfügen oder eine Partition mit Abfrageergebnissen überschreiben möchten, geben Sie eine Zieltabelle und einen Partitions-Decorator an und legen Sie die Schreibanordnung auf eine der folgenden Optionen fest:

Befehlszeilenoption API-Option Beschreibung
--append_table WRITE_APPEND Fügt die Abfrageergebnisse an eine vorhandene Partition an.
--replace WRITE_TRUNCATE Überschreibt eine Partition mit Abfrageergebnissen (formuliert sie neu).

Mit dem folgenden Befehl werden beispielsweise in table1 die Daten für die Partition vom 1. März 2016 (20160301) anhand von Abfrageergebnissen neu formuliert.

bq query \
--use_legacy_sql=false \
--replace \
--destination_table 'mydataset.table1$20160301' \
'SELECT
  column1,
  column2
FROM
  mydataset.mytable'

Ist die Zieltabelle vorhanden, aber nicht partitioniert, wird der folgende Fehler zurückgegeben: BigQuery error in query operation: Error processing job 'project_id job_id' Incompatible table partitioning specification. Expects partitioning specification interval (type:day), but input partitioning specification is none`.

Weitere Informationen zum Verwenden von Abfrageergebnissen zum Anfügen oder Überschreiben von Daten finden Sie unter Abfrageergebnisse schreiben.

Daten in partitionierten Tabellen mit DML-Anweisungen bearbeiten

Daten in einer partitionierten Tabelle können mit DML-Anweisungen im Standard-SQL-Dialekt bearbeitet werden. Mit DML-Anweisungen können Sie Zeilen im Bulk aktualisieren, einfügen und löschen. Beispiele zur Verwendung von DML mit partitionierten Tabellen finden Sie unter Daten partitionierter Tabellen mithilfe von DML-Anweisungen aktualisieren.

Legacy-SQL unterstützt keine DML-Anweisungen. Um Daten mit einem Legacy-SQL-Dialekt zu aktualisieren oder zu löschen, müssen Sie die partitionierte Tabelle löschen und anschließend mit den neuen Daten neu erstellen. Alternativ können Sie eine Abfrage schreiben, mit der die Daten geändert werden, und die Abfrageergebnisse in eine neue partitionierte Tabelle schreiben.

Daten in partitionierten Tabellen kopieren

So können Sie eine partitionierte Tabelle kopieren:

  • Mit der Cloud Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq cp des bq-Befehlszeilentools
  • Durch Aufrufen der API-Methode jobs.insert und Konfigurieren eines Kopierjobs
  • Mit den Clientbibliotheken

Weitere Informationen zum Kopieren von Tabellen finden Sie unter Tabelle kopieren.

Wenn Sie eine oder mehrere Partitionen kopieren möchten, verwenden Sie entweder den Befehl bq cp des bq-Befehlszeilentools oder rufen Sie die API-Methode jobs.insert auf und konfigurieren einen copy-Job. Das Kopieren von Partitionen wird derzeit nicht von der Cloud Console oder der klassischen BigQuery-Web-UI unterstützt.

Weitere Informationen zum Kopieren von Partitionen finden Sie unter Partitionen kopieren.

Daten in partitionierte Tabellen streamen

Für das Streamen von Daten in eine bestimmte Partition verwenden Sie den Partitions-Decorator beim Angeben der tableId der Tabelle, in die Sie streamen möchten. Mit dem folgenden Befehl wird beispielsweise eine einzelne Zeile in eine Partition für das Datum 1. Januar 2017 ($20170101) in eine partitionierte Tabelle mit dem Namen mydataset.mytable gestreamt:

echo '{"a":1, "b":2}' | bq insert 'mydataset.mytable$20170101'

Dieser Befehl demonstriert die Verwendung des Partitions-Decorators. Der Befehl bq insert dient nur zu Testzwecken. Verwenden Sie die API-Methode tabledata.insertAll, um Daten in BigQuery zu streamen. Weitere Informationen zum Streamen von Daten in Partitionen finden Sie unter Streaming in partitionierte Tabellen.

Beim Streamen in eine täglich partitionierte Tabelle mit einem Partitions-Decorator können Sie in Partitionen mit einem Datum innerhalb der letzten 30 Tage in der Vergangenheit bzw. 5 Tage in der Zukunft streamen, jeweils vom aktuellen Datum an gezählt und basierend auf der aktuellen UTC-Zeit. Wenn Sie in Partitionen mit einem Datum schreiben möchten, das außerhalb dieser zulässigen Grenzen liegt, verwenden Sie Lade- oder Abfragejobs. Bei stündlich partitionierten Tabellen wird das Streaming mit einem Partitions-Decorator nicht unterstützt. Sie müssen stattdessen in die Basistabelle streamen.

Wenn Sie beim Streamen von Daten eine zeitpartitionierte Tabelle als Zieltabelle angeben, hat jede Partition einen Streaming-Zwischenspeicher. Der Streaming-Zwischenspeicher bleibt erhalten, wenn Sie das Attribut writeDisposition auf WRITE_TRUNCATE setzen, um einen Lade-, Abfrage- oder Kopierjob auszuführen, der eine Partition überschreibt. Wenn Sie den Streaming-Zwischenspeicher entfernen möchten, prüfen Sie, ob er leer ist. Dazu rufen Sie tables.get für die Partition auf. Weitere Informationen zum Streaming-Zwischenspeicher finden Sie unter Partitionierungsoptionen vergleichen.

Tabellendaten exportieren

Der Export sämtlicher Daten einer partitionierten Tabelle erfolgt auf die gleiche Weise wie der Datenexport einer nicht partitionierten Tabelle. Weitere Informationen finden Sie unter Tabellendaten exportieren. Für den Export von Daten aus einer einzelnen Partition hängen Sie den Partitions-Decorator $date an den Tabellennamen an. Beispiel: mytable$20160201

Wenn Sie Daten aus den Partitionen __NULL__ und __UNPARTITIONED__ exportieren möchten, hängen Sie die Partitionsnamen an den Tabellennamen an. Beispiel: mytable$__NULL__ bzw. mytable$__UNPARTITIONED__

Sie können Daten in partitionierten Tabellen im CSV-, JSON- oder Avro-Format exportieren. Derzeit müssen Sie Daten in einen Cloud Storage-Bucket exportieren. Der Export auf Ihren lokalen Computer wird nicht unterstützt. Sie können jedoch mit der Cloud Console oder der klassischen BigQuery-Web-UI Abfrageergebnisse herunterladen und speichern.

Weitere Informationen

Mehr zur Arbeit mit partitionierten Tabellen erfahren Sie unter: