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 vueINFORMATION_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 |
Facultatif : PROJECT_ID
: ID de votre projet Google Cloud. Si non spécifié, le projet par défaut est utilisé.
DATASET_ID
: ID de votre ensemble de données. Pour en savoir plus, consultez la section Qualificatif d'ensemble de données.
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>> | +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+