Vista SEARCH_INDEX_COLUMNS
A vista INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
contém uma linha para cada coluna indexada pela pesquisa em cada tabela num conjunto de dados.
Autorizações necessárias
Para ver os metadados do índice de pesquisa, precisa da autorização
bigquery.tables.get
ou bigquery.tables.list
de gestão de identidade e de acesso (IAM)
na tabela com o índice. Cada uma das seguintes funções do IAM predefinidas inclui, pelo menos, uma destas autorizações:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.dataViewer
roles/bigquery.metadataViewer
roles/bigquery.user
Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.
Esquema
Quando consulta a vistaINFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
, os resultados da consulta contêm uma linha para cada coluna indexada em cada tabela num conjunto de dados.
A vista INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
tem o seguinte esquema:
Nome da coluna | Tipo de dados | Valor | |
---|---|---|---|
index_catalog |
STRING |
O nome do projeto que contém o conjunto de dados. | |
index_schema |
STRING |
O nome do conjunto de dados que contém o índice. | |
table_name |
STRING |
O nome da tabela base na qual o índice é criado. | |
index_name |
STRING |
O nome do índice. | |
index_column_name |
STRING |
O nome da coluna indexada de nível superior. | |
index_field_path |
STRING |
O caminho completo do campo indexado expandido, começando pelo nome da coluna. Os campos estão separados por um ponto. |
Âmbito e sintaxe
As consultas nesta vista têm de ter um qualificador de conjunto de dados. A tabela seguinte explica o âmbito da região para esta vista:
Nome da vista | Âmbito do recurso | Âmbito da região |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS |
Nível do conjunto de dados | Localização do conjunto de dados |
-
Opcional:
PROJECT_ID
: o ID do seu projeto do Trusted Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido. -
DATASET_ID
: o ID do seu conjunto de dados. Para mais informações, consulte o artigo Qualificador de conjunto de dados.
Exemplo
-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS;
Exemplos
O exemplo seguinte cria um índice de pesquisa em todas as colunas de 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);
A seguinte consulta extrai informações sobre os campos que estão indexados.
O index_field_path
indica o campo de uma coluna que está
indexado. Isto difere do index_column_name
apenas no caso de um STRUCT
, em que é fornecido o caminho completo para o campo indexado. Neste exemplo, a coluna c
contém um campo ARRAY<STRING>
e
e outro STRUCT
denominado f
, que contém um campo STRING
g
, cada um dos quais está indexado.
SELECT table_name, index_name, index_column_name, index_field_path
FROM my_project.dataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
O resultado é semelhante ao seguinte:
+------------+------------+-------------------+------------------+ | 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 | +------------+------------+-------------------+------------------+
A consulta seguinte junta a vista INFORMATION_SCHEMA.SEARCH_INDEX_COUMNS
às vistas INFORMATION_SCHEMA.SEARCH_INDEXES
e INFORMATION_SCHEMA.COLUMNS
para incluir o estado do índice de pesquisa e o tipo de dados de cada coluna:
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;
O resultado é semelhante ao seguinte:
+------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+ | 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>> | +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+