Visualizzazione SEARCH_INDEX_COLUMNS
La visualizzazione INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
contiene una riga per ogni colonna indicizzata per la ricerca in ogni tabella di un set di dati.
Autorizzazioni obbligatorie
Per visualizzare i metadati dell'indice di ricerca, devi disporre dell'autorizzazione IAM (Identity and Access Management) bigquery.tables.get
o bigquery.tables.list
per la tabella con l'indice. Ciascuno dei seguenti ruoli IAM predefiniti include almeno una di queste autorizzazioni:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.dataViewer
roles/bigquery.metadataViewer
roles/bigquery.user
Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.
Schema
Quando esegui una query sulla vistaINFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
, i risultati della query contengono una riga per ogni colonna indicizzata in ogni tabella di un set di dati.
La vista INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
ha lo schema seguente:
Nome colonna | Tipo di dati | Valore | |
---|---|---|---|
index_catalog |
STRING |
Il nome del progetto che contiene il set di dati. | |
index_schema |
STRING |
Il nome del set di dati contenente l'indice. | |
table_name |
STRING |
Il nome della tabella di base su cui viene creato l'indice. | |
index_name |
STRING |
Il nome dell'indice. | |
index_column_name |
STRING |
Il nome della colonna indicizzata di primo livello. | |
index_field_path |
STRING |
Il percorso completo del campo indicizzato espanso, a partire dal nome della colonna. I campi sono separati da un punto. |
Ambito e sintassi
Le query su questa vista devono avere un qualificatore del set di dati. La tabella seguente illustra l'ambito della regione per questa visualizzazione:
Visualizza nome | Ambito risorsa | Ambito regione |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS |
A livello di set di dati | Posizione del set di dati |
Facoltativo: PROJECT_ID
: l'ID del tuo progetto Google Cloud. Se non viene specificato, viene utilizzato il progetto predefinito.
DATASET_ID
: l'ID del set di dati. Per ulteriori informazioni, consulta Qualificatore del set di dati.
Esempio
-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS;
Esempi
L'esempio seguente crea un indice di ricerca in tutte le colonne di my_table
.
CREATE TABLE dataset.my_table( a STRING, b INT64, c STRUCT <d INT64, e ARRAY<STRING>, f STRUCT<g STRING, h INT64>>) AS SELECT 'hello' AS a, 10 AS b, (20, ['x', 'y'], ('z', 30)) AS c; CREATE SEARCH INDEX my_index ON dataset.my_table(ALL COLUMNS);
La seguente query estrae informazioni sui campi indicizzati.
index_field_path
indica quale campo di una colonna è indicizzato. Questo valore è diverso da index_column_name
solo nel caso di un
STRUCT
, in cui viene fornito il percorso completo del campo indicizzato. In questo esempio, la colonna c
contiene un campo ARRAY<STRING>
e
e un altro STRUCT
chiamato f
che contiene un campo STRING
g
, ciascuno dei quali è indicizzato.
SELECT table_name, index_name, index_column_name, index_field_path
FROM my_project.dataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
Il risultato è simile al seguente:
+------------+------------+-------------------+------------------+ | table_name | index_name | index_column_name | index_field_path | +------------+------------+-------------------+------------------+ | my_table | my_index | a | a | | my_table | my_index | c | c.e | | my_table | my_index | c | c.f.g | +------------+------------+-------------------+------------------+
La seguente query unisce la vista INFORMATION_SCHEMA.SEARCH_INDEX_COUMNS
alle viste INFORMATION_SCHEMA.SEARCH_INDEXES
e INFORMATION_SCHEMA.COLUMNS
per includere lo stato dell'indice di ricerca e il tipo di dati di ogni colonna:
SELECT index_columns_view.index_catalog AS project_name, index_columns_view.index_SCHEMA AS dataset_name, indexes_view.TABLE_NAME AS table_name, indexes_view.INDEX_NAME AS index_name, indexes_view.INDEX_STATUS AS status, index_columns_view.INDEX_COLUMN_NAME AS column_name, index_columns_view.INDEX_FIELD_PATH AS field_path, columns_view.DATA_TYPE AS data_type FROM mydataset.INFORMATION_SCHEMA.SEARCH_INDEXES indexes_view INNER JOIN mydataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS index_columns_view ON indexes_view.TABLE_NAME = index_columns_view.TABLE_NAME AND indexes_view.INDEX_NAME = index_columns_view.INDEX_NAME LEFT OUTER JOIN mydataset.INFORMATION_SCHEMA.COLUMNS columns_view ON indexes_view.INDEX_CATALOG = columns_view.TABLE_CATALOG AND indexes_view.INDEX_SCHEMA = columns_view.TABLE_SCHEMA AND index_columns_view.TABLE_NAME = columns_view.TABLE_NAME AND index_columns_view.INDEX_COLUMN_NAME = columns_view.COLUMN_NAME ORDER BY project_name, dataset_name, table_name, column_name;
Il risultato è simile al seguente:
+------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+ | project | dataset | table | index_name | status | column_name | field_path | data_type | +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+ | my_project | my_dataset | my_table | my_index | ACTIVE | a | a | STRING | | my_project | my_dataset | my_table | my_index | ACTIVE | c | c.e | STRUCT<d INT64, e ARRAY<STRING>, f STRUCT<g STRING, h INT64>> | | my_project | my_dataset | my_table | my_index | ACTIVE | c | c.f.g | STRUCT<d INT64, e ARRAY<STRING>, f STRUCT<g STRING, h INT64>> | +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+