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. BI Engine kann SQL-Abfragen von jeder Quelle beschleunigen, einschließlich solcher, die von Datenvisualisierungstools geschrieben wurden, und kann im Cache gespeicherte Tabellen für eine kontinuierliche Optimierung verwalten. So können Sie die Abfrageleistung ohne manuelle Feinabstimmung oder Data Tiering verbessern. Sie können Tabellen clustern und partitionieren, um die BI Engine-Leistung für große Tabellen weiter zu optimieren.

Wenn Ihr Dashboard beispielsweise nur die Daten des letzten Quartals anzeigt, können Sie Ihre Tabellen nach Zeit partitionieren, sodass nur die neuesten Partitionen in den Speicher geladen werden. Sie können auch die Vorteile von materialisierten Ansichten und BI Engine kombinieren. Dies funktioniert besonders gut, wenn die materialisierten Ansichten verwendet werden, um Daten zu verknüpfen und zu vereinfachen, um ihre Struktur für BI Engine zu optimieren.

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 Standardmechanismen wie REST 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 Speicherzuweisung für jedes Projekt und jede Region separat. Die BI Engine speichert nur die abgefragten, erforderlichen Teile von Spalten und Partitionen im Cache. Mit bevorzugten Tabellen können Sie angeben, für welche Tabellen die BI Engine-Beschleunigung verwendet werden soll.

In den meisten Organisationen wird die BI Engine von einem Abrechnungsadministrator aktiviert, der Kapazität für die BI Engine-Beschleunigung reservieren muss. Weitere Informationen finden Sie unter BI Engine-Kapazität reservieren.

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 Tabellen markieren. Wenn Sie BI Engine verwenden möchten, erstellen Sie 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 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 Looker Studio oder Tableau, einer Clientbibliothek, einer API oder einem ODBC- oder JDBC-Connector ausgeführt werden. Dies kann die Leistung von Dashboards, die über eine integrierte Verbindung (API) oder Connectors mit BigQuery verbunden sind, erheblich verbessern.
  • Sie haben Tabellen, die häufig abgefragt werden: Mit BI Engine können Sie bevorzugte Tabellen beschleunigen. 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-Features, die von BI Engine nicht unterstützt werden: BI Engine unterstützt die meisten SQL-Funktionen und ‑Operatoren. Zu den nicht von BI Engine unterstützten Funktionen gehören 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 dafür sorgen möchten, dass eine Gruppe von Abfragen beschleunigt wird, erstellen Sie ein separates Projekt mit einer speziellen BI Engine-Reservierung. Schätzen Sie zuerst die für Ihre Abfragen erforderliche Rechenkapazität ab und legen Sie diese Tabellen dann als bevorzugte Tabellen für BI Engine fest.

Joins minimieren

BI Engine funktioniert am besten mit vorab verknüpften oder vorab aggregierten Daten und mit Abfragen mit einer kleinen Anzahl von Joins. Dies gilt insbesondere, wenn eine Seite des Join groß ist und die anderen 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 Ansichten kombinieren, die Joins ausführen, um eine einzelne große, flache Tabelle zu erzeugen. Auf diese Weise werden nicht für jede Abfrage dieselben Joins ausgeführt. 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 überwachen oder durch Abfragen der Ansichten INFORMATION_SCHEMA.BI_CAPACITIES und INFORMATION_SCHEMA.BI_CAPACITY_CHANGES. 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 RAM 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 Arbeits-Speicher 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 Ansichten hinzufügen. Bevorzugte BI Engine-Tabellen unterstützen nur Tabellen.
  • Abfragen von materialisierte 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 JSON werden nicht unterstützt und nicht von der BI Engine beschleunigt.
  • Abfragen, die auf mehrere Tabellen zugreifen, werden nur beschleunigt, wenn alle Tabellen bevorzugte Tabellen sind. Beispielsweise müssen alle Tabellen in einer Abfrage mit einer JOIN in der Liste der bevorzugten Tabellen enthalten sein, damit sie beschleunigt werden. Wenn nur eine Tabelle nicht in der bevorzugten Liste ist, kann die Abfrage nicht BI Engine verwenden.
  • Öffentliche Datasets werden in der Google Cloud Console nicht unterstützt. Verwenden Sie die API oder die DDL, um eine öffentliche Tabelle als bevorzugte Tabelle hinzuzufügen.

Beschränkungen

BigQuery BI Engine unterliegt den folgenden Einschränkungen.

Joins

BI Engine beschleunigt bestimmte Arten von Join-Abfragen. Die Beschleunigung erfolgt bei Unterabfragen auf Blattebene mit INNER und LEFT OUTER JOINS, bei denen eine große Faktentabelle mit bis zu vier kleineren Dimensionstabellen verknüpft wird. Für Tabellen mit kleinen Dimensionen gelten die folgenden Einschränkungen:

  • Weniger als 5 Millionen Zeilen
  • Größenlimit:
    • Nicht partitionierte Tabellen: 5 GiB oder weniger
    • Partitionierte Tabellen: Referenzierte Partitionen mit maximal 1 GB

Fensterfunktionen

Für Fensterfunktionen, die auch als Analysefunktionen bezeichnet werden, gelten die folgenden Einschränkungen, wenn sie von BigQuery BI Engine beschleunigt werden:

  • Die Eingabephasen werden von BigQuery BI Engine beschleunigt, wenn sie keine Fensterfunktionen haben. In diesem Fall INFORMATION_SCHEMA.JOBS rufen Sie die Berichte bi_engine_statistics auf.acceleration_mode als FULL_INPUT.
  • Die Eingabephasen von Abfragen mit Fensterfunktionen in ihren Eingabephasen werden von BI Engine beschleunigt, können jedoch nicht die im Abschnitt Einschränkungen für BI Engine-Fensterfunktionen beschriebenen Einschränkungen haben. In diesem Fall werden die Eingabephasen oder die vollständige Abfrage in BI Engine ausgeführt. In diesem Fall INFORMATION_SCHEMA.JOBS rufen Sie die Berichte bi_engine_statistics auf.acceleration_mode als FULL_INPUT oder FULL_QUERY.

Weitere Informationen zum Feld BiEngineStatistics finden Sie in der Jobreferenz.

Einschränkungen für BI Engine-Fensterfunktionen

Abfragen mit Fensterfunktionen werden nur in der 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 enthält weniger als fünf Millionen Zeilen.
  • Die Abfrage enthält keine JOIN-Operatoren.
  • Die Größe der gescannten Tabelle mal 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_table hat nur einen Operator der Fensterfunktion.
  • SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table hat zwei Operatoren für Fensterfunktionen, da die beiden Funktionen unterschiedliche OVER-Klauseln 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 die OVER-Klauseln identisch sind.

Unterstützte Fensterfunktionen

Die folgenden referenzierten Fensterfunktionen werden unterstützt:

  • ANY_VALUE
  • AVG
  • BIT_AND
  • BIT_OR
  • BIT_XOR
  • CORR
  • COUNT
  • COUNTIF
  • COVAR_POP
  • COVAR_SAMP
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • LOGICAL_AND
  • LOGICAL_OR
  • MAX
  • MIN
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • ROW_NUMBER
  • ST_CLUSTERDBSCAN
  • STDDEV_POP
  • STDDEV_SAMP
  • STDDEV
  • STRING_AGG
  • SUM
  • VAR_POP
  • VAR_SAMP
  • VARIANCE

Wenn Fensterfunktionen nicht unterstützt werden, wird möglicherweise der folgende Fehler angezeigt:

Die Analysefunktion ist nicht mit anderen Operatoren kompatibel oder ihre Eingaben sind zu groß.

Weitere Einschränkungen der BI Engine

Die BI Engine-Beschleunigung ist für die folgenden Features nicht verfügbar:

  • JavaScript-UDFs
  • Externe Tabellen
  • Abfrage von JSON-Daten – Fehlermeldung: Der native JSON-Typ wird nicht unterstützt
  • Ergebnisse in eine permanente BigQuery-Tabelle schreiben
  • Tabellen, die Upserts mit BigQuery Change Data Capture enthalten
  • 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

Umgehung für nicht unterstützte Funktionen

Einige SQL-Funktionen werden in BigQuery BI Engine nicht unterstützt. Es gibt jedoch eine Problemumgehung:

  1. Schreiben Sie eine Abfrage in BigQuery.
  2. Speichern Sie die Ergebnisse der Abfrage in einer Tabelle.
  3. Planen Sie Ihre Abfrage, um die Tabelle regelmäßig zu aktualisieren. Eine stündliche oder tägliche Aktualisierungsrate funktioniert am besten. Eine Aktualisierung jede Minute kann den Cache zu häufig ungültig machen.
  4. 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 zur BI Engine-Preisgestaltung finden Sie auf der Seite BigQuery Preisgestaltung.

Nächste Schritte