SEARCH_INDEX_COLUMNS 视图

INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS 视图中的每一行对应数据集中每个表的每个搜索索引列。

所需权限

如需查看搜索索引元数据,您需要对具有相应索引的表拥有 bigquery.tables.getbigquery.tables.list Identity and Access Management (IAM) 权限。以下每个预定义的 IAM 角色都至少包含以下权限之一:

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.dataViewer
  • roles/bigquery.metadataViewer
  • roles/bigquery.user

如需详细了解 BigQuery 权限,请参阅使用 IAM 进行访问权限控制

架构

当您查询 INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS 视图时,数据集中的每个表上每个编入索引的列都会有一行包含在查询结果中。

INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS 视图具有如下架构:

列名 数据类型
index_catalog STRING 包含数据集的项目的名称。
index_schema STRING 包含索引的数据集的名称。
table_name STRING 在其中创建索引的基表的名称。
index_name STRING 索引的名称。
index_column_name STRING 顶级编入索引的列的名称。
index_field_path STRING 展开的索引字段的完整路径,以列名称开头。字段用英文句点分隔。

范围和语法

针对此视图的查询必须具有数据集限定符。下表说明了此视图的区域范围:

视图名称 资源范围 区域范围
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS 数据集级 数据集位置
替换以下内容:

  • 可选:PROJECT_ID:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
  • DATASET_ID:您的数据集的 ID。如需了解详情,请参阅数据集限定符

示例

-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS;

示例

以下示例针对 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);

以下查询会提取将哪些字段编入索引的信息。index_field_path 指示将列的哪个字段编入索引。这与 index_column_name 不同,后者仅在 STRUCT 的情况下提供编入索引的字段的完整路径。在此示例中,c 列包含 ARRAY<STRING> 字段 e 和另一个名为 fSTRUCT(包含 STRING 字段 g),每个网址都编入索引。

SELECT table_name, index_name, index_column_name, index_field_path
FROM my_project.dataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS

结果类似于以下内容:

+------------+------------+-------------------+------------------+
| 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            |
+------------+------------+-------------------+------------------+

以下查询将 INFORMATION_SCHEMA.SEARCH_INDEX_COUMNS 视图与 INFORMATION_SCHEMA.SEARCH_INDEXESINFORMATION_SCHEMA.COLUMNS 视图联接,以包含每列的搜索索引状态和数据类型:

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;

结果类似于以下内容:

+------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+
| 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>> |
+------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+