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 vista INFORMATION_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
Sostituisci quanto segue:

  • Facoltativo: PROJECT_ID: l'ID del tuo progetto Google Cloud. Se non specificato, viene utilizzato il progetto predefinito.

    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 di questi è 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>> |
    +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+