Datasets kopieren

Sie können ein Dataset innerhalb einer Region oder von einer Region in eine andere kopieren, ohne Daten in BigQuery extrahieren, verschieben und neu laden zu müssen. Das Dataset können Sie einmalig oder wiederholt nach einem personalisierten Zeitplan kopieren.

Kontingente und Limits

BigQuery-Dataset-Kopien unterliegen den folgenden Kontingenten und Einschränkungen.

Kopierkontingente

Zum Kopieren eines Datasets wird für jede Tabelle im Dataset ein Kopierjob benötigt.

Für BigQuery-Jobs gelten beim Kopieren von Tabellen die folgenden Limits. Die Limits gelten für Jobs, die mit dem bq-Befehlszeilentool, der Cloud Console oder der API-Methode jobs.insert (Typ „copy“) erstellt wurden. Alle Kopierjobs werden auf dieses Limit angerechnet, unabhängig davon, ob sie erfolgreich sind oder fehlschlagen.

Limit Standard Hinweise
Kopierjobs pro Zieltabelle und Tag Siehe Tabellenvorgänge pro Tag.
Kopierjobs pro Tag 100.000 Jobs Ihr Projekt kann bis zu 100.000 Kopierjobs pro Tag ausführen.
Regionenübergreifende Kopierjobs pro Zieltabelle und Tag 100 Jobs Ihr Projekt kann pro Tag bis zu 100 regionenübergreifende Kopierjobs für eine Zieltabelle ausführen.
Regionenübergreifende Kopierjobs pro Tag 2.000 Jobs Ihr Projekt kann bis zu 2.000 regionenübergreifende Kopierjobs pro Tag ausführen.

Für das Kopieren von Datasets gelten die folgenden Limits:

Limit Standard Hinweise
Maximale Anzahl von Tabellen im Quell-Dataset 20.000 Tabellen Ein Quell-Dataset kann bis zu 20.000 Tabellen enthalten.
Maximale Anzahl von Tabellen, die pro Ausführung in ein Ziel-Dataset in derselben Region kopiert werden können 20.000 Tabellen Ihr Projekt kann 20.000 Tabellen pro Ausführung in ein Ziel-Dataset kopieren, das sich in derselben Region befindet.
Maximale Anzahl von Tabellen, die pro Ausführung in ein Ziel-Dataset in einer anderen Region kopiert werden können 1.000 Tabellen Ihr Projekt kann 1.000 Tabellen pro Ausführung in ein Ziel-Dataset kopieren, das sich in einer anderen Region befindet. Wenn Sie beispielsweise eine regionenübergreifende Kopie eines Datasets konfigurieren, das 8.000 Tabellen enthält, erstellt BigQuery Data Transfer Service automatisch acht sequenzielle Ausführungen. Bei der ersten Ausführung werden 1.000 Tabellen kopiert. 24 Stunden später kopiert die zweite Ausführung 1.000 Tabellen. Dieser Vorgang wird fortgesetzt, bis alle Tabellen im Dataset kopiert wurden, bis zum Maximum von 20.000 Tabellen pro Dataset.

Weitere Informationen finden Sie unter Kopierjobs.

Allgemeine Beschränkungen

  • Sie müssen das Ziel-Dataset erstellen, bevor Sie eine Übertragungskonfiguration für die Dataset-Kopie erstellen können.

  • Für jede Dataset-Kopiekonfiguration können Sie jeweils eine aktive Kopie haben. Weitere Übertragungsausführungen werden in die Warteschlange gestellt.

Datentypbeschränkungen

  • Das Kopieren von Ansichten wird nicht unterstützt.
  • Das Kopieren externer Tabellen wird nicht unterstützt.
  • Das Kopieren des Speichers in einen Streamingpuffer wird nicht unterstützt.
  • Die Unterstützung des Kopierens von Tabellen, die mit vom Kunden verwalteten Schlüsseln verschlüsselt sind, variiert, je nachdem ob Sie innerhalb derselben Region oder regionenübergreifend kopieren.

Innerhalb einer Region

Das Kopieren von verschlüsselten Tabellen, einschließlich solcher, die mit vom Kunden verwalteten Schlüsseln (Customer managed encryption keys, CMEK) verschlüsselt sind, wird für das Kopieren von Datasets innerhalb derselben Region unterstützt.

Regionenübergreifend

Das regionenübergreifende Kopieren von Tabellen mit der Standardverschlüsselung wird unterstützt. Das regionenübergreifende Kopieren von Tabellen, die mit vom Kunden verwalteten Schlüsseln (Customer managed encryption keys, CMEK) verschlüsselt sind, wird derzeit nicht unterstützt. CMEK-verschlüsselte Tabellen werden beim Kopieren von Tabellen in das Ziel-Dataset übersprungen.

Einschränkungen des Ziel-Datasets

Datasets mit vom Kunden verwalteten Schlüsseln (Customer managed encryption keys, CMEK) können beim Kopieren zwischen Regionen nicht als Ziel verwendet werden. Eine Tabelle mit CMEK ist jedoch beim Kopieren innerhalb von Regionen als Ziel zulässig.

Tabellenbeschränkungen

  • Das Kopieren partitionierter Tabellen wird derzeit unterstützt. Das Anfügen von Daten an eine partitionierte Tabelle wird jedoch nicht unterstützt.

  • Wenn eine Tabelle sowohl im Quell-Dataset als auch im Ziel-Dataset vorhanden ist und sich seit der letzten erfolgreichen Kopie nicht geändert hat, wird sie übersprungen. Dies gilt auch dann, wenn das Kästchen Zieltabelle überschreiben angeklickt ist.

  • Beim Kürzen von Tabellen erkennt die Dataset-Kopie keine Änderungen am Ziel-Dataset, bevor mit dem Kopieren begonnen wird. Alle Daten im Ziel-Dataset werden aktualisiert (überschrieben). Sowohl Tabellen als auch Schema werden überschrieben.

    • Wenn Sie die Zieltabelle beim Kopieren mit dem Flag overwrite_destination_table überschreiben möchten, müssen beide Tabellen das gleiche Partitionierungsschema haben.

Hinweis

Vor dem Erstellen einer Dataset-Kopie führen Sie folgende Schritte aus:

  • Das Kopieren von Datasets verwendet Funktionen des BigQuery Data Transfer Service. Prüfen Sie im Google Cloud-Projekt für das Ziel-Dataset, ob Sie alle Aktionen ausgeführt haben, die zum Aktivieren des BigQuery Data Transfer Service erforderlich sind.
  • In derselben Region oder in einer anderen Region als Ihr Quell-Dataset müssen Sie als Ziel-Dataset ein BigQuery-Dataset erstellen. Beim Erstellen eines Datasets müssen Sie einen Standort angeben, an dem Ihre BigQuery-Daten gespeichert werden. Derzeit werden nicht alle Regionen für das Kopieren von Datasets unterstützt (siehe Unterstützte Regionen). Der Dataset-Name muss pro Projekt eindeutig sein.
  • Suchen Sie die ID des Quell-Datasets, das Sie kopieren möchten, und die ID des Quellprojekts.
  • Wenn Sie Benachrichtigungen über die Übertragungsausführung für Pub/Sub einrichten möchten, benötigen Sie die Berechtigungen pubsub.topics.setIamPolicy. Pub/Sub-Berechtigungen sind nicht erforderlich, wenn Sie nur E-Mail-Benachrichtigungen einrichten. Weitere Informationen finden Sie unter Ausführungsbenachrichtigungen im BigQuery Data Transfer Service.
  • Wenn Sie die Zieltabelle beim Kopieren mit dem Flag overwrite_destination_table überschreiben möchten, müssen beide Tabellen das gleiche Partitionierungsschema haben.
  • Erteilen Sie IAM-Rollen (Identity and Access Management), die Nutzern die erforderlichen Berechtigungen zum Ausführen der einzelnen Aufgaben in diesem Dokument geben.

Erforderliche Berechtigungen

Zum Erstellen einer Dataset-Kopie benötigen Sie die folgenden IAM-Berechtigungen:

  • Zum Erstellen der Übertragung der Kopie benötigen Sie Folgendes für das Projekt:

    • bigquery.transfers.update
    • bigquery.jobs.create
  • Für das Quell-Dataset benötigen Sie Folgendes:

    • bigquery.datasets.get
    • bigquery.tables.list
  • Für das Ziel-Dataset benötigen Sie Folgendes:

    • bigquery.datasets.get
    • bigquery.datasets.update
    • bigquery.tables.create
    • bigquery.tables.list

Die vordefinierte IAM-Rolle roles/bigquery.admin beinhaltet die Berechtigungen, die zum Erstellen einer Dataset-Kopie erforderlich sind.

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen und in der Referenz für IAM-Berechtigungen.

Dataset-Kopie einrichten

So erstellen Sie eine Dataset-Kopie:

Console

Option 1: Sie verwenden die Schaltfläche Kopieren.

  1. Rufen Sie in der Cloud Console die Seite „BigQuery“ auf.

    Zur Seite "BigQuery"

  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 Öffnen.

  4. Klicken Sie auf Kopieren. Führen Sie im angezeigten Dialogfeld Dataset kopieren die folgenden Schritte aus:

    1. Erstellen Sie im Feld Dataset entweder ein neues Dataset oder wählen Sie eine vorhandene Dataset-ID aus der Liste aus.

      Dataset-Namen müssen innerhalb eines Projekts eindeutig sein. Das Projekt und das Dataset können sich in verschiedenen Regionen befinden, aber für das Kopieren von regionenübergreifenden Datasets werden nicht alle Regionen unterstützt.

    2. Im Feld Speicherort wird der Speicherort des Quell-Datasets angezeigt.

    3. Optional: Klicken Sie auf das Kästchen Zieltabellen überschreiben, um sowohl die Daten als auch das Schema der Zieltabellen mit den Quelltabellen zu überschreiben.

    4. Klicken Sie zum Kopieren des Datasets auf Kopieren.

Sie können das alte Dataset löschen, um zusätzliche Speicherkosten zu vermeiden.

Option 2: Sie verwenden den BigQuery Data Transfer Service.

  1. Aktivieren Sie den BigQuery Data Transfer Service.
  2. Erstellen Sie eine Übertragung für Ihre Datenquelle.

bq

Geben Sie den Befehl bq mk ein und geben Sie das Flag --transfer_config für die Übertragungserstellung an. Die folgenden Flags sind ebenfalls erforderlich:

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params

    bq mk --transfer_config --project_id=PROJECT_ID --data_source=cross_region_copy --target_dataset=DATASET --display_name=NAME --params='PARAMETERS'
    

Dabei gilt:

  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID. Wenn --project_id nicht angegeben ist, wird das Standardprojekt verwendet.
  • DATASET ist das BigQuery-Ziel-Dataset für die Übertragungskonfiguration.
  • NAME ist der Anzeigename für den Kopierjob oder die Übertragungskonfiguration. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung einfach identifizieren können, wenn Sie sie später ändern müssen.
  • PARAMETERS enthält die Parameter für die erstellte Übertragungskonfiguration im JSON-Format. Beispiel: --params='{"param":"param_value"}'. Zum Kopieren von Datasets müssen Sie die Parameter source_dataset_id, source_project_id und optional overwrite_destination_table angeben.

Die Parameter für die Konfiguration einer Dataset-Kopie sind:

  • source_dataset_id: Die ID des Quell-Datasets, das Sie kopieren möchten.
  • source_project_id: Die ID des Projekts, in dem sich das Quell-Dataset befindet.
  • (Optional) overwrite_destination_table: Fügen Sie diesen Parameter hinzu, wenn Sie die Tabellen einer vorherigen Kopie kürzen und alle Daten aktualisieren möchten.

Mit dem folgenden Befehl erstellen Sie beispielsweise eine Dataset-Kopierkonfiguration namens My Transfer mit einem Ziel-Dataset mydataset sowie ein Projekt mit der ID myproject.

bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=mydataset --display_name='My Dataset Copy' --params='{"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'

Weitere Informationen zum Befehl bq mk finden Sie in der Referenz zum Befehlszeilentool.

API

Verwenden Sie die Methode projects.locations.transferConfigs.create und geben Sie eine Instanz der Ressource TransferConfig an.

Java

Bevor Sie dieses Beispiel ausprobieren, 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.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to copy dataset from another gcp project
public class CopyDataset {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String destinationProjectId = "MY_DESTINATION_PROJECT_ID";
    final String destinationDatasetId = "MY_DESTINATION_DATASET_ID";
    final String sourceProjectId = "MY_SOURCE_PROJECT_ID";
    final String sourceDatasetId = "MY_SOURCE_DATASET_ID";
    Map<String, Value> params = new HashMap<>();
    params.put("source_project_id", Value.newBuilder().setStringValue(sourceProjectId).build());
    params.put("source_dataset_id", Value.newBuilder().setStringValue(sourceDatasetId).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(destinationDatasetId)
            .setDisplayName("Your Dataset Copy Name")
            .setDataSourceId("cross_region_copy")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    copyDataset(destinationProjectId, transferConfig);
  }

  public static void copyDataset(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println("Copy dataset created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Copy dataset was not created." + ex.toString());
    }
  }
}

Python

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

Installieren Sie den Python-Client für die BigQuery Data Transfer API mit pip install google-cloud-bigquery-datatransfer. Erstellen Sie dann eine Übertragungskonfiguration, um das Dataset zu kopieren.
from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

destination_project_id = "my-destination-project"
destination_dataset_id = "my_destination_dataset"
source_project_id = "my-source-project"
source_dataset_id = "my_source_dataset"
transfer_config = bigquery_datatransfer.TransferConfig(
    destination_dataset_id=destination_dataset_id,
    display_name="Your Dataset Copy Name",
    data_source_id="cross_region_copy",
    params={
        "source_project_id": source_project_id,
        "source_dataset_id": source_dataset_id,
    },
    schedule="every 24 hours",
)
transfer_config = transfer_client.create_transfer_config(
    parent=transfer_client.common_project_path(destination_project_id),
    transfer_config=transfer_config,
)
print(f"Created transfer config: {transfer_config.name}")

Dataset-Kopierjobs aufrufen und aktualisieren

So rufen Sie den Fortschritt und die Details einer Dataset-Kopie in Datenübertragungen auf:

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

    Zur Seite "BigQuery"

  2. Klicken Sie auf Datenübertragungen.

  3. Wählen Sie eine Übertragung aus, für die Sie die Übertragungsdetails anzeigen möchten.

    1. Wählen Sie auf der Seite Übertragungsdetails eine Übertragungsausführung aus.

    2. Klicken Sie zum Aktualisieren auf Mehr  > Übertragung aktualisieren.

Preise

Das Kopieren von Datasets ist während der Betaphase kostenlos.

Bei allgemeiner Verfügbarkeit richten sich die Gebühren für ausgehenden Datenverkehr, der zwischen Regionen oder Multiregionen kopiert wird, nach den Preisen für die BigQuery-Datenextraktion. Für Datasets, die innerhalb einer einzelnen Region oder Mehrfachregion kopiert werden, fallen keine Gebühren an.

Wenn Sie ein Dataset innerhalb einer einzelnen Region (oder innerhalb einer Multiregion) kopieren, werden Ihnen keine Gebühren für ausgehenden Traffic in Rechnung gestellt. Wenn Sie ein Dataset zwischen Regionen (oder zwischen einer Region und einer Multiregion oder umgekehrt) kopieren, wird Ihnen der ausgehende Traffic in Rechnung gestellt.

BigQuery sendet komprimierte Daten beim regionenübergreifenden Kopieren, sodass die in Rechnung gestellten GB möglicherweise unter der Größe Ihres Datasets liegen.

Weitere Informationen finden Sie unter BigQuery-Preise.

Unterstützte Regionen

Es gibt zwei Arten von Standorten:

  • Eine Region ist ein bestimmter geografischer Ort wie London.

  • Eine Multiregion ist ein großes geografisches Gebiet (beispielsweise die USA), das mindestens zwei geografische Bereiche enthält.

Datasets können von Region zu Region, von einer einzelnen Region zu mehreren Regionen, von mehreren Regionen zu einer einzelnen Region oder von mehreren Regionen zu mehreren Regionen kopiert werden.

Derzeit werden nicht alle Regionen für das Kopieren von Datasets unterstützt. Sie können Dataset-Kopien in Regionen erstellen, in denen der BigQuery Data Transfer Service derzeit unterstützt wird. Diese finden Sie im Folgenden.

Regionale Standorte

Beschreibung der Region Name der Region Hinweise
Amerika
Iowa us-central1 Blattsymbol Niedriger CO2-Wert
Las Vegas us-west4
Los Angeles us-west2
Montreal northamerica-northeast1 Blattsymbol Niedriger CO2-Wert
Northern Virginia us-east4
Oregon us-west1 Blattsymbol Niedriger CO2-Wert
Salt Lake City us-west3
São Paulo southamerica-east1 Blattsymbol Niedriger CO2-Wert
Santiago southamerica-west1
South Carolina us-east1
Toronto northamerica-northeast2
Europa
Belgien europe-west1 Blattsymbol Niedriger CO2-Wert
Finnland europe-north1 Blattsymbol Niedriger CO2-Wert
Frankfurt europe-west3
London europe-west2
Netherlands europe-west4
Warschau europe-central2
Zürich europe-west6 Blattsymbol Niedriger CO2-Wert
Asia Pacific
Delhi asia-south2
Hong Kong asia-east2
Jakarta asia-southeast2
Melbourne australia-southeast2
Mumbai asia-south1
Osaka asia-northeast2
Seoul asia-northeast3
Singapur asia-southeast1
Sydney australia-southeast1
Taiwan asia-east1
Tokio asia-northeast1

Multiregionale Standorte

Beschreibung des multiregionalen Standorts Name des multiregionalen Standorts
Rechenzentren in Mitgliedsstaaten der Europäischen Union1 EU
Rechenzentren in den USA US

1 Daten in der Multiregion EU werden nicht in den Rechenzentren europe-west2 (London) oder europe-west6 (Zürich) gespeichert.

Dataset-Sicherheit

Informationen zum Steuern des Zugriffs auf Datasets in BigQuery finden Sie unter Zugriff auf Datasets steuern. Informationen zur Datenverschlüsselung finden Sie unter Verschlüsselung inaktiver Daten.

Nächste Schritte

  • Weitere Informationen zur Verwendung von Übertragungen, einschließlich des Abrufs von Informationen zu einer Übertragungskonfiguration, des Auflistens von Übertragungskonfigurationen und des Abrufens des Ausführungsverlaufs einer Übertragung finden Sie unter Mit Übertragungen arbeiten.