Einführung in kontinuierliche Abfragen
Kontinuierliche BigQuery-Abfragen sind SQL-Anweisungen, die kontinuierlich ausgeführt werden, damit Sie eingehende Daten in BigQuery in Echtzeit analysieren können. Sie können kontinuierliche Abfragen für zeitkritische Aufgaben verwenden, z. B. zum Generieren von sofortigen Statistiken, zum Anwenden von Echtzeit-Inferenzen für maschinelles Lernen (ML) und zum Replizieren von Daten auf andere Plattformen. Mit dieser Funktion können Sie BigQuery als ereignisgesteuerte Datenverarbeitungs-Engine für die Entscheidungslogik in Ihren Anwendungen verwenden.
Unterstützte Ziele und Datenquellen
Sie können die von einer kontinuierlichen Abfrage erzeugten Ausgabezeilen 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 mit einer der folgenden Methoden in BigQuery-Standardtabellen oder verwaltete Apache Iceberg-Tabellen geschrieben wurden:
- 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 aus den Ergebnissen einer Batchabfrage in eine permanente Tabelle.
- Schreibt die Ergebnisse einer kontinuierlichen BigQuery-Abfrage in eine permanente Tabelle.
- Ein Pub/Sub-BigQuery-Abo
- Schreibvorgänge von Dataflow in BigQuery
- Schreibt mit dem Nur-Anhängen-Schreibmodus von Datastream in BigQuery
Das folgende Diagramm zeigt gängige Workflows für kontinuierliche Abfragen:
Anwendungsfälle
Gängige Anwendungsfälle für kontinuierliche Abfragen:
- Personalisierte Dienste für die Kundeninteraktion: 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 komplexen Daten in Echtzeit erkennen können, um schneller auf Probleme reagieren zu können.
- Anpassbare ereignisgesteuerte Pipelines: Verwenden Sie die Integration von kontinuierlichen Abfragen mit Pub/Sub, um nachgelagerte Anwendungen basierend auf eingehenden Daten auszulösen.
- Datenanreicherung und Entitätsextraktion: Mit kontinuierlichen Abfragen können Sie Daten in Echtzeit anreichern und transformieren, indem Sie SQL-Funktionen und ML-Modelle verwenden.
- Reverse-ETL (Extrahieren, Transformieren, Laden): Führen Sie Echtzeit-Reverse-ETL in andere Speichersysteme aus, die besser für die Bereitstellung von Anwendungen mit niedriger Latenz geeignet sind. Beispielsweise können Sie Ereignisdaten analysieren oder erweitern, die in BigQuery geschrieben und dann zur Bereitstellung von Anwendungen an Bigtable, Spanner oder von Apache Iceberg verwaltete Tabellen gestreamt werden.
- Autonome Agenten-Trigger: Agentische Datenpipelines werden in Echtzeit basierend auf komplexen Ereignissen ausgelöst, die in Live-Datenstreams erkannt werden. Ein Beispiel finden Sie im Codelab Ereignisgesteuerten Daten-Agenten mit BigQuery und dem Agent Development Kit (ADK) erstellen.
- Autonomes Agentenmonitoring: Entwickeln Sie automatisiertes Echtzeitmonitoring und Benachrichtigungen für Echtzeitinteraktionen von Agenten mit dem BigQuery Agent Analytics-Plug-in, das alle Agenten-Trace-Daten, Toolnutzung und Betriebsprotokolle direkt in BigQuery streamt, um einen tiefen Einblick in Ihre KI-Belegschaft 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 verwaltete Iceberg-Tabelle zu schreiben.EXPORT DATA-Anweisungen ausführen, um die Ausgabe von kontinuierlichen Abfragen in Pub/Sub-Themen zu veröffentlichen.Kontinuierliche Abfragen, die Daten nach Pub/Sub exportieren, 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. für Streamanalysen mit Dataflow oder für die Verwendung der Daten in einem Application Integration-Workflow.
EXPORT DATA-Anweisungen ausführen, um Daten aus BigQuery in Bigtable-Tabellen zu exportieren. Weitere Informationen finden Sie unter Daten nach Bigtable exportieren.EXPORT DATA-Anweisungen ausführen, um Daten aus BigQuery in Spanner-Tabellen zu exportieren. Weitere Informationen finden Sie unter Daten nach Spanner exportieren (umgekehrte ETL).Aufrufen der folgenden generativen KI-Funktionen:
AI.GENERATE-
- Für diese Funktion benötigen Sie ein BigQuery ML-Remote-Modell, das auf einem Gemini Enterprise Agent Platform-Modell basiert.
Aufrufen der folgenden KI-Funktionen:
Für diese Funktionen benötigen Sie ein BigQuery ML-Remote-Modell über 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-Unnesting.Zustandslose GoogleSQL-Funktionen verwenden, z. B. Konvertierungsfunktionen. In zustandslosen Funktionen wird jede Zeile unabhängig von anderen Zeilen in der Tabelle verarbeitet.
Verwendung von zustandsorientierten Vorgängen, z. B.
JOINs, Aggregationen und Fensteraggregationen. Bei zustandsorientierten Vorgängen wird der Zustand 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 in BigQuery-Standardtabellen oder von Apache Iceberg verwalteten Tabellen zu verarbeiten.Verwenden Sie die Änderungsverlaufsfunktion
CHANGES, um geänderte Daten, einschließlich Anhängen und Mutationen, ab einem bestimmten Zeitpunkt zu verarbeiten, wenn Sie Daten nach Pub/Sub exportieren.CHANGESwird jedoch nicht unterstützt, wenn Sie einen zustandsorientierten Vorgang verwenden oder verwaltete Iceberg-Tabellen abfragen.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 geben möchten, senden Sie eine E-Mail an bq-continuous-queries-feedback@google.com.
Zustandsorientierte Vorgänge ermöglichen es kontinuierlichen Abfragen, komplexe Analysen durchzuführen, bei denen Informationen über mehrere Zeilen oder Zeitintervalle hinweg beibehalten werden müssen. Zustandslose Funktionen verarbeiten jede Zeile unabhängig, während zustandsorientierte Vorgänge den Zustand der aufgenommenen Daten beibehalten, um Funktionen wie JOINs, Aggregationen und Fensteraggregationen zu unterstützen. Mit dieser Funktion können Sie Ereignisse aus verschiedenen Streams korrelieren oder Messwerte über einen bestimmten Zeitraum berechnen, z. B. einen 30-Minuten-Durchschnitt, indem Sie die erforderlichen Daten während der Abfrage im Arbeitsspeicher speichern.
Kontinuierliche Abfragen unterstützen die folgenden zustandsorientierten Vorgänge:
Autorisierung
Die Google Cloud -Zugriffstokens, die beim Ausführen von Jobs für kontinuierliche Abfragen verwendet werden, haben eine Gültigkeitsdauer (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 ausgeführt werden, müssen aber dennoch 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 Vorabversion beibehalten.
Kontinuierliche Abfragen unterstützen jetzt einige Arten von
JOINs, Aggregationen und Fensteraggregationen, diese sind jedoch auf bestimmte zustandsorientierte Vorgänge beschränkt. Nicht alle Arten von zustandsorientierten Vorgängen werden unterstützt. Die folgenden SQL-Funktionen können in einer kontinuierlichen Abfrage nur verwendet werden, wenn sie als unterstützter zustandsorientierter Vorgang aufgeführt sind:
Die folgenden Abfrageoperatoren:
Set-Operatoren für Abfragen, mit Ausnahme von
UNION ALL.Andere BigQuery ML-Funktionen als die unter Unterstützte Funktionen aufgeführten
DDL-Anweisungen (Data Definition Language, Datendefinitionssprache)
Anweisungen der Datenbearbeitungssprache (DML), mit Ausnahme von
INSERT.EXPORT DATA-Anweisungen, die nicht auf Bigtable, Pub/Sub oder Spanner abzielen.
Kontinuierliche Abfragen unterstützen die folgenden Datenquellen nicht:
- Externe Tabellen.
- Ansichten des Informationsschemas
- Platzhaltertabellen
- Change Data Capture (CDC)-Upsert-Daten.
- Materialisierte Ansichten
- Ansichten, bei denen die zugrunde liegende SQL-Abfrage nicht unterstützte Features wie benutzerdefinierte Funktionen, externe Tabellen oder CDC-fähige Tabellen verwendet.
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 Bigtable-, Spanner- oder Pub/Sub-Ressourcen als Ziel verwenden, die sich innerhalb derselben regionalen Grenze von Google Cloudbefinden wie das BigQuery-Dataset, das die abgefragte Tabelle enthält. Diese Einschränkung gilt nicht, wenn Daten in globale Pub/Sub-Endpunkte exportiert werden. Weitere Informationen zum Exportieren in eine Routingrichtlinie für ein Bigtable-Anwendungsprofil finden Sie unter Überlegungen zum Standort.
Sie können eine kontinuierliche Abfrage nicht über einen Daten-Canvas ausführen.
Sie können die in einer kontinuierlichen Abfrage verwendete SQL-Anweisung nicht ändern, während der kontinuierliche Abfragejob ausgeführt wird. Weitere Informationen finden Sie unter SQL einer kontinuierlichen Abfrage ändern.
Wenn ein kontinuierlicher Abfragejob bei der Verarbeitung eingehender Daten in Verzug gerät und eine Ausgabewasserzeichen-Verzögerung 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 mit einem Dienstkonto konfigurierte kontinuierliche Abfrage kann bis zu 150 Tage lang ausgeführt werden. Wenn die maximale Abfragelaufzeit erreicht ist, schlägt die Abfrage fehl und die Verarbeitung eingehender Daten wird beendet.
Obwohl kontinuierliche Abfragen mit BigQuery-Zuverlässigkeitsfeatures erstellt werden, können gelegentlich vorübergehende Probleme auftreten. Probleme können dazu führen, dass Ihre kontinuierliche Abfrage automatisch neu verarbeitet wird, was zu doppelten Daten in der Ausgabe der kontinuierlichen Abfrage führen kann. Entwerfen Sie Ihre nachgelagerten Systeme so, dass sie solche Szenarien verarbeiten können.
Reservierungseinschränkungen
- Sie müssen eine Reservierung für die Enterprise- oder Enterprise Plus-Version mit dem Zuweisungstyp
CONTINUOUSerstellen, um kontinuierliche Abfragen auszuführen. Kontinuierliche Abfragen unterstützen das On-Demand-Computing-Abrechnungsmodell nicht. - Wenn Sie eine
CONTINUOUS-Reservierungszuweisung erstellen, ist die zugehörige Reservierung auf maximal 500 Slots beschränkt. Sie können eine Erhöhung dieses Limits anfordern, indem Sie sich an bq-continuous-queries-feedback@google.com wenden. - Sie können keine Reservierungszuweisung erstellen, die einen anderen Jobtyp in derselben Reservierung wie eine Reservierungszuweisung für kontinuierliche Abfragen verwendet.
BigQuery bestimmt die Anzahl der kontinuierlichen Abfragen, die pro Projekt gleichzeitig ausgeführt werden können, anhand der konfigurierten Größe der Reservierungszuweisung, die den Jobtyp
CONTINUOUSverwendet. Damit neue Jobs zugelassen werden, ist in BigQuery ein Schwellenwert von 10 Slots pro kontinuierlichem Abfragejob erforderlich. Die Abfrage verbraucht während der normalen Ausführung nicht unbedingt alle 10 Slots. Dieser Schwellenwert sorgt dafür, dass jede laufende kontinuierliche Abfrage genügend Baseline-Rechenkapazität hat, um plötzliche Spitzen im eingehenden Datenvolumen zu bewältigen, ohne ins Hintertreffen zu geraten oder die Verarbeitung mit geringer Latenz zu beeinträchtigen.Damit Ihre Abfragen erfolgreich zugelassen werden, ohne dass die Limits für die Nebenläufigkeit erreicht werden, empfehlen wir die Verwendung von Slot-Autoscaling. Mit Autoscaling wird die Slot-Gesamtnutzung 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 Ihre 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 gestartet wurde, wartet sie aktiv auf eingehende Daten, 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, verbraucht jedoch voraussichtlich eine minimale Anzahl von Slots, in der Regel etwa einen Slot.
Freigabe inaktiver Slots
Kontinuierliche Abfragen können die Freigabe inaktiver Slots verwenden, um ungenutzte Slot-Ressourcen mit anderen Reservierungen und Jobtypen zu teilen.
- Eine
CONTINUOUS-Reservierungszuweisung ist weiterhin erforderlich, um eine kontinuierliche Abfrage auszuführen. Sie können sich nicht ausschließlich auf inaktive Slots aus anderen Reservierungen verlassen. Daher ist für eineCONTINUOUS-Reservierungszuweisung entweder eine Referenz für Slots ungleich null oder eine Autoscaling-Konfiguration für Slots 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
Kontinuierliche Abfragen können die fluide Skalierung von BigQuery verwenden.
Für kontinuierliche Abfragen gelten die BigQuery-Preise für Kapazitätsberechnung, 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 unter BigQuery-Preise angegebenen Tarifen abgerechnet.
Die Nutzung anderer Dienste, die Ergebnisse kontinuierlicher Abfragen empfangen oder während der Verarbeitung kontinuierlicher Abfragen aufgerufen werden, wird zu den für diese Dienste veröffentlichten Preisen abgerechnet. 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 Slot-Schätzung für kontinuierliche Abfragen im Voraus oft nicht möglich. Die Anzahl der Slots, die für Ihre kontinuierlichen Abfragen erforderlich sind, hängt von einer Kombination mehrerer Faktoren ab:
- Die Anzahl der gleichzeitig ausgeführten kontinuierlichen Abfragen.
- Die Komplexität der SQL-Anweisung.
- Die Verwendung von zustandsorientierten Verarbeitungsfunktionen, einschließlich Fensterdauern,
JOINs und Aggregationen. - Die Rate oder Geschwindigkeit eingehender Daten.
- Die Struktur und Größe der aufgenommenen Daten.
Konzeptionell können Sie Ihren gesamten Slot-Bedarf als Funktion Ihrer kontinuierlichen Abfragearbeitslast schätzen:
Geschätzte Slots ≈ Anzahl der kontinuierlichen Abfragen x ∑ (Datenrate x Abfragekomplexität)
Da die tatsächliche Slot-Nutzung stark von Ihrer individuellen Arbeitslast und Ihren Datenmustern abhängt, ist die genaueste Methode zur Kostenschätzung das Monitoring eines laufenden Jobs. Sie können die maximale Slot-Nutzung einer isolierten kontinuierlichen Abfrageausführung mithilfe von INFORMATION_SCHEMA-Ansichten messen. Eine ausführliche Anleitung und Beispielabfragen zum Erfassen der Slot-Nutzung im Zeitverlauf finden Sie unter Informationen zum Slot-Verbrauch ansehen.