Einführung in die Suche in BigQuery
Mit BigQuery-Suchindexen können Sie GoogleSQL verwenden, um bestimmte Datenelemente zu finden, die in unstrukturiertem Text und in semistrukturierten JSON-Daten auftreten, ohne die Tabellenschemas im Voraus kennen zu müssen.
Mit Suchindexen bietet BigQuery einen leistungsstarken Spalten- und Textsuchdienst in einer Plattform, der eine effiziente Zeilensuche ermöglicht, wenn Sie einzelne Datenzeilen suchen müssen. Ein häufiger Anwendungsfall ist die Loganalyse. Beispielsweise können Sie die Datenzeilen, die einem Nutzer für die Berichterstellung zur EU-Datenschutz-Grundverordnung (DSGVO) zugeordnet sind, oder bestimmte Fehlercodes in einer Textnutzlast ermitteln.
BigQuery speichert und verwaltet Ihre Indexe. Wenn Daten in BigQuery verfügbar sind, können Sie sie sofort mit der Funktion SEARCH
oder anderen Operatoren und Funktionen abrufen, z. B. den Gleichheitsoperator (=
), IN
oder LIKE
sowie bestimmte String- und JSON-Funktionen. Informationen zur Optimierung Ihrer Suchanfragen finden Sie in den Best Practices.
Anwendungsfälle
Mit BigQuery-Suchindexen können Sie die folgenden Aufgaben ausführen:
- In BigQuery-Tabellen gespeicherte System-, Netzwerk- oder Anwendungslogs suchen
- Identifizieren von Datenelementen zum Löschen, um regulatorische Prozesse zu erfüllen.
- Fehlerbehebung für Entwickler unterstützen
- Sicherheitsprüfungen durchführen
- Dashboard erstellen, das sehr selektive Suchfilter erfordert
- Vorverarbeitete Daten auf genaue Übereinstimmungen prüfen
Weitere Informationen finden Sie unter Suchindex erstellen und Mit einem Index suchen.
Preise
Die für den Aufbau und die Aktualisierung Ihrer Suchindizes erforderliche Verarbeitung ist kostenlos, wenn die Gesamtgröße der indizierten Tabellen in Ihrem Unternehmen unter dem für Ihre Region geltenden Limit liegt. Wenn Sie die Indexierung über dieses Limit hinaus unterstützen möchten, müssen Sie eine eigene Reservierung für die Ausführung der Indexverwaltungsjobs bereitstellen.
Suchindexe verursachen Speicherkosten, wenn sie aktiv sind.
Die Indexspeichergröße finden Sie in der Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES
.
Rollen und Berechtigungen
Zum Erstellen eines Suchindex benötigen Sie die IAM-Berechtigung bigquery.tables.createIndex
für die Tabelle, in der Sie den Index erstellen. Zum Löschen eines Suchindex benötigen Sie die Berechtigung bigquery.tables.deleteIndex
. Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie benötigen, um mit Suchindexen zu arbeiten:
- BigQuery Dateninhaber (
roles/bigquery.dataOwner
) - BigQuery Datenmitbearbeiter (
roles/bigquery.dataEditor
) - BigQuery Administrator (
roles/bigquery.admin
)
Beschränkungen
- Sie können einen Suchindex nicht direkt für eine Ansicht oder eine materialisierte Ansicht erstellen. Beim Aufrufen der Funktion
SEARCH
für eine Ansicht einer indexierten Tabelle wird jedoch der zugrunde liegende Suchindex verwendet. - Wenn Sie eine Tabelle umbenennen, nachdem Sie einen Suchindex darauf erstellt haben, wird der Index ungültig.
- Die Funktion
SEARCH
ist für Punktabrufe vorgesehen. Die ungenaue Suche, die Rechtschreibkorrektur, Platzhalter und andere Arten von Dokumentsuchen sind nicht verfügbar. - Wenn der Suchindex noch nicht zu 100 % abgedeckt ist, wird Ihnen trotzdem der gesamte in der Ansicht
INFORMATION_SCHEMA.SEARCH_INDEXES
gemeldete Indexspeicher in Rechnung gestellt. - Abfragen, die die Funktion
SEARCH
enthalten, werden von BigQuery BI Engine nicht beschleunigt. Suchindexe werden nicht verwendet, wenn die indexierte Tabelle durch eine DML-Anweisung geändert wurde. Sie können jedoch verwendet werden, wenn das Prädikat, das mit Suchindexen optimiert werden kann, Teil einer Unterabfrage in einer DML-Anweisung ist.
- Ein Suchindex wird in der folgenden Abfrage nicht verwendet:
DELETE FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123');
- Ein Suchindex kann in der folgenden Abfrage verwendet werden:
DELETE FROM my_dataset.other_table WHERE user_id IN ( SELECT user_id FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123') );
Suchindexe werden nicht verwendet, wenn die Abfrage auf materialisierte Ansichten verweist.
Suchindexe werden in einer Transaktionsabfrage mit mehreren Anweisungen nicht verwendet.