Tampilan SEARCH_INDEX_COLUMNS

Tampilan INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS berisi satu baris untuk setiap kolom yang diindeks penelusuran di setiap tabel dalam set data.

Izin yang diperlukan

Untuk melihat metadata indeks penelusuran, Anda memerlukan izin Identity and Access Management (IAM) bigquery.tables.get atau bigquery.tables.list pada tabel dengan indeks. Setiap peran IAM yang telah ditetapkan berikut menyertakan setidaknya salah satu izin ini:

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

Untuk mengetahui informasi selengkapnya tentang izin BigQuery, lihat Kontrol akses dengan IAM.

Skema

Saat Anda membuat kueri tampilan INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS, hasil kueri akan berisi satu baris untuk setiap kolom yang diindeks di setiap tabel dalam set data.

Tampilan INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS memiliki skema berikut

Nama kolom Jenis data Nilai
index_catalog STRING Nama project yang berisi set data.
index_schema STRING Nama set data yang berisi indeks.
table_name STRING Nama tabel dasar tempat indeks dibuat.
index_name STRING Nama indeks.
index_column_name STRING Nama kolom tingkat atas yang diindeks.
index_field_path STRING Jalur lengkap kolom terindeks yang diperluas, dimulai dengan nama kolom. Kolom dipisahkan dengan titik.

Cakupan dan sintaksis

Kueri terhadap tampilan ini harus memiliki penentu set data. Tabel berikut menjelaskan cakupan wilayah untuk tampilan ini:

Nama Tampilan Cakupan resource Cakupan region
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS Level set data Lokasi set data
Ganti kode berikut:

  • Opsional: PROJECT_ID: ID project Google Cloud Anda. Jika tidak ditentukan, project default akan digunakan.

    • DATASET_ID: ID set data Anda. Untuk mengetahui informasi selengkapnya, lihat Penentu set data.

    Contoh

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

    Contoh

    Contoh berikut membuat indeks penelusuran di semua kolom 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);

    Kueri berikut mengekstrak informasi tentang kolom yang diindeks. index_field_path menunjukkan kolom mana pada kolom yang diindeks. Hal ini berbeda dengan index_column_name hanya dalam kasus STRUCT, yang memberikan jalur lengkap ke kolom terindeks. Dalam contoh ini, kolom c berisi kolom ARRAY<STRING> e dan STRUCT lain yang disebut f dan berisi kolom STRING g, yang masing-masing diindeks.

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

    Hasilnya serupa dengan berikut ini:

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

    Kueri berikut menggabungkan tampilan INFORMATION_SCHEMA.SEARCH_INDEX_COUMNS dengan tampilan INFORMATION_SCHEMA.SEARCH_INDEXES dan INFORMATION_SCHEMA.COLUMNS untuk menyertakan status indeks penelusuran dan jenis data setiap kolom:

    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;

    Hasilnya mirip dengan berikut ini:

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