Einführung in BI Engine
BigQuery BI Engine ist ein schneller In-Memory-Analysedienst, der viele SQL-Abfragen in BigQuery beschleunigt. Dazu werden die am häufigsten verwendeten Daten auf intelligente Weise im Cache gespeichert. Durch das Caching können Sie die Abfrageleistung ohne manuelle Feinabstimmung oder Data Tiering verbessern. Sie können Tabellen clustern und Tabellen partitionieren, um die BI Engine-Leistung für große Tabellen weiter zu optimieren.
Wenn Ihr Dashboard beispielsweise nur Daten aus dem letzten Quartal anzeigt, können Sie Ihre Tabellen nach Zeit partitionieren, sodass nur die neuesten Partitionen in den Arbeitsspeicher geladen werden. Anschließend können Sie materialisierte Ansichten verwenden, um Ihre Daten zu verknüpfen und zu vereinfachen, und dann die resultierende Ansicht und Basistabelle als bevorzugte Tabelle markieren, um sicherzustellen, dass die BI Engine-Beschleunigung nur auf die benötigten Daten angewendet wird.
BI Engine bietet folgende Vorteile:
- BigQuery API-Kompatibilität: BI Engine ist direkt in die BigQuery API eingebunden. Jede BI-Lösung oder benutzerdefinierte Anwendung, die über Standard Mechanismen wie die REST API oder JDBC- und ODBC-Treiber mit der BigQuery API arbeitet, kann BI Engine ohne Änderungen verwenden.
- Vektorisierte Laufzeit: Die Verwendung der vektorisierten Verarbeitung in einer Ausführungs-Engine ermöglicht eine effizientere Nutzung der modernen CPU-Architektur, da immer mehrere Datenbatches ausgeführt werden. BI Engine verwendet auch erweiterte Datencodierungen, insbesondere die Ausführungslänge des Wörterbuchs, um die in der speicherinternen Ebene gespeicherten Daten weiter zu komprimieren.
- Nahtlose Integration: BI Engine funktioniert mit BigQuery-Features und -Metadaten, einschließlich autorisierter Ansichten, Spaltensicherheit sowie Datenmaskierung.
- Reservierungszuweisungen: BI Engine-Reservierungen verwalten die Arbeitsspeicherzuweisung für jedes Projekt und jede Region separat. BI Engine speichert nur die abgefragten Teile von Spalten und Partitionen im Cache. Sie können mit bevorzugten Tabellen angeben, welche Tabellen die BI Engine Beschleunigung verwenden sollen.
In den meisten Organisationen wird BI Engine von einem Abrechnungs administrator aktiviert, der mit einer entsprechenden Edition Kapazität für die BI Engine-Beschleunigung reserviert. Weitere Informationen finden Sie unter BI Engine-Kapazität reservieren.
BI Engine-Architektur
BI Engine lässt sich über die BigQuery API in BI-Tools wie Looker, Data Studio, Tableau und Power BI sowie in benutzerdefinierte Anwendungen einbinden, um die Datenexploration und -analyse zu beschleunigen:

BI Engine-Anwendungsfälle
BI Engine kann viele SQL-Abfragen erheblich beschleunigen, einschließlich solcher, die für BI-Dashboards verwendet werden. Beschleunigen ist am effektivsten, wenn Sie die Tabellen ermitteln, die für Ihre Abfragen wichtig sind, und diese dann als bevorzugte Tabellenfestlegen. Erstellen Sie zur Verwendung von BI Engine eine Reservierung in einer Region und geben Sie die Größe an. Sie können BigQuery anhand der Nutzungsmuster des Projekts festlegen lassen, welche Tabellen im Cache gespeichert werden, oder bestimmte Tabellen angeben, um zu verhindern, dass anderer Traffic die Beschleunigung stört.
BI Engine ist in folgenden Anwendungsfällen nützlich:
- Sie verwenden BI-Tools zum Analysieren Ihrer Daten: BI Engine beschleunigt BigQuery-Abfragen, unabhängig davon, ob sie in der BigQuery-Konsole, einem BI-Tool wie Data Studio oder Tableau, einer Clientbibliothek, einer API oder einem ODBC- oder JDBC-Connector ausgeführt werden. Dadurch kann die Leistung von Dashboards, die über eine integrierte Verbindung (API) oder Connectors mit BigQuery verbunden sind, erheblich verbessert werden.
- Sie haben häufig abgefragte Tabellen: Mit BI Engine können Sie bevorzugte Tabellen festlegen, die beschleunigt werden sollen. Dies ist hilfreich, wenn Sie eine Teilmenge von Tabellen haben, die häufiger abgefragt oder für Dashboards mit hoher Sichtbarkeit verwendet werden.
BI Engine erfüllt in den folgenden Fällen möglicherweise nicht Ihre Anforderungen:
- Sie verwenden in Ihren Abfragen Platzhalter: Abfragen, die auf Platzhaltertabellen verweisen, werden von BI Engine nicht unterstützt und profitieren nicht von einer Beschleunigung.
- Sie benötigen BigQuery-Funktionen, die von BI Engine nicht unterstützt werden: BI Engine unterstützt zwar die meisten SQL-Funktionen und -Operatoren, nicht unterstützte Funktionen sind unter anderem externe Tabellen, Sicherheit auf Zeilenebene und benutzerdefinierte Nicht-SQL-Funktionen.
Überlegungen zu BI Engine
Berücksichtigen Sie bei der Konfiguration von BI Engine Folgendes:
Für bestimmte Abfragen beschleunigen
Wenn Sie sicherstellen möchten, dass eine bestimmte Gruppe von Abfragen beschleunigt wird, erstellen Sie ein separates Projekt mit einer dedizierten BI Engine-Reservierung. Schätzen Sie zuerst die für Ihre Abfragen erforderliche Rechenkapazität und legen Sie diese Tabellen dann als bevorzugte Tabellen für BI Engine fest.
Joins minimieren
BI Engine funktioniert am besten für vorab verknüpfte oder vorab aggregierte Daten und für Abfragen mit einer kleinen Anzahl von Joins. Dies gilt insbesondere, wenn eine Seite des Join groß ist und die anderen Seiten wesentlich kleiner sind, z. B. wenn Sie eine große Faktentabelle abfragen, die mit kleineren Dimensionstabellen verknüpft ist. Sie können BI Engine mit materialisierten Ansichtenkombinieren, die Joins ausführen, um eine einzelne große, flache Tabelle zu erzeugen. So müssen nicht für jede Abfrage dieselben Joins ausgeführt werden. Für eine optimale Abfrageleistung werden veraltete materialisierte Ansichten empfohlen.
Auswirkungen von BI Engine verstehen
Informationen zur Nutzung von BI Engine finden Sie unter
BI Engine mit Cloud Monitoring beobachten,
oder durch Abfragen der
INFORMATION_SCHEMA.BI_CAPACITIES
und
INFORMATION_SCHEMA.BI_CAPACITY_CHANGES
Ansichten. Deaktivieren Sie die Option Im Cache gespeicherte Ergebnisse verwenden in BigQuery, um einen möglichst genauen Vergleich zu erhalten. Weitere
Informationen finden Sie unter Im Cache gespeicherte Abfrageergebnisse verwenden.
Bevorzugte Tabellen
Mit bevorzugten BI Engine-Tabellen können Sie die BI Engine-Beschleunigung auf eine bestimmte Gruppe von Tabellen beschränken. Abfragen von allen anderen Tabellen verwenden reguläre BigQuery-Slots. Mit bevorzugten Tabellen können Sie beispielsweise nur die Tabellen und Dashboards beschleunigen, die Sie für Ihr Unternehmen als wichtig eingestuft haben.
Wenn im Projekt nicht genügend Arbeitsspeicher vorhanden ist, um alle bevorzugten Tabellen zu speichern, lagert BI Engine Partitionen und Spalten aus, auf die in letzter Zeit nicht zugegriffen wurde. Durch diesen Prozess wird Arbeitsspeicher für neue Abfragen freigegeben, die beschleunigt werden müssen.
Einschränkungen für bevorzugte Tabellen
Für bevorzugte BI Engine-Tabellen gelten folgende Einschränkungen:
- Sie können der Liste der bevorzugten Tabellenreservierung keine logischen Ansichten hinzufügen. Bevorzugte BI Engine-Tabellen unterstützen nur Tabellen.
- Abfragen von materialisierten Ansichten werden nur beschleunigt, wenn sich sowohl die materialisierten Ansichten als auch ihre Basistabellen in der Liste der bevorzugten Tabellen befinden.
- Die Angabe von Partitionen oder Spalten zur Beschleunigung wird nicht unterstützt.
- Spalten vom Typ
JSONwerden nicht unterstützt und nicht von BI Engine beschleunigt. - Abfragen, die auf mehrere Tabellen zugreifen, werden nur beschleunigt, wenn alle Tabellen bevorzugte Tabellen sind. Alle Tabellen in einer Abfrage mit einem
JOINmüssen sich beispielsweise in der Liste der bevorzugten Tabellen befinden, damit sie beschleunigt werden. Wenn auch nur eine Tabelle nicht in der Liste der bevorzugten Tabellen enthalten ist, kann die Abfrage BI Engine nicht verwenden. - Öffentliche Datasets werden in der Google Cloud Konsole nicht unterstützt. Verwenden Sie die API oder die DDL, um eine öffentliche Tabelle als bevorzugte Tabelle hinzuzufügen.
Abfrageoptimierung und -beschleunigung
BigQuery und entsprechend auch BI Engine teilen einen Abfrageplan in mehrere Unterabfragen auf. Eine Unterabfrage besteht aus Vorgängen wie dem Scannen, Filtern, Berechnen oder Aggregieren von Daten und dient als Ausführungseinheit.
Während alle unterstützten BigQuery-SQL-Abfragen mit BI Engine korrekt ausgeführt werden, optimiert BI Engine bestimmte Phasen selektiv:
- Unterabfragen auf Blattebene: BI Engine ist am besten für
Unterabfragen auf Blattebene optimiert, die Daten aus dem Speicher scannen und Vorgänge
wie Filtern, Berechnen, Aggregieren, Sortieren (
ORDER BY) und unterstützte Joins ausführen. - Fallback-Ausführung: Abfragephasen oder Unterabfragen, die nicht von BI Engine beschleunigt werden können, werden automatisch auf Standard-BigQuery-Ausführungsslots zurückgesetzt, ohne dass die Abfrage fehlschlägt.
Aufgrund dieser selektiven Optimierung profitieren einfachere Business-Intelligence- oder Dashboard-Abfragen am meisten von BI Engine, da der Großteil der Ausführungszeit für die Verarbeitung von Rohdaten in Unterabfragen auf Blattebene aufgewendet wird.
Beschränkungen
Wenn Sie BI Engine verwenden möchten, muss Ihre Organisation BI Engine-Kapazität mit einer unterstützten Edition reservieren. Weitere Informationen finden Sie unter BigQuery-Editionen.
Außerdem unterliegt BI Engine Beschränkungen, die in den folgenden Abschnitten beschrieben werden.
Joins
BI Engine beschleunigt bestimmte Arten von Join-Abfragen. Die Beschleunigung erfolgt bei Unterabfragen auf Blattebene mit INNER- und LEFT OUTER-Joins, wobei eine große Faktentabelle mit bis zu vier kleineren Dimensionstabellen verknüpft wird. Für kleine Dimensionstabellen gelten die folgenden Einschränkungen:
- Weniger als 5 Millionen Zeilen
- Größenbeschränkungen:
- Nicht partitionierte Tabellen: maximal 5 GiB
- Partitionierte Tabellen: referenzierte Partitionen maximal 1 GiB
Fensterfunktionen
Fensterfunktionen, die auch als Analysefunktionen bezeichnet werden, unterliegen den folgenden Einschränkungen, wenn sie von BI Engine beschleunigt werden:
- Eingabephasen ohne Fensterfunktionen werden von BI Engine beschleunigt. In diesem Fall wird in der Ansicht
INFORMATION_SCHEMA.JOBSfürbi_engine_statistics.acceleration_modeder WertFULL_INPUTgemeldet. - Eingabephasen von Abfragen mit Fensterfunktionen werden von
BI Engine beschleunigt, wenn sie die
Einschränkungen für BI Engine-Fensterfunktionen erfüllen.
In diesem Fall werden die Eingabephasen oder die vollständige Abfrage in BI Engine ausgeführt und in der Ansicht
INFORMATION_SCHEMA.JOBSwird fürbi_engine_statistics.acceleration_modeder WertFULL_INPUToderFULL_QUERYgemeldet.
Weitere Informationen zum Feld BiEngineStatistics finden Sie in der
Jobreferenz.
Einschränkungen für BI Engine-Fensterfunktionen
Abfragen mit Fensterfunktionen werden nur in BI Engine ausgeführt, wenn alle folgenden Bedingungen erfüllt sind:
- Bei der Abfrage wird genau eine Tabelle gescannt.
- Die Tabelle ist nicht partitioniert.
- Die Tabelle hat weniger als 5 Millionen Zeilen.
- Die Abfrage enthält keine
JOIN-Operatoren. - Die Größe der gescannten Tabelle multipliziert mit der Anzahl der Operatoren der Fensterfunktion überschreitet 300 MiB nicht.
Zwei Fensterfunktionen mit identischen OVER-Klauseln und denselben direkten Eingaben können denselben Fensterfunktionsoperator nutzen. Beispiel:
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_tablehat nur einen Operator für Fensterfunktionen.SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_tablehat zwei Operatoren für Fensterfunktionen, da die beiden Funktionen unterschiedlicheOVERKlauseln haben.SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table)hat zwei Operatoren für Fensterfunktionen, da die beiden Funktionen unterschiedliche direkte Eingaben haben, obwohl dieOVERKlauseln identisch sind.
Unterstützte Fensterfunktionen
Die folgenden Fensterfunktionen werden unterstützt:
ANY_VALUEAVGBIT_ANDBIT_ORBIT_XORCORRCOUNTCOUNTIFCOVAR_POPCOVAR_SAMPCUME_DISTDENSE_RANKFIRST_VALUELAGLAST_VALUELEADLOGICAL_ANDLOGICAL_ORMAXMINNTH_VALUENTILEPERCENT_RANKPERCENTILE_CONTPERCENTILE_DISCRANKROW_NUMBERST_CLUSTERDBSCANSTDDEV_POPSTDDEV_SAMPSTDDEVSTRING_AGGSUMVAR_POPVAR_SAMPVARIANCE
Wenn Fensterfunktionen nicht unterstützt werden, wird möglicherweise die folgende Fehlermeldung angezeigt:
Analytic function is incompatible with other operators or its inputs are too large
Nicht unterstützte BI Engine-Beschränkungen
Die BI Engine-Beschleunigung ist für die folgenden Funktionen nicht verfügbar:
- Benutzerdefinierte JavaScript-Funktionen und Remote-Funktionen.
- Externe Tabellen, einschließlich BigLake-Tabellen.
- Abfragen von
JSON-Daten (Fehlermeldung:JSON native type is not supported.). - Abfragen von
RANGE-Daten (Fehlermeldung:RANGE native type is not supported.). - Ergebnisse in eine permanente BigQuery-Tabelle schreiben.
- Tabellen, die Upserts enthalten, die die BigQuery Change Data Capture-Aufnahme verwenden.
- Transaktionen.
- Abfragen, die mehr als 1 GiB an Daten zurückgeben (für latenzempfindliche Anwendungen wird eine Antwortgröße von weniger als 1 MiB empfohlen).
- Sicherheit auf Zeilenebene.
- Abfragen, die Such- und Vektorsuchfunktionen verwenden (z. B. die
SEARCHFunktion oderVECTOR_SEARCHFunktion) oder die durch Suchindizes oder Vektorindizes optimiert werden. - Rekursive Abfragen mit
RECURSIVE. - BigQuery ML-Abfragen.
Problemumgehung für nicht unterstützte Funktionen
Wenn Ihre Abfrage nicht unterstützte SQL-Funktionen verwendet, können Sie die folgende Problemumgehung verwenden:
- Schreiben Sie eine Abfrage in BigQuery.
- Speichern Sie die Ergebnisse der Abfrage in einer Tabelle.
- Planen Sie Ihre Abfrage, um die Tabelle regelmäßig zu aktualisieren. Eine stündliche oder tägliche Aktualisierungsrate funktioniert am besten. Wenn Sie den Cache jede Minute aktualisieren, wird er möglicherweise zu häufig ungültig.
- Verweisen Sie in leistungskritischen Abfragen auf diese Tabelle.
Kontingente und Limits
Informationen zu Kontingenten und Limits für BI Engine finden Sie unter BigQuery-Kontingente und -Limits.
Preise
Für die Reservierung, die Sie für die BI Engine-Kapazität erstellen, fallen Kosten an. Informationen zu den Preisen von BI Engine finden Sie unter BigQuery-Preise.
Nächste Schritte
- Informationen zum Erstellen einer Reservierung finden Sie unter BI Engine-Kapazität reservieren.
- Informationen zum Festlegen bevorzugter Tabellen finden Sie unter Bevorzugte Tabellen.
- Informationen zum Beobachten der Nutzung finden Sie unter BI Engine mit Cloud Monitoring beobachten.
- Informationen zur Verwendung von BI Engine mit Data Studio und Tableau finden Sie unter Daten mit BI Engine und Tableau analysieren.