Einführung in externe Tabellen

In diesem Dokument wird beschrieben, wie Sie mit Daten arbeiten, die außerhalb von BigQuery in externen Tabellen gespeichert sind. Sie können auch externe Datasets verwenden, um mit externen Datenquellen zu arbeiten.

Mit externen Tabellen ohne BigLake können Sie strukturierte Daten in externen Datenspeichern abfragen. Zur Abfrage einer externen Tabelle, die nicht von BigLake stammt, müssen Sie sowohl für die externe Tabelle als auch für die externe Datenquelle Berechtigungen haben. Wenn Sie beispielsweise eine externe Tabelle , die nicht von BigLake stammt, abfragen möchten, die eine Datenquelle in Cloud Storage verwendet, benötigen Sie die folgenden Berechtigungen:

  • bigquery.tables.getData
  • bigquery.jobs.create
  • storage.buckets.get
  • storage.objects.get

Unterstützte Datenspeicher

Sie können externe Tabellen, die nicht von BigLake stammen, mit den folgenden Datenspeichern verwenden:

Unterstützung temporärer Tabellen

Sie können eine externe Datenquelle in BigQuery mithilfe einer permanenten Tabelle oder einer temporären Tabelle abfragen. Eine permanente Tabelle ist eine Tabelle, die in einem Dataset erstellt und mit Ihrer externen Datenquelle verknüpft wird. Da die Tabelle permanent ist, können Sie sie mithilfe von Zugriffssteuerungen für andere Nutzer freigeben, die ebenfalls Zugriff auf die zugrunde liegende externe Datenquelle haben. Außerdem können Sie die Tabelle jederzeit abfragen.

Wenn Sie eine externe Datenquelle mithilfe einer temporären Tabelle abfragen, senden Sie einen Befehl, der eine Abfrage enthält und durch den eine nicht permanente, mit der externen Datenquelle verknüpfte Tabelle erstellt wird. Wenn Sie eine temporäre Tabelle verwenden, erstellen Sie keine Tabelle in einem Ihrer BigQuery-Datasets. Da die Tabelle nicht permanent in einem Dataset gespeichert wird, kann sie nicht für andere Nutzer freigegeben werden. Das Abfragen einer externen Datenquelle mithilfe einer temporären Tabelle eignet sich für einmalige Ad-hoc-Abfragen von externen Daten sowie für ETL-Vorgänge (Extraktion, Transformation, Laden).

Mehrere Quelldateien

Wenn Sie eine externe Nicht-BigLake-Tabelle basierend auf Cloud Storage erstellen, können Sie mehrere externe Datenquellen verwenden, sofern diese Datenquellen das gleiche Schema haben. Dies wird für externe Tabellen, die nicht von BigLake stammen und auf Bigtable oder Google Drive basieren, nicht unterstützt.

Beschränkungen

Für externe Tabellen gelten die folgenden Einschränkungen:

  • BigQuery übernimmt bei externen Datentabellen keine Garantie für die Datenkonsistenz. Werden die zugrunde liegenden Daten während der Ausführung der Abfrage geändert, kann dies zu einem unerwarteten Verhalten führen.
  • Die Abfrageleistung ist bei externen Tabellen mitunter langsamer als bei der Abfrage von Daten in einer BigQuery-Standardtabelle. Wenn die Abfragegeschwindigkeit hohe Priorität hat, sollten Sie die Daten in BigQuery laden und nicht mit einer externen Datenquelle arbeiten. Die Leistung einer Abfrage, die eine externe Tabelle enthält, hängt vom Typ des externen Speichers ab. Zum Beispiel dauern Abfragen von Daten, die in Cloud Storage gespeichert sind, weniger lange als Abfragen von in Google Drive gespeicherten Daten. Im Allgemeinen sollte die Abfrageleistung bei einer externen Tabelle der dem Auslesen der Daten direkt aus der Datenquelle entsprechen.
  • Externe Datentabellen können nicht mit DML oder anderen Methoden geändert werden. Externe Tabellen sind schreibgeschützt für BigQuery.
  • Die JSON-API-Methode TableDataList kann nicht zum Abrufen von Daten aus externen Tabellen verwendet werden. Weitere Informationen finden Sie unter tabledata.list. Zur Umgehung diese Einschränkung können Sie Abfrageergebnisse in einer Zieltabelle speichern. Sie können dann für die Ergebnistabelle die Methode TableDataList verwenden.
  • Es ist nicht möglich, einen BigQuery-Job auszuführen, der Daten aus einer externen Tabelle exportiert. Zur Umgehung diese Einschränkung können Sie Abfrageergebnisse in einer Zieltabelle speichern. Führen Sie dann einen Exportjob auf die Ergebnistabelle aus.
  • Externe Tabellen können nicht in einer Abfrage mit einer Platzhaltertabelle referenziert werden.
  • Externe Tabellen unterstützen kein Clustering. Sie unterstützen die Partitionierung in begrenztem Umfang. Weitere Informationen finden Sie unter Extern partitionierte Daten abfragen.
  • Wenn Sie Daten aus einer anderen Quelle als Cloud Storage abfragen, werden die Ergebnisse nicht im Cache gespeichert. (GoogleSQL-Abfragen in Cloud Storage werden unterstützt.) Jede Abfrage aus einer externen Tabelle wird in Rechnung gestellt, auch wenn Sie dieselbe Abfrage mehrmals senden. Wenn Sie wiederholt eine Abfrage an eine externe Tabelle senden müssen, die sich nicht regelmäßig ändert, sollten Sie stattdessen die Abfrageergebnisse in eine permanente Tabelle schreiben und die Abfragen an die permanente Tabelle senden.
  • Sie können maximal 16 Abfragen gleichzeitig für eine externe Bigtable-Datenquelle senden.
  • Ein Probelauf einer föderierten Abfrage, die eine externe Tabelle verwendet, kann eine Untergrenze von 0 Byte an Daten melden, auch wenn Zeilen zurückgegeben werden. Der Grund dafür ist, dass die von der externen Tabelle verarbeitete Datenmenge erst nach Abschluss der eigentlichen Abfrage bestimmt werden kann. Für die Ausführung der föderierten Abfrage fallen weiterhin Kosten für die Verarbeitung dieser Daten an.
  • _object_metadata kann nicht als Spaltenname in externen Tabellen verwendet werden. Er ist für die interne Verwendung reserviert.
  • BigQuery unterstützt nicht die Anzeige von Tabellenspeicherstatistiken für externe Tabellen.
  • Externe Tabellen unterstützen keine flexiblen Spaltennamen.

Überlegungen zum Standort

Wenn Sie einen Speicherort für die externe Tabelle auswählen, müssen Sie sowohl den Speicherort des BigQuery-Datasets als auch den der externen Datenquelle berücksichtigen.

Cloud Storage

Wenn Sie Daten in Cloud Storage mit einer BigLake oder einer externen Nicht-BigLake-Tabelle abfragen, muss sich der Bucket am selben Standort wie Ihr BigQuery-Dataset befinden, das die Definition der externen Tabelle enthält. Beispiel:

  • Buckets für eine einzelne Region

    Wenn sich Ihr Cloud Storage-Bucket in der Region us-central1 (Iowa) befindet, muss sich Ihr BigQuery-Dataset in der Region us-central1 (Iowa) oder in der Multiregion US befinden.

    Wenn sich Ihr Cloud Storage-Bucket in der Region europe-west4 (Niederlande) befindet, muss sich Ihr BigQuery-Dataset in der Region europe-west4 (Niederlande) oder in der Multiregion EU befinden.

    Wenn sich Ihr Cloud Storage-Bucket in der Region europe-west1 (Belgien) befindet, muss sich das entsprechende BigQuery-Dataset ebenfalls in der Region europe-west1 (Belgien) befinden.

  • Dual-Region-Buckets

    Wenn sich Ihr Cloud Storage-Bucket in der vordefinierten dualen Region NAM4 oder in einer konfigurierbaren dualen Region befindet, die die Region us-central1 (Iowa) enthält, muss sich das entsprechende BigQuery-Dataset in der Region us-central1 (Iowa) oder in der Multiregion US befinden.

    Wenn sich Ihr Cloud Storage-Bucket in der vordefinierten dualen Region EUR4 oder in einer konfigurierbaren dualen Region befindet, die die Region europe-west4 (Niederlande) enthält, muss sich das entsprechende BigQuery-Dataset in der Region europe-west4 (Niederlande) oder in der Multiregion EU befinden.

    Wenn sich Ihr Cloud Storage-Bucket in der vordefinierten Biregion ASIA1 befindet, muss sich das entsprechende BigQuery-Dataset in der Region asia-northeast1 (Tokio) oder in der Region asia-northeast2 (Osaka) befinden.

    Wenn für Ihren Cloud Storage-Bucket eine konfigurierbare Biregion verwendet wird, die die Regionen australia-southeast1 (Sydney) und australia-southeast2 (Melbourne) umfasst, muss sich der entsprechende BigQuery-Bucket entweder in der Region australia-southeast1 (Sydney) oder in der Region australia-southeast2 (Melbourne) befinden.

  • Multiregionale Bucket

    Die Verwendung multiregionaler Dataset-Standorte mit multiregionalen Cloud Storage-Buckets wird für externe Tabellen nicht empfohlen, da die Leistung externer Abfragen von minimaler Latenz und optimaler Netzwerkbandbreite abhängig ist.

    Wenn sich Ihr BigQuery-Dataset in der Multiregion US befindet, muss sich der entsprechende Cloud Storage-Bucket in der Multiregion US, in einer dualen Region, die us-central1 (Iowa) enthält, wie der dualen Region NAM4, oder in einer konfigurierbaren dualen Region befinden, die us-central1 enthält.

    Wenn sich Ihr BigQuery-Dataset in der Multiregion EU befindet, muss sich der entsprechende Cloud Storage-Bucket in der Multiregion EU, in einer dualen Region, die europe-west4 (Niederlande) enthält, wie der dualen Region EUR4, oder in einer konfigurierbaren dualen Region, die europe-west4 enthält, befinden.

Weitere Informationen zu unterstützten Cloud Storage-Standorten finden Sie unter Bucket-Standorte in der Cloud Storage-Dokumentation.

Bigtable

Wenn Sie Daten in Bigtable über eine externe BigQuery-Tabelle abfragen, muss sich Ihre Bigtable-Instanz am selben Standort wie Ihr BigQuery-Dataset befinden:

  • Einzelne Region: Wenn sich Ihr BigQuery-Dataset am regionalen Standort in Belgien (europe-west1) befindet, muss sich die entsprechende Bigtable-Instanz in der Region Belgien befinden.
  • Mehrere Regionen: Da die Leistung externer Abfragen von minimaler Latenz und optimaler Netzwerkbandbreite abhängt, wird die Verwendung multiregionaler Dataset-Standorte für externe Tabellen in Bigtable nicht empfohlen.

Weitere Informationen zu unterstützten Bigtable-Standorten finden Sie unter Bigtable-Standorte.

Google Drive

Standortüberlegungen gelten nicht für externe Datenquellen von Google Drive.

Datenverwaltung

Entwickeln Sie einen Plan zur Datenverwaltung:
  • Wenn Sie eine regionale Speicherressource wie ein BigQuery-Dataset oder einen Cloud Storage-Bucket auswählen, sollten Sie einen Plan für die geografische Verwaltung Ihrer Daten entwickeln.

Daten zwischen Standorten verschieben

So verschieben Sie ein Dataset manuell von einem Standort an einen anderen:

  1. Exportieren Sie die Daten aus Ihren BigQuery-Tabellen in einen Cloud Storage-Bucket, der sich am selben Standort wie das Dataset oder an einem Standort im Dataset befindet. Wenn sich Ihr Dataset zum Beispiel am multiregionalen Standort EU befindet, können Sie Ihre Daten in den Standort europe-west1 Belgien exportieren, der Teil der EU ist.

    Beim Exportieren von Daten aus BigQuery fallen keine Gebühren an. Dies ist jedoch anders, wenn Sie die exportierten Daten in Cloud Storage speichern. BigQuery-Exporte unterliegen den Limits für Exportjobs.

  2. Kopieren oder verschieben Sie die Daten aus Ihrem Cloud Storage-Export-Bucket in einen neuen Bucket, den Sie am Zielspeicherort erstellt haben. Wenn Sie zum Beispiel Ihre Daten aus der Multiregion US in die asia-northeast1-Region „Tokio” verschieben, werden die Daten in einen Bucket übertragen, den Sie in Tokio erstellt haben. Weitere Informationen zum Übertragen von Cloud Storage-Objekten finden Sie in der Cloud Storage-Dokumentation unter Objekte kopieren, umbenennen und verschieben.

    Bei der Übertragung von Daten zwischen Regionen fallen in Cloud Storage Gebühren für ausgehenden Netzwerk-Traffic an.

  3. Erstellen Sie am neuen Standort ein neues BigQuery-Dataset und laden Sie dann Ihre Daten aus dem Cloud Storage-Bucket in das neue Dataset.

    Beim Laden der Daten in BigQuery fallen keine Kosten an. Das gilt jedoch nicht für das Speichern von Daten in Cloud Storage. Hier werden Gebühren berechnet, bis Sie die Daten oder den Bucket löschen. Es fallen außerdem Kosten an, wenn Sie die Daten in BigQuery speichern, nachdem sie geladen wurden. Das Laden von Daten in BigQuery unterliegt den Limits für Ladejobs.

Sie können auch Cloud Composer verwenden, um große Datasets programmatisch zu verschieben und zu kopieren.

Weitere Informationen zur Verwendung von Cloud Storage zum Speichern und Verschieben großer Datasets finden Sie unter Cloud Storage mit Big Data verwenden.

Preise

Bei der Abfrage einer externen Tabelle über BigQuery werden Ihnen die Ausführung der Abfrage sowie die gelesenen Byte in Rechnung gestellt, wenn Sie BigQuery On-Demand-Preise (pro TiB) oder den Slot-Verbrauch verwenden, wenn Sie den BigQuery-Kapazitätspreis (pro Slot-Stunde) verwenden.

Wenn Ihre Daten in ORC oder Parquet in Cloud Storage gespeichert sind, finden Sie weitere Informationen unter Berechnung der Datengröße.

Außerdem wird das Speichern der Daten und weiteren Ressourcen, die von der Quellanwendung verwendet werden, gemäß den Preisrichtlinien der Anwendung in Rechnung gestellt:

  • Weitere Informationen zu Cloud Storage-Preisen finden Sie unter Cloud Storage – Preise.
  • Informationen zu den Preisen für Bigtable finden Sie unter Preise.
  • Informationen zu den Preisen für Drive finden Sie unter Preise.

Nächste Schritte