Einführung in externe Tabellen

Auf dieser Seite werden externe Tabellen vorgestellt und Anleitungen zum Abfragen von außerhalb von BigQuery gespeicherten Daten gegeben.

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

Beachten Sie Folgendes, wenn Sie einen Standort für Ihre Daten auswählen:

Cloud Storage

Sie können auf folgende Weise über BigQuery mit Cloud Storage-Daten interagieren:

Cloud Storage-Daten abfragen

Wenn Sie Daten in Cloud Storage mit einer BigLake- oder einer externen Nicht-BigLake-Tabelle abfragen, müssen sich die Daten, die Sie abfragen, am selben Standort befinden wie Ihr BigQuery-Dataset. Beispiel:

  • Bucket mit nur einer Region: Wenn sich Ihr BigQuery-Dataset in der Region Warschau (europe-central2) befindet, muss sich der entsprechende Cloud Storage-Bucket ebenfalls in der Region Warschau oder einer beliebigen dualen Region von Cloud Storage befinden, die Warschau einbezieht. Wenn sich Ihr BigQuery-Dataset in der Multiregion US befindet, kann sich der Cloud Storage-Bucket in der Multiregion US, in der einzelnen Region Iowa (us-central1) oder in einer beliebigen dualen Region befinden, die Iowa einbezieht. Abfragen aus einer anderen einzelnen Region schlagen fehl, auch wenn sich der Bucket in der Multiregion des Datasets befindet. Beispiel: Wenn sich die externen Tabellen am multiregionalen Standort US und der Cloud Storage-Bucket in Oregon (us-west1) befinden, schlägt der Job fehl.

    Wenn sich Ihr BigQuery-Dataset in der Multiregion EU befindet, kann sich der Cloud Storage-Bucket in der Multiregion EU, in der einzelnen Region Belgien (europe-west1) oder in einer beliebigen dualen Region befinden, die Belgien einbezieht. Abfragen aus einer anderen einzelnen Region schlagen fehl, auch wenn sich der Bucket in der Multiregion des Datasets befindet. Beispiel: Wenn sich die externen Tabellen am multiregionalen Standort EU und der Cloud Storage-Bucket in Warschau (europe-central2) befinden, schlägt der Job fehl.

  • Biregionaler Bucket: Wenn sich Ihr BigQuery-Dataset in der Region Tokio (asia-northeast1) befindet, muss sich der entsprechende Cloud Storage-Bucket in der Region Tokio oder in einer dualen Region befinden, die Tokio enthält, wie der dualen Region ASIA1. Weitere Informationen finden Sie unter Biregionalen Bucket erstellen.

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

    Wenn sich der Cloud Storage-Bucket in der dualen Region EUR4 oder in einer dualen Region befindet, die die Region Belgien (europe-west1) enthält, kann sich das entsprechende BigQuery-Dataset in der Multiregion EU oder in der Region Belgien (europe-west1) befinden.

  • Multiregionaler 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 Iowa enthält (us-central1), wie der dualen Region NAM4, oder in einer benutzerdefinierten dualen Region, die Iowa enthält (us-central1), befinden.

    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 Belgien enthält (europe-west1), wie der dualen Region EUR4, oder in einer benutzerdefinierten dualen Region, die Belgien enthält, befinden.

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

Daten aus Cloud Storage laden

Wenn Sie Daten aus Cloud Storage mithilfe einer externen BigLake- oder Nicht-BigLake-Tabelle laden, müssen sich die Daten am selben Ort wie Ihr BigQuery-Dataset befinden.

  • Sie können Daten aus einem Cloud Storage-Bucket laden, der sich an einem beliebigen Standort befindet, wenn sich Ihr BigQuery-Dataset in der Multiregion US befindet.

  • Multiregionaler Bucket: Wenn sich der Cloud Storage-Bucket, aus dem Sie laden möchten, in einem multiregionalen Bucket befindet, kann sich Ihr BigQuery-Dataset im selben multiregionalen Bucket oder in einer einzelnen Region befinden, die im selben multiregionalen Bucket enthalten ist. Befindet sich der Cloud Storage-Bucket beispielsweise in der Region EU, kann sich das BigQuery-Dataset in der Multiregion EU oder in einer einzelnen Region in der EU befinden.
  • Biregionaler Bucket: Wenn sich der Cloud Storage-Bucket, aus dem Sie laden möchten, in einem biregionalen Bucket befindet, kann sich Ihr BigQuery-Dataset in Regionen befinden, die in einem biregionalen Bucket oder in einer Multiregion enthalten sind, die die duale Region enthält. Beispiel: Wenn sich Ihr Cloud Storage-Bucket in der Region EUR4 befindet, kann sich das BigQuery-Dataset entweder in der einzelnen Region Finnland (europe-north1), in der einzelnen Region Niederlande (europe-west4) oder in der Multiregion EU befinden.

    Weitere Informationen finden Sie unter Biregionalen Bucket erstellen.

  • Bucket mit einzelner Region: Wenn sich der Cloud Storage-Bucket, aus dem Sie laden möchten, in einer einzelnen Region befindet, kann sich Ihr BigQuery-Dataset in derselben einzelnen Region oder in der Multiregion befinden, die die einzelne Region enthält. Wenn sich Ihr Cloud Storage-Bucket beispielsweise in der Region Finnland (europe-north1) befindet, kann sich das BigQuery-Dataset in der Region Finnland oder in der Multiregion EU befinden.

  • Eine Ausnahme besteht, wenn sich Ihr BigQuery-Dataset in der Region asia-northeast1 befindet. Dann kann sich Ihr Cloud Storage-Bucket in der Multiregion EU befinden.

Weitere Informationen finden Sie unter Daten im Batch laden.

Daten nach Cloud Storage exportieren

Platzieren Sie die Cloud Storage-Buckets zum Exportieren von Daten am selben Standort.
  • Wenn sich Ihr BigQuery-Dataset in der Multi-Region EU befindet, muss sich der Cloud Storage-Bucket mit den zu exportierenden Daten am selben Standort oder an einem Standort in derselben Multi-Region Region befinden. Wenn sich Ihr BigQuery-Dataset zum Beispiel in der Multi-Region EU befindet, kann sich der Cloud Storage-Bucket in der Region europe-west1 innerhalb der EU befinden.

    Wenn sich Ihr Dataset in der Multi-Region US befindet, können Sie Daten in einen Cloud Storage-Bucket an einem beliebigen Standort exportieren.

  • Wenn sich Ihr Dataset in einer Region befindet, muss sich der Cloud Storage-Bucket in derselben Region befinden. Wenn sich Ihr Dataset zum Beispiel in der Region asia-northeast1 Tokio befindet, darf sich der Cloud Storage-Bucket nicht am multiregionalen Standort ASIA befinden.

Weitere Informationen finden Sie unter Tabellendaten exportieren.

Bigtable

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

  • 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