Bigtable-Daten mit BigQuery abfragen und analysieren
BigQuery ist ein verwaltetes Data Warehouse, mit dem Sie Ihre Bigtable-Daten mithilfe von SQL-Abfragen abfragen und analysieren können. BigQuery ist nützlich für Datenanalysten, Dateningenieure, Datenwissenschaftler oder alle, die Bigtable-Daten verwenden möchten, um Geschäftsfragen zu beantworten.
Mit BigQuery können Sie Ihre Bigtable-Daten direkt in BigQuery abfragen. Diese Funktion ist hilfreich, wenn Sie Ihre Bigtable-Daten mit BigQuery-Tabellen zusammenführen möchten.
Dieses Dokument bietet einen Überblick über das Abfragen von Bigtable-Daten mit BigQuery. Bevor Sie diese Seite lesen, sollten Sie sich mit den Informationen unter Bigtable – Übersicht und BigQuery – Übersicht vertraut gemacht haben.
Die Abfrage einer Bigtable-Tabelle mit BigQuery eignet sich ideal für Tabellen, die in jeder Zeile dieselben Spaltenfamilien und Spaltenqualifizierer haben.
Erstellen externer Tabellen
Bevor Sie Ihre Bigtable-Daten abfragen können, müssen Sie oder ein Administrator in Ihrer Organisation eine externe Tabelle erstellen. Das ist eine BigQuery-Tabelle mit Metadaten-Verweisen auf Ihre Bigtable-Tabelle, an die Sie Ihre Abfragen senden. Weitere Informationen zu externen Tabellen finden Sie unter Einführung in externe Datenquellen.
Sie müssen die externe Tabelle in derselben Region wie die Bigtable-Tabelle erstellen. Wenn sich die Tabelle beispielsweise in einer Instanz mit Clustern in europe-central2-a
(Warschau), europe-west1-c
(Belgien) und asia-east1-a
(Tokio) befindet, müssen Sie die externe Tabelle in Warschau, Belgien oder Tokio erstellen.
In den meisten Fällen sollten Sie beim Erstellen einer externen Tabelle readRowkeyAsString
und ignoreUnspecifiedColumnFamilies
auf true setzen.
Wenn ignoreUnspecifiedColumnFamilies
wahr ist und Sie eine Tabellendefinition erstellen, die nur einige Spalten in einer Spaltenfamilie enthält, werden nur die ausgewählten Spalten in der externen Tabelle als Spalten angezeigt. Daten in den nicht ausgewählten Spalten werden in einer allgemeinen column
-Spalte zusammengefasst.
Folgen Sie der Anleitung unter Externe Bigtable-Tabelle erstellen, um die externe Tabelle zu erstellen.
Daten in der externen Tabelle abfragen
Nachdem Sie eine externe Tabelle für Ihre Bigtable-Tabelle erstellt haben, können Sie SQL-Abfragen mit einer der folgenden Methoden an sie senden:
- Über die Befehlszeile mit
bq
, der BigQuery-Befehlszeile - Aufrufe der BigQuery API
- Eine beliebige der BigQuery-Clientbibliotheken
Informationen zum Erstellen und Ausführen von Abfragen finden Sie unter Abfrage ausführen. Bigtable-spezifische Anleitungen, einschließlich erforderlicher Berechtigungen und Codebeispiele, finden Sie unter Daten in Bigtable abfragen.
Geplante Abfragen
Geplante Abfragen sind nützlich, wenn Sie Bigtable-Daten regelmäßig in BigQuery importieren möchten. Sie sind auch für Anwendungsfälle hilfreich, bei denen Sie andernfalls eine Datenpipeline erstellen und die Daten in BigQuery streamen müssten. Eine Anleitung zum Verwalten geplanter Abfragen finden Sie unter Abfragen planen.
Vollständige Tabellenscans vermeiden
Ähnlich wie bei der direkten Übermittlung von Leseanfragen an Ihre Bigtable-Tabelle sollten Sie auch bei der Abfrage der externen Tabelle für die Tabelle in der Regel Volltabellenscans vermeiden. Vollständige Tabellenscans erhöhen die CPU-Auslastung und dauern wesentlich länger als selektive Abfragen. Außerdem ist ein höherer BigQuery-Durchsatz erforderlich.
Wenn Ihre Abfrage alle Zeilen umfasst, wird ein vollständiger Tabellenscan ausgelöst. Wenn Sie die Abfrage jedoch einschränken und einen Zeilenbereich oder nicht zusammenhängende Zeilen anfordern, wird nicht die gesamte Tabelle gescannt. Beispiele für die Einschränkung der Abfrage in GoogleSQL-Syntax:
WHERE rowkey = "abc123"
WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
WHERE rowkey > 999999
(wenn Sie den Zeilenschlüssel als String lesen)
Joins
Wenn Sie Ihre Bigtable-Tabellendaten mit Daten aus einer anderen Quelle zusammenführen möchten, sollten Sie eine untergeordnete Abfrage erstellen, mit der die relevanten Felder aus Bigtable für die geplante Zusammenführung extrahiert werden. Weitere Best Practices für das Zusammenführen von Tabellen finden Sie unter Abfrageleistung optimieren.
Kosten
Wenn Sie eine externe Tabelle erstellen und abfragen, werden Ihnen BigQuery-Kosten und die Erhöhung der Anzahl der Bigtable-Knoten in Rechnung gestellt, die für die Verarbeitung des Traffics erforderlich sind. Da sich Ihre externe Tabelle in derselben Region wie Ihre Bigtable-Tabelle befindet, fallen keine Netzwerkkosten an.
Wenn Sie Ihre Abfragen in der Regel während der regulären Geschäftszeiten ausführen, sollten Sie das Bigtable-Autoscaling aktivieren, damit die Anzahl der Knoten bei Bedarf erhöht und dann wieder verringert wird, wenn die Jobs abgeschlossen sind. Das Autoscaling ist auch eine effektive Taktik, wenn Sie geplante Abfragen ausführen, für die keine festen Fristen gelten.
Eine weitere Möglichkeit, die Kosten zu begrenzen, besteht darin, einen vollständigen Tabellenscan zu vermeiden.
Weitere Informationen zur Kostenoptimierung für BigQuery finden Sie unter Kosten schätzen und kontrollieren.
Beschränkungen
Es gelten folgende Einschränkungen:
- Sie können Bigtable-Daten, die im JSON-Format gespeichert sind, nicht mit BigQuery abfragen.
- Abfrageergebnisse, die serialisierte Daten mit verschachtelten Typen enthalten, z. B. Protocol Buffers (Protobufs) und Avro-Formate, werden in der Google Cloud Console möglicherweise falsch dargestellt oder sind schwer zu lesen.
Nächste Schritte
- Weitere Informationen zu den Unterschieden zwischen externen Tabellen und föderierten Abfragen.
- Erstellen Sie eine externe Bigtable-Tabelle.
- Bigtable-Daten abfragen, die in einer externen Tabelle gespeichert sind
- Daten aus BigQuery nach Bigtable exportieren