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 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.
Externe Tabellen erstellen
Bevor Sie Bigtable-Daten abfragen können, müssen Sie – oder ein Administrator in Ihre Organisation – muss ein external table, also eine BigQuery-Tabelle mit Metadaten auf die 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. Wenn sich die Tabelle zum Beispiel
Eine Instanz mit Clustern in europe-central2-a
(Warschau), europe-west1-c
(Belgien) und asia-east1-a
(Tokio) haben, müssen Sie die externe Tabelle erstellen.
in Warschau, Belgien oder Tokio.
Wenn Sie eine externe Tabelle erstellen, legen Sie in den meisten Fällen readRowkeyAsString
und
ignoreUnspecifiedColumnFamilies
auf true gesetzt.
Wenn ignoreUnspecifiedColumnFamilies
beim Erstellen einer Tabelle „true“ ist
die nur einige Spalten in einer Spaltenfamilie enthält, sondern nur die ausgewählten
Spalten werden in der externen Tabelle als Spalten hochgestuft. Daten in der nicht ausgewählten
Spalten sind in einer allgemeinen column
-Spalte gruppiert.
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:
- In der Befehlszeile mit
bq
, die BigQuery-Befehlszeile - Aufrufe der BigQuery API
- Alle BigQuery-Clientbibliotheken
Informationen zum Erstellen und Ausführen einer Abfrage finden Sie unter Führen Sie eine Abfrage aus. 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 importieren möchten regelmäßig in BigQuery zu importieren. Sie sind auch für Anwendungsfälle hilfreich, bei denen Sie andernfalls eine Datenpipeline erstellen und die Daten in BigQuery streamen müssten. Anleitungen zum Verwalten finden Sie unter Abfragen planen
Vollständige Tabellenscans vermeiden
Ähnlich wie beim Senden von Leseanfragen direkt an Bigtable möchten Sie bei der Abfrage der externen Tabelle um vollständige Tabellenscans zu 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 in Die GoogleSQL-Syntax zur Begrenzung der Abfrage umfasst Folgendes:
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 beabsichtigen, Ihre Bigtable-Tabellendaten mithilfe eines Joins mit Daten aus einer anderen Quelle verbunden ist, sollten Sie eine Unterabfrage erstellen, die relevanten Felder für den geplanten Join aus Bigtable extrahieren. 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 eine Erhöhung der Anzahl Bigtable-Knoten, die für die Verarbeitung des Traffics erforderlich sind. Weil in derselben Region wie Ihre Bigtable-Tabelle. fallen keine Netzwerkkosten an.
Wenn Sie Ihre Abfragen tendenziell während der normalen Geschäftszeiten ausführen, sollten Sie dass Bigtable-Autoscaling aktiviert wird, damit die Anzahl der Knoten erhöht sich bei Bedarf und nimmt wieder ab, 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, Kosten zu begrenzen, vermeiden Sie einen Scan der vollständigen Tabelle.
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. als Protokollpuffer (protobufs) und Avro-Formate, werden möglicherweise oder in der Google Cloud Console schwer lesbar sind.
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 in Bigtable exportieren.