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 anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

import com.google.api.gax.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 anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

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.

Kontingente und Limits

Für das Kopieren von Datasets in BigQuery gelten die folgenden Limits. Die Limits gelten für Kopierjobs, die mit dem bq-Befehlszeilentool oder der Cloud Console erstellt wurden, und für Kopierjobs, die programmatisch mit der API-Methode jobs.insert (Typ „copy“) gesendet werden.

Für kopierte Daten gelten alle üblichen Nutzungsgebühren von BigQuery für das Speichern und Abfragen. Weitere Informationen finden Sie unter Preise.

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

Kontingente

Innerhalb einer Region

Das Kopieren von Datasets innerhalb derselben Region richtet sich bei allen BigQuery-Kopieraufträgen nach demselben Kontingent.

Für das Kopieren von Tabellen in BigQuery gelten die folgenden Limits. Sie beziehen sich auf Jobs, die automatisch durch Kopieren von Daten mit dem bq-Befehlszeilentool oder der Cloud Console erstellt werden. Die Limits gelten auch für Kopierjobs, die programmatisch mit der API-Methode jobs.insert (Typ „copy“) gesendet werden.

  • Kopierjobs pro Zieltabelle und Tag: 1.000 (einschließlich Fehlern)
  • Kopierjobs pro Projekt und Tag: 100.000 (einschließlich Fehler)

Regionenübergreifend

  • Kopierjobs pro Zieltabelle und Tag: 100 (einschließlich Fehlern)
  • Kopierjobs pro Projekt und Tag: 2.000 (einschließlich Fehlern)

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 Quell-Datasets

Die maximale Größe des Quell-Datasets beträgt 20.000 Tabellen. Wie viele Tabellen für jede Ausführung kopiert werden können, hängt davon ab, ob Sie innerhalb derselben Region oder regionenübergreifend kopieren.

Innerhalb einer Region

  • Das Quell-Dataset kann maximal 20.000 Tabellen enthalten.

  • Pro Ausführung können maximal 20.000 Tabellen in das Ziel-Dataset kopiert werden.

Regionenübergreifend

  • Die maximale Größe des Quell-Datasets liegt bei 20.000 enthaltenen Tabellen.

  • Pro Ausführung können maximal 1.000 Tabellen in das Ziel-Dataset kopiert werden.

Beispiel

Wenn Sie eine regionenübergreifende Kopie eines Datasets konfigurieren, das 8.000 Tabellen enthält, erstellt der BigQuery Data Transfer Service automatisch acht sequenzielle Ausführungen. Bei der ersten Ausführung werden 1.000 Tabellen kopiert. 24 Stunden später kopiert eine weitere Ausführung 1.000 Tabellen usw., bis alle Tabellen im Dataset kopiert wurden, bis zu maximal 20.000 Tabellen pro Dataset.

Ziel-Dataset-Einschränkungen

Regionenübergreifend

Datasets mit vom Kunden verwalteten Schlüsseln (Customer managed encryption keys, CMEK) können nicht als Ziel beim Kopieren zwischen Regionen 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
Amerika
Iowa us-central1
Las Vegas us-west4
Los Angeles us-west2
Montreal northamerica-northeast1
Nord-Virginia us-east4
Oregon us-west1
Salt Lake City us-west3
São Paulo southamerica-east1
South Carolina us-east1
Europa
Belgien europe-west1
Finnland europe-north1
Frankfurt europe-west3
London europe-west2
Netherlands europe-west4
Warschau europe-central2
Zürich europe-west6
Asiatisch-pazifischer Raum
Hongkong asia-east2
Jakarta asia-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.

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.