Vue SEARCH_INDEX_COLUMNS

La vue INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS contient une ligne pour chaque colonne indexée pour la recherche sur chaque table d'un ensemble de données.

Autorisations requises

Pour afficher les métadonnées d'index de recherche, vous devez disposer de l'autorisation IAM (gestion de l'authentification et des accès) bigquery.tables.get ou bigquery.tables.list sur la table contenant l'index. Chacun des rôles IAM prédéfinis suivants inclut au moins l'une de ces autorisations :

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

Pour plus d'informations sur les autorisations BigQuery, consultez la page Contrôle des accès avec IAM.

Schéma

Lorsque vous interrogez la vue INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS, les résultats de la requête contiennent une ligne pour chaque colonne indexée de chaque table d'un ensemble de données.

La vue INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS présente le schéma suivant :

Nom de la colonne Type de données Valeur
index_catalog STRING Nom du projet qui contient l'ensemble de données.
index_schema STRING Nom de l'ensemble de données contenant l'index.
table_name STRING Nom de la table de base sur laquelle l'index est créé.
index_name STRING Nom de l'index.
index_column_name STRING Nom de la colonne indexée de niveau supérieur.
index_field_path STRING Chemin complet du champ indexé développé, commençant par le nom de la colonne. Les champs sont séparés par un point.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent être associées à un qualificatif d'ensemble de données. Le tableau suivant explique le champ d'application de la région pour cette vue :

Nom de la vue Champ d'application de la ressource Champ d'application de la région
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS Niveau de l'ensemble de données Emplacement d'un ensemble de données
Remplacez les éléments suivants :

  • Facultatif : PROJECT_ID : ID de votre projet Google Cloud. Si non spécifié, le projet par défaut est utilisé.

    Exemple

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

    Exemples

    L'exemple suivant permet de créer un index de recherche sur toutes les colonnes 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);

    La requête suivante extrait des informations sur les champs indexés. index_field_path indique le champ d'une colonne indexée. Cela diffère de index_column_name uniquement dans le cas d'un STRUCT, où le chemin d'accès complet au champ indexé est fourni. Dans cet exemple, la colonne c contient un champ ARRAY<STRING> e et un autre STRUCT appelé f contenant un champ STRING g. Chacune d'elles est indexée.

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

    Le résultat ressemble à ce qui suit :

    +------------+------------+-------------------+------------------+
    | 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 requête suivante joint la vue INFORMATION_SCHEMA.SEARCH_INDEX_COUMNS aux vues INFORMATION_SCHEMA.SEARCH_INDEXES et INFORMATION_SCHEMA.COLUMNS afin d'inclure l'état de l'index de recherche et le type de données de chaque colonne :

    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;

    Le résultat ressemble à ce qui suit :

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