Einführung in kontinuierliche Abfragen
In diesem Dokument werden kontinuierliche Abfragen in BigQuery beschrieben.
Kontinuierliche Abfragen von BigQuery sind SQL-Anweisungen, die kontinuierlich ausgeführt werden. Mit kontinuierlichen Abfragen können Sie eingehende Daten in BigQuery in Echtzeit analysieren. Sie können die von einer kontinuierlichen Abfrage erstellten Ausgaberows in die folgenden Ziele schreiben oder exportieren:
- BigQuery-Tabellen
- Verwaltete Apache Iceberg-Tabellen
- Pub/Sub-Themen
- Bigtable-Tabellen
- Cloud Spanner-Tabellen
Kontinuierliche Abfragen können Daten verarbeiten, die in BigQuery-Standardtabellen geschrieben wurden. Dazu stehen folgende Methoden zur Verfügung:
- Die BigQuery Storage Write API (gRPC)
- Die BigQuery Storage Write API (REST)
- Batch-Ladevorgang
- Die DML-Anweisung
INSERT - Mutieren von DML-Anweisungen (Datenbearbeitungssprache) wie
DELETE,UPDATEundMERGEbeim Exportieren von Daten nach Pub/Sub. - Schreibt die Ergebnisse einer Batchabfrage in eine permanente Tabelle.
- Schreibt Daten aus den Ergebnissen einer kontinuierlichen BigQuery-Abfrage in eine permanente Tabelle
- Ein Pub/Sub-BigQuery-Abo
- Schreibvorgänge von Dataflow in BigQuery
- Schreibt Daten aus Datastream in BigQuery im Append-only-Schreibmodus
Mit kontinuierlichen Abfragen können Sie zeitkritische Aufgaben ausführen, z. B. Erkenntnisse erstellen und sofort darauf reagieren, Echtzeit-Inferenzen für maschinelles Lernen (ML) anwenden und Daten auf andere Plattformen replizieren. So können Sie BigQuery als ereignisgesteuerte Datenverarbeitungs-Engine für die Entscheidungslogik Ihrer Anwendung verwenden.
Das folgende Diagramm zeigt gängige Workflows für kontinuierliche Abfragen:
Anwendungsfälle
Häufige Anwendungsfälle für kontinuierliche Abfragen:
- Personalisierte Kundenservicedienste: Mit generativer KI können Sie maßgeschneiderte Nachrichten für jede Kundeninteraktion erstellen.
- Anomalieerkennung: Erstellen Sie Lösungen, mit denen Sie Anomalien und Bedrohungen in Echtzeit in komplexen Daten erkennen können, damit Sie schneller auf Probleme reagieren können.
- Anpassbare ereignisgesteuerte Pipelines: Verwenden Sie die Integration von kontinuierlichen Abfragen mit Pub/Sub, um Downstream-Anwendungen basierend auf eingehenden Daten auszulösen.
- Datenanreicherung und ‑extraktion: Mit kontinuierlichen Abfragen können Sie Daten in Echtzeit mit SQL-Funktionen und ML-Modellen anreichern und transformieren.
- Reverse ETL (Extrahieren, Transformieren, Laden): Reverse ETL in Echtzeit in andere Speichersysteme ausführen, die besser für die Bereitstellung von Anwendungen mit niedriger Latenz geeignet sind. Sie können beispielsweise Ereignisdaten analysieren oder optimieren, die in BigQuery geschrieben werden, und sie dann für die Anwendungsbereitstellung in Bigtable, Spanner oder von Apache Iceberg verwaltete Tabellen streamen.
- Autonomes Auslösen von Agenten: Agentenbasierte Datenpipelines in Echtzeit auf Grundlage komplexer Ereignisse auslösen, die in Live-Datenstreams erkannt werden. Ein Beispiel finden Sie im Codelab zum Erstellen eines ereignisgesteuerten Datenagenten mit BigQuery und dem Agent Development Kit (ADK).
- Autonomes Agent-Monitoring: Entwickeln Sie automatisierte Echtzeitüberwachung und ‑benachrichtigungen für Agent-Interaktionen in Echtzeit mit dem BigQuery-Plug-in für Agent-Analysen. Damit werden alle Agent-Tracedaten, die Tool-Nutzung und die Betriebsprotokolle direkt in BigQuery gestreamt, um einen umfassenden Überblick über Ihre KI-Mitarbeiter zu erhalten.
Unterstützte Funktionen
Die folgenden Vorgänge werden in kontinuierlichen Abfragen unterstützt:
INSERT-Anweisungen ausführen, um Daten aus einer kontinuierlichen Abfrage in eine BigQuery-Tabelle oder eine Iceberg-verwaltete Tabelle zu schreiben.Ausführen von
EXPORT DATA-Anweisungen zum Veröffentlichen der Ausgabe von kontinuierlichen Abfragen in Pub/Sub-Themen.Kontinuierliche Abfragen, mit denen Daten nach Pub/Sub exportiert werden, müssen mit einem Dienstkonto ausgeführt werden. Weitere Informationen finden Sie unter Daten nach Pub/Sub exportieren.
Aus einem Pub/Sub-Thema können Sie die Daten mit anderen Diensten verwenden, z. B. Streaminganalysen mit Dataflow durchführen oder die Daten in einem Workflow zur Anwendungsintegration verwenden.
EXPORT DATA-Anweisungen zum Exportieren von Daten aus BigQuery in Bigtable-Tabellen ausführen. Weitere Informationen finden Sie unter Daten in Bigtable exportieren.EXPORT DATA-Anweisungen zum Exportieren von Daten aus BigQuery in Spanner-Tabellen ausführen. Weitere Informationen finden Sie unter Daten nach Spanner exportieren (umgekehrte ETL).Die folgenden generativen KI-Funktionen aufrufen:
AI.GENERATE-
- Für diese Funktion benötigen Sie ein BigQuery ML-Remote-Modell für ein Gemini Enterprise Agent Platform-Modell.
Die folgenden KI-Funktionen werden aufgerufen:
Für diese Funktionen benötigen Sie ein BigQuery ML-Remote-Modell für eine Cloud AI API.
Numerische Daten mit der Funktion
ML.NORMALIZERnormalisieren.JSON-Daten analysieren und verarbeiten, einschließlich Unterstützung für JSON-Funktionen und JSON-Entschachtelung.Verwendung zustandsloser GoogleSQL-Funktionen, z. B. Konvertierungsfunktionen. Bei zustandslosen Funktionen wird jede Zeile unabhängig von anderen Zeilen in der Tabelle verarbeitet.
Zustandsbehaftete Vorgänge verwenden, z. B.
JOIN, Aggregationen und Fensteraggregationen. Bei zustandsbehafteten Vorgängen wird der Status der aufgenommenen Daten über mehrere Zeilen oder Zeitintervalle hinweg beibehalten, um ein genaues Ergebnis zu berechnen.Verwenden Sie die Änderungsverlaufsfunktion
APPENDS, um angehängte Daten ab einem bestimmten Zeitpunkt zu verarbeiten.Verwenden Sie die Änderungsverlaufsfunktion
CHANGES, um geänderte Daten ab einem bestimmten Zeitpunkt zu verarbeiten, einschließlich Anhängen und Mutationen, wenn Sie Daten in Pub/Sub exportieren.CHANGESwird jedoch nicht unterstützt, wenn ein zustandsbehafteter Vorgang verwendet wird.Ansichten abfragen, sofern die zugrunde liegende SQL-Abfrage der Ansicht eine gültige kontinuierliche Abfrage ist.
Unterstützte zustandsorientierte Vorgänge
Wenn Sie Support für dieses Feature anfordern oder Feedback dazu geben möchten, senden Sie eine E-Mail an bq-continuous-queries-feedback@google.com.
Mit zustandsbehafteten Vorgängen können in kontinuierlichen Abfragen komplexe Analysen durchgeführt werden, bei denen Informationen über mehrere Zeilen oder Zeitintervalle hinweg beibehalten werden müssen. Bei zustandslosen Funktionen wird jede Zeile unabhängig verarbeitet. Bei zustandsbehafteten Vorgängen wird der Status der aufgenommenen Daten beibehalten, um Funktionen wie JOINs, Aggregationen und Fensteraggregationen zu unterstützen. So können Sie Ereignisse aus verschiedenen Streams in Beziehung setzen oder Messwerte im Zeitverlauf berechnen, z. B. einen 30-Minuten-Durchschnitt. Dazu werden die erforderlichen Daten während der Ausführung der Abfrage im Arbeitsspeicher gespeichert.
Kontinuierliche Abfragen unterstützen die folgenden zustandsbehafteten Vorgänge:
Autorisierung
Die Google Cloud -Zugriffstokens, die beim Ausführen von Jobs für kontinuierliche Abfragen verwendet werden, haben eine Gültigkeitsdauer (Time-to-Live, TTL) von zwei Tagen, wenn sie von einem Nutzerkonto generiert werden. Daher werden solche Jobs nach zwei Tagen beendet. Die von Dienstkonten generierten Zugriffstokens können länger laufen, müssen aber trotzdem die maximale Abfragelaufzeit einhalten. Weitere Informationen finden Sie unter Kontinuierliche Abfrage mit einem Dienstkonto ausführen.
Standorte
Eine Liste der unterstützten Regionen finden Sie unter Standorte für kontinuierliche Abfragen in BigQuery.
Beschränkungen
Für kontinuierliche Abfragen gelten die folgenden Einschränkungen:
- Der Status der aufgenommenen Daten wird nur für die spezifischen zustandsorientierten Vorgänge in der Vorschau beibehalten.
Kontinuierliche Abfragen unterstützen jetzt einige Arten von
JOIN, Aggregationen und Fensteraggregationen, diese sind jedoch auf bestimmte zustandsbehaftete Vorgänge beschränkt. Nicht alle Arten von zustandsbehafteten Vorgängen werden unterstützt. Die folgenden SQL-Funktionen können in einer kontinuierlichen Abfrage nicht verwendet werden, es sei denn, sie sind als unterstützter zustandsbehafteter Vorgang aufgeführt:
Die folgenden Abfrageoperatoren:
Abfrage-Set-Operatoren
Andere BigQuery ML-Funktionen als die in Unterstützte Funktionen aufgeführten
DDL-Anweisungen (Data Definition Language, Datendefinitionssprache)
Anweisungen der Datenbearbeitungssprache (DML), mit Ausnahme von
INSERT.Anweisungen der Datenkontrollsprache (Data Control Language, DCL)
EXPORT DATA-Anweisungen, die nicht auf Bigtable, Pub/Sub oder Spanner ausgerichtet sind.
Die folgenden Datenquellen werden in kontinuierlichen Abfragen nicht unterstützt:
- Externe Tabellen.
- Information Schema-Ansichten
- Verwaltete Apache Iceberg-Tabellen. Iceberg-Tabellen, die von Iceberg verwaltet werden, werden zwar nicht als Datenquellen unterstützt, aber als Ziele für die Ausgabe kontinuierlicher Abfragen.
- Platzhaltertabellen
- Upsert-Vorgang für Change Data Capture (CDC)-Daten.
- Materialisierte Ansichten
- Ansichten, bei denen in der zugrunde liegenden SQL-Abfrage nicht unterstützte Funktionen wie benutzerdefinierte Funktionen, externe Tabellen oder CDC-fähige Tabellen verwendet werden.
Kontinuierliche Abfragen unterstützen die Sicherheitsfunktionen auf column- und Zeilenebene nicht.
Die Ausgabe einer kontinuierlichen Abfrage unterliegt den Kontingenten und Limits des Zieldienstes, in den die Ausgabe exportiert wird.
Wenn Sie Daten in Bigtable, Spanner oder Pub/Sub-Standortendpunkte exportieren, können Sie nur auf Bigtable-, Spanner- oder Pub/Sub-Ressourcen verweisen, die sich innerhalb derselben Google Cloud-Region wie das BigQuery-Dataset befinden, das die Tabelle enthält, die Sie abfragen. Diese Einschränkung gilt nicht, wenn Daten in globale Pub/Sub-Endpunkte exportiert werden. Weitere Informationen zum Exportieren in eine Bigtable-Anwendungsprofil-Routingrichtlinie finden Sie unter Überlegungen zum Standort.
Sie können keine kontinuierliche Abfrage über einen Daten-Canvas ausführen.
Sie können die in einer kontinuierlichen Abfrage verwendete SQL-Anweisung nicht ändern, während der Continuous-Query-Job ausgeführt wird. Weitere Informationen finden Sie unter SQL einer kontinuierlichen Abfrage ändern.
Wenn ein Continuous Query-Job bei der Verarbeitung eingehender Daten in Verzug gerät und eine Verzögerung des Ausgabewasserzeichens von mehr als 48 Stunden aufweist, schlägt er fehl. Sie können die Abfrage noch einmal ausführen und die Änderungsverlaufsfunktion
APPENDSoderCHANGESverwenden, um die Verarbeitung ab dem Zeitpunkt fortzusetzen, an dem Sie den vorherigen kontinuierlichen Abfragejob beendet haben. Weitere Informationen finden Sie unter Kontinuierliche Abfrage ab einem bestimmten Zeitpunkt starten.Eine kontinuierliche Abfrage, die mit einem Nutzerkonto konfiguriert wurde, kann bis zu zwei Tage lang ausgeführt werden. Eine kontinuierliche Abfrage, die mit einem Dienstkonto konfiguriert wurde, kann bis zu 150 Tage lang ausgeführt werden. Wenn die maximale Laufzeit der Abfrage erreicht ist, schlägt die Abfrage fehl und die Verarbeitung eingehender Daten wird beendet.
Kontinuierliche Abfragen werden zwar mit BigQuery-Funktionen für Zuverlässigkeit erstellt, es kann aber gelegentlich zu vorübergehenden Problemen kommen. Probleme können dazu führen, dass Ihre kontinuierliche Abfrage automatisch neu verarbeitet wird. Dies kann zu doppelten Daten in der Ausgabe der kontinuierlichen Abfrage führen. Konzipieren Sie Ihre Downstream-Systeme so, dass sie solche Szenarien bewältigen können.
Reservierungseinschränkungen
- Sie müssen eine Reservierung der Enterprise- oder Enterprise Plus-Version mit dem Zuweisungstyp
CONTINUOUSerstellen, um kontinuierliche Abfragen auszuführen. Kontinuierliche Abfragen unterstützen das Abrechnungsmodell für On-Demand-Compute nicht. - Wenn Sie eine
CONTINUOUSReservierungszuweisung erstellen, ist die zugehörige Reservierung auf maximal 500 Slots beschränkt. Wenn Sie eine Erhöhung dieses Limits anfordern möchten, wenden Sie sich an bq-continuous-queries-feedback@google.com. - Sie können keine Reservierungszuweisung erstellen, die in derselben Reservierung einen anderen Jobtyp als eine Reservierungszuweisung für kontinuierliche Abfragen verwendet.
BigQuery bestimmt die Anzahl der kontinuierlichen Abfragen, die gleichzeitig pro Projekt ausgeführt werden können, basierend auf der konfigurierten Größe der Reservierungszuweisung, für die die Art der Dienstleistung
CONTINUOUSverwendet wird. Damit neue Jobs zugelassen werden, sind in BigQuery mindestens 10 Slots pro kontinuierlichem Abfragejob erforderlich. Bei der normalen Ausführung werden nicht unbedingt alle 10 Slots belegt. Dieser Schwellenwert sorgt dafür, dass für jede ausgeführte kontinuierliche Abfrage genügend Rechenkapazität für die Baseline vorhanden ist, um plötzliche Spitzen im eingehenden Datenvolumen zu bewältigen, ohne dass es zu Verzögerungen kommt oder die Verarbeitung mit geringer Latenz beeinträchtigt wird.Damit Ihre Abfragen erfolgreich ausgeführt werden, ohne dass die Grenzwerte für die Nebenläufigkeit erreicht werden, empfehlen wir die Verwendung von Slot-Autoscaling. Durch Autoscaling wird die Gesamtzahl der von Ihnen verwendeten Slots dynamisch an den tatsächlichen Ressourcenbedarf angepasst. Sie können eine kleinere Referenzreservierung konfigurieren und ein maximales Autoscaling-Limit festlegen, das den Schwellenwert von 10 Slots pro Abfrage für die erwarteten gleichzeitigen Abfragen problemlos abdeckt.
Wenn Sie mehrere kontinuierliche Abfragen mit derselben Reservierung ausführen, werden die verfügbaren Ressourcen möglicherweise nicht fair auf die einzelnen Jobs aufgeteilt, wie in BigQuery-Fairness definiert.
Slot-Autoscaling
Kontinuierliche Abfragen können Slot-Autoscaling verwenden, um die zugewiesene Kapazität dynamisch an Ihre Arbeitslast anzupassen. Wenn die Arbeitslast Ihrer kontinuierlichen Abfragen zu- oder abnimmt, passt BigQuery Ihre Slots dynamisch an.
Nachdem eine kontinuierliche Abfrage ausgeführt wird, wird aktiv auf eingehende Daten gewartet, was Slot-Ressourcen verbraucht. Eine Reservierung mit einer laufenden kontinuierlichen Abfrage wird nicht auf null Slots herunterskaliert. Eine inaktive kontinuierliche Abfrage, die hauptsächlich auf eingehende Daten wartet, sollte jedoch nur eine minimale Anzahl von Slots belegen, in der Regel etwa einen Slot.
Freigabe inaktiver Slots
Kontinuierliche Abfragen können die Freigabe inaktiver Slots verwenden, um nicht genutzte Slotressourcen für andere Reservierungen und Jobtypen freizugeben.
- Für die Ausführung einer kontinuierlichen Abfrage ist weiterhin eine
CONTINUOUS-Reservierungszuweisung erforderlich. Es kann nicht nur auf inaktive Slots aus anderen Reservierungen zurückgegriffen werden. Daher ist für eineCONTINUOUS-Reservierungszuweisung entweder eine Slot-Referenz ungleich null oder eine Slot-Autoscaling-Konfiguration ungleich null erforderlich. - Nur inaktive Referenz- oder zugesicherte Slots aus einer
CONTINUOUS-Reservierungszuweisung können freigegeben werden. Automatisch skalierte Slots können nicht als inaktive Slots für andere Reservierungen freigegeben werden.
Preise
Für Continuous Queries kann BigQuery Fluid Scaling verwendet werden.
Für kontinuierliche Abfragen gelten die BigQuery-Kapazitätsrechenpreise, die in Slots gemessen werden.
Zum Ausführen kontinuierlicher Abfragen benötigen Sie eine Reservierung mit dem Enterprise oder Enterprise Plus und eine Reservierungszuweisung mit dem CONTINUOUS-Jobtyp.
Die Nutzung anderer BigQuery-Ressourcen wie Datenaufnahme und ‑speicherung wird zu den in den BigQuery-Preisen angegebenen Preisen berechnet.
Die Nutzung anderer Dienste, die kontinuierliche Abfrageergebnisse empfangen oder während der Verarbeitung kontinuierlicher Abfragen aufgerufen werden, wird zu den für diese Dienste veröffentlichten Preisen berechnet. Informationen zu den Preisen anderer Google Cloud Dienste, die von kontinuierlichen Abfragen verwendet werden, finden Sie in den folgenden Themen:
Anforderungen an Slotkapazität schätzen
Da jede Arbeitslast unterschiedlich ist, ist eine genaue Schätzung der Slots für kontinuierliche Abfragen oft nicht im Voraus möglich. Die Anzahl der Slots, die für Ihre kontinuierlichen Abfragen erforderlich sind, hängt von einer Kombination aus mehreren Faktoren ab:
- Die Anzahl der gleichzeitig ausgeführten kontinuierlichen Abfragen.
- Die Komplexität der SQL-Anweisung.
- Die Verwendung von Funktionen für die zustandsbehaftete Verarbeitung, einschließlich Zeitfenster,
JOINund Aggregationen. - Die Rate oder Geschwindigkeit eingehender Daten.
- Die Struktur und Größe der aufgenommenen Daten.
Konzeptionell können Sie Ihren gesamten Slotbedarf als Funktion Ihrer kontinuierlichen Abfragearbeitslast schätzen:
Geschätzte Slots ≈ Anzahl der kontinuierlichen Abfragen × ∑ (Datenrate × Abfragekomplexität)
Da der tatsächliche Slotverbrauch stark von Ihrer individuellen Arbeitslast und Ihren Datenmustern abhängt, ist die genaueste Methode zur Kostenschätzung, einen laufenden Job zu beobachten. Mit INFORMATION_SCHEMA-Ansichten können Sie die maximale Slot-Nutzung eines isolierten Laufs einer kontinuierlichen Abfrage messen. Eine detaillierte Anleitung und Beispielabfragen zum Erfassen der Slot-Nutzung im Zeitverlauf finden Sie unter Informationen zum Slot-Verbrauch ansehen.
Nächste Schritte
Erstellen Sie eine kontinuierliche Abfrage.