Datasets kopieren

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

Vorbereitung

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.

Erforderliche Berechtigungen

Sorgen Sie vor dem Erstellen einer Dataset-Kopie dafür, dass die Person, die die Dataset-Kopie erstellt, die folgenden Berechtigungen in BigQuery hat:

  • Die Berechtigungen bigquery.transfers.update und bigquery.jobs.create für das Projekt, um die Kopierübertragung zu erstellen.

  • Die Berechtigung bigquery.datasets.get für das Quell-Dataset.

  • Die Berechtigungen bigquery.datasets.get, bigquery.datasets.update und bigquery.tables.create für das Ziel-Dataset.

Die vordefinierte IAM-Rolle auf Projektebene bigquery.admin enthält alle erforderlichen Berechtigungen für eine Dataset-Kopie. Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen oder in der Referenz für IAM-Berechtigungen.

Dataset-Kopie einrichten

So erstellen Sie eine Dataset-Kopie:

Console

Option 1: Sie verwenden das Symbol Dataset kopieren.

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

    Zur Seite "BigQuery"

  2. Wählen Sie den Dataset-Namen des Quell-Datasets aus, das Sie kopieren möchten.

  3. Klicken Sie auf das Symbol Dataset kopieren.

    Symbol "Dataset kopieren".

  4. Wählen Sie im Dialogfeld Dataset kopieren die Projekt-ID und die Ziel-Dataset-ID aus. 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.

  5. Dataset-Namen müssen innerhalb eines Projekts eindeutig sein.

  6. Optional können Sie das Kästchen Zieltabelle überschreiben anklicken, wenn Sie alle Daten im Ziel-Dataset aktualisieren (überschreiben) möchten. Sowohl Tabellen als auch Schema werden überschrieben.

    Dialogfeld "Dataset kopieren".

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

Option 2: Sie verwenden die Schaltfläche Übertragungen.

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

    Zur Seite „BigQuery“

  2. Klicken Sie auf Übertragungen.

  3. Klicken Sie auf + ÜBERTRAGUNG ERSTELLEN.

  4. Auf der Seite Übertragung erstellen gehen Sie so vor:

    • Wählen Sie im Abschnitt Quelltyp für Quelle die Option Dataset-Kopie aus.

      Übertragungsquelle.

    • Geben Sie im Abschnitt Transfer config name (Konfigurationsname für Übertragung) für Display name (Anzeigename) einen Namen wie My Transfer für die Übertragung ein. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung einfach identifizieren können, wenn Sie sie später ändern müssen.

      Name der Übertragung.

    • Übernehmen Sie im Abschnitt Schedule options (Zeitplanoptionen) für Schedule (Zeitplan) den Standardwert (Start now) (Jetzt starten) oder klicken Sie auf Start at a set time (Zu einer festgelegten Zeit starten).

      • Wählen Sie für Repeats (Wiederholungen) eine Option aus, wie oft die Übertragung ausgeführt werden soll. Es gibt folgende Optionen:

        • Täglich (Standardeinstellung)
        • Wöchentlich
        • Monatlich
        • Benutzerdefiniert
        • On demand

        Wenn Sie eine andere Option als Täglich auswählen, sind zusätzliche Optionen verfügbar. Wenn Sie beispielsweise Wöchentlich auswählen, wird eine Option zur Auswahl des Wochentags angezeigt. Wenn Sie Benutzerdefiniert auswählen, wird eine Cron-ähnliche Zeitangabe erwartet, beispielsweise every 12 hours. Der kürzeste zulässige Zeitraum beträgt 12 Stunden.

      • Geben Sie für Start date and run time (Startdatum und Laufzeit) das Datum und die Uhrzeit für den Start der Übertragung ein. Wenn Sie Jetzt starten auswählen, können Sie dieses Feld nicht ändern.

        Zeitplan für die Übertragung.

    • Wählen Sie unter Destination dataset (Ziel-Dataset) das Dataset aus, das Sie zum Speichern Ihrer Daten in einer anderen Region erstellt haben.

    • Geben Sie unter Quell-Dataset den Namen des Datasets ein, das Sie kopieren möchten.

    • Geben Sie für Source project (Quellprojekt) die ID des Projekts ein, in dem sich Ihr Quell-Dataset befindet.

    • Optional können Sie das Kästchen Zieltabelle überschreiben anklicken, wenn Sie alle Daten im Ziel-Dataset aktualisieren (überschreiben) möchten. Sowohl Tabellen als auch Schema werden überschrieben.

      Neue Dataset-Kopie.

    • Optional: Im Abschnitt Notification options (Benachrichtigungsoptionen):

      • Klicken Sie auf den Umschalter, um E-Mail-Benachrichtigungen zu aktivieren. Wenn Sie diese Option aktivieren, erhält der Übertragungsadministrator eine E-Mail-Benachrichtigung, wenn ein Übertragungsvorgang fehlschlägt.
      • Wählen Sie für Select a Pub/Sub topic den Namen Ihres Themas aus oder klicken Sie auf Create a topic, um eines zu erstellen. Mit dieser Option werden Pub/Sub-Ausführungsbenachrichtigungen für Ihre Übertragung konfiguriert.

      Pub/Sub-Thema

  5. Klicken Sie auf Speichern.

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

bq

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

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

    bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --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.
  • DATA_SOURCE ist die Datenquelle: cross_region_copy.
  • 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

Unter Übertragungen können Sie den Fortschritt einer Dataset-Kopie sehen und Details dazu aufrufen.

Console

Screenshot: Übertragungsschaltfläche (Console).

Screenshot: Aufrufen der Übertragungsdetails (Console).

Aktualisierungsausführungen für Dataset-Kopien werden so geplant, dass sie anhand des konfigurierbaren, von Ihnen angegebenen Zeitplans ausgeführt werden. Die Standardeinstellung ist alle 24 Stunden. Klicken Sie auf das Menü Mehr und dann auf Jetzt aktualisieren, wenn Sie eine sofortige Ausführung anfordern möchten.

Schaltfläche zum Aktualisieren der Dataset-Kopie.

Preise

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

Bei allgemeiner Verfügbarkeit richten sich die Gebühren für Daten, die zwischen Regionen kopiert werden, nach den Preisen für den ausgehenden Netzwerk-Traffic von Compute Engine zwischen Regionen.

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.

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.

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

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.