SEARCH_INDEX_COLUMNS ビュー

INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS ビューには、データセット内の各テーブルの検索インデックス列ごとに 1 行が表示されます。

必要な権限

検索インデックスのメタデータを表示するには、インデックスを含むテーブルに対する bigquery.tables.get または bigquery.tables.list の Identity and Access Management(IAM)権限が必要です。次の事前定義済みの各 IAM ロールには、これらのうち少なくとも 1 つの権限が含まれています。

  • 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 ビューにクエリを実行すると、クエリ結果として、データセット内の各テーブルのインデックス付き列ごとに 1 行が表示されます。

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 拡張されたインデックス付きフィールドのフルパス(列名から始まる)。フィールドはピリオドで区切る。

スコープと構文

このビューに対するクエリでは、データセット修飾子を指定する必要があります。 次の表で、このビューのリージョン スコープを説明します。

View Name リソース スコープ リージョン スコープ
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS データセット レベル データセットの場所
次のように置き換えます。

  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。

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

    Examples

    次の例では、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 は、インデックス付けする列のフィールドを示します。これは、インデックス付きフィールドへのフルパスが指定されている STRUCT の場合だけは index_column_name と異なります。この例では、列 cARRAY<STRING> フィールド e と、STRING フィールド g を含む f という別の STRUCT が含まれていて、それぞれにインデックスが付けられます。

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