Ansicht SEARCH_INDEXES
Die Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES enthält eine Zeile für jeden Suchindex in einem Dataset.
Erforderliche Berechtigungen
Zum Aufrufen der Metadaten des Suchindex benötigen Sie die Berechtigung bigquery.tables.get oder bigquery.tables.list der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) für die Tabelle mit dem Index. Jede der folgenden vordefinierten IAM-Rollen enthält mindestens eine der folgenden Berechtigungen:
roles/bigquery.adminroles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.dataViewerroles/bigquery.metadataViewerroles/bigquery.user
Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.
Schema
Wenn Sie die AnsichtINFORMATION_SCHEMA.SEARCH_INDEXES abfragen, wird im Ergebnis jeder Suchindex in einem Dataset in einer eigenen Zeile dargestellt.
Die Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES hat das folgende Schema:
| Spaltenname | Datentyp | Wert |
|---|---|---|
index_catalog |
STRING |
Der Name des Projekts, zu dem das Dataset gehört. |
index_schema |
STRING |
Der Name des Datasets, das den Index enthält. |
table_name |
STRING |
Der Name der Basistabelle, für die der Index erstellt wird. |
index_name |
STRING |
Der Name des Index. |
index_status |
STRING |
Der Status des Index: ACTIVE, PENDING
DISABLEMENT, TEMPORARILY DISABLED oder
PERMANENTLY DISABLED.
|
creation_time |
TIMESTAMP |
Der Zeitpunkt, zu dem der Index erstellt wurde. |
last_modification_time |
TIMESTAMP |
Der Zeitpunkt der letzten Änderung der Indexkonfiguration. Beispiel: Löschen einer indexierten Spalte. |
last_refresh_time |
TIMESTAMP |
Der Zeitpunkt der letzten Indexierung der Tabellendaten. Der Wert NULL bedeutet, dass der Index noch nicht verfügbar ist. |
disable_time |
TIMESTAMP |
Die Zeitpunkt, zu dem der Indexstatus auf DISABLED gesetzt wurde. Der Wert ist NULL, wenn der Indexstatus nicht DISABLED ist. |
disable_reason |
STRING |
Der Grund für die Deaktivierung des Index. NULL, wenn der Indexstatus nicht DISABLED ist. |
DDL |
STRING |
Die DDL-Anweisung, die zum Erstellen des Index verwendet wird. |
coverage_percentage |
INTEGER |
Der ungefähre Prozentsatz der indexierten Tabellendaten. 0 % bedeutet, dass der Index in einer SEARCH-Abfrage nicht verwendet werden kann, auch wenn einige Daten bereits indexiert wurden. |
unindexed_row_count |
INTEGER |
Die Anzahl der Zeilen in der Basistabelle, die nicht indexiert sind. |
total_logical_bytes |
INTEGER |
Die Anzahl der abrechenbaren logischen Byte für den Index. |
total_storage_bytes |
INTEGER |
Die Anzahl der abrechenbaren Speicherbyte für den Index. |
analyzer |
STRING |
Der Textanalysator, der zum Generieren von Tokens für den Suchindex verwendet werden soll. |
Aus Stabilitätsgründen empfehlen wir, Spalten in Ihren Informationsschema-Abfragen explizit aufzulisten, anstatt ein Platzhalterzeichen (SELECT *) zu verwenden. Wenn Sie Spalten explizit auflisten, wird verhindert, dass Abfragen fehlschlagen, wenn sich das zugrunde liegende Schema ändert.
Bereich und Syntax
Für Abfragen dieser Ansicht muss ein Dataset-Qualifizierer verwendet werden. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:
| Ansichtsname | Ressourcenbereich | Regionsbereich |
|---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEXES |
Dataset-Ebene | Dataset-Speicherort |
-
Optional:
PROJECT_ID: die ID Ihres Google Cloud -Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet. -
DATASET_ID: die ID Ihres Datasets. Weitere Informationen finden Sie unter Dataset-Qualifier.
Beispiel
-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEXES;
Beispiel
Das folgende Beispiel zeigt alle aktiven Suchindexe für Tabellen im Dataset my_dataset, das sich im Projekt my_project befindet. Sie enthält die Namen, die zum Erstellen verwendeten DDL-Anweisungen, den Deckungsprozentsatz und den Textanalysator. Ist eine indexierte Basistabelle kleiner als 10 GB, wird der Index nicht ausgefüllt. In diesem Fall ist coverage_percentage 0.
SELECT table_name, index_name, ddl, coverage_percentage, analyzer
FROM my_project.my_dataset.INFORMATION_SCHEMA.SEARCH_INDEXES
WHERE index_status = 'ACTIVE';
Die Ergebnisse sollten so aussehen:
+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+ | table_name | index_name | ddl | coverage_percentage | analyzer | +-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+ | small_table | names_index | CREATE SEARCH INDEX `names_index` ON `my_project.my_dataset.small_table`(names) | 0 | NO_OP_ANALYZER | | large_table | logs_index | CREATE SEARCH INDEX `logs_index` ON `my_project.my_dataset.large_table`(ALL COLUMNS) | 100 | LOG_ANALYZER | +-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+
Fehlerbehebung
Wenn Sie diese Ansicht aktivieren möchten, können Sie den Wert von enable_info_schema_storage in Ihrem Projekt oder Ihrer Organisation auf TRUE festlegen. Weitere Informationen zum Verwalten Ihrer Konfiguration finden Sie unter Konfigurationseinstellungen verwalten.
Wenn Sie diese Einstellung nicht konfiguriert haben, wird der folgende Fehler angezeigt:
INFORMATION_SCHEMA.SEARCH_INDEXES hasn't been enabled for project <myproject>. Consider using one of the following SQL statements to enable data collection: ALTER PROJECT `<myproject>` SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) Or to enable for the entire organization: ALTER ORGANIZATION SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) After enabling, please allow around 1 day for the complete historical data to become available.
Führen Sie die in der Fehlermeldung beschriebenen SQL-Anweisungen aus, um die Ansicht zu aktivieren.