Vue TABLE_OPTIONS

La vue INFORMATION_SCHEMA.TABLE_OPTIONS contient une ligne pour chaque option, chaque table ou vue d'un ensemble de données. Les vues TABLES et TABLE_OPTIONS contiennent également des informations générales sur les vues. Pour obtenir des informations détaillées, interrogez la vue INFORMATION_SCHEMA.VIEWS.

Autorisations requises

Pour interroger la vue INFORMATION_SCHEMA.TABLE_OPTIONS, vous avez besoin des autorisations IAM (Identity and Access Management) suivantes :

  • bigquery.tables.get
  • bigquery.tables.list
  • bigquery.routines.get
  • bigquery.routines.list

Chacun des rôles IAM prédéfinis suivants inclut les autorisations ci-dessus :

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.metadataViewer

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.TABLE_OPTIONS, les résultats de la requête contiennent une ligne pour chaque option, pour chaque table ou vue d'un ensemble de données. Pour obtenir des informations détaillées sur les vues, interrogez plutôt la vue INFORMATION_SCHEMA.VIEWS.

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

Nom de la colonne Type de données Valeur
TABLE_CATALOG STRING ID du projet qui contient l'ensemble de données
TABLE_SCHEMA STRING Nom de l'ensemble de données contenant la table ou la vue, également appelé datasetId
TABLE_NAME STRING Nom de la table ou de la vue, également appelé tableId
OPTION_NAME STRING Une des valeurs de nom figurant dans la table d'options
OPTION_TYPE STRING Une des valeurs de type de données figurant dans la table d'options
OPTION_VALUE STRING Une des options de valeur figurant dans la table d'options
Table d'options

OPTION_NAME

OPTION_TYPE

OPTION_VALUE

description

STRING

Description de la table

enable_refresh

BOOL

Indique si l'actualisation automatique est activée pour une vue matérialisée.

expiration_timestamp

TIMESTAMP

Heure d'expiration de cette table

friendly_name

STRING

Nom descriptif de la table

kms_key_name

STRING

Nom de la clé Cloud KMS employée pour chiffrer la table

labels

ARRAY<STRUCT<STRING, STRING>>

Tableau de valeurs STRUCT représentant les étiquettes de la table

partition_expiration_days

FLOAT64

Durée de vie par défaut, en jours, de toutes les partitions d'une table partitionnée

refresh_interval_minutes

FLOAT64

Fréquence d'actualisation d'une vue matérialisée

require_partition_filter

BOOL

Filtre de partition nécessaire ou non pour les requêtes sur la table

tags

ARRAY<STRUCT<STRING, STRING>>

Tags associés à une table dans une syntaxe d'espace de noms <clé, valeur> (pour en savoir plus, consultez Tags et accès conditionnel)

Pour les tables externes, les options suivantes sont également possibles :

Options
allow_jagged_rows

BOOL

Si la valeur est true, autorise les lignes auxquelles il manque des colonnes finales facultatives.

S'applique aux données CSV.

allow_quoted_newlines

BOOL

Si la valeur est true, autorise les sections de données entre guillemets contenant des caractères de retour à la ligne dans le fichier.

S'applique aux données CSV.

bigtable_options

STRING

Obligatoire uniquement lors de la création d'une table externe Bigtable.

Spécifie le schéma de la table externe Bigtable au format JSON.

Pour obtenir la liste des options de définition de table Bigtable, reportez-vous à la section BigtableOptions dans la documentation de référence de l'API REST.

column_name_character_map

STRING

Définit l'étendue des caractères de nom de colonne acceptés et le comportement de traitement des caractères non acceptés. Le paramètre par défaut est STRICT, ce qui signifie que les caractères non acceptés entraînent des erreurs dans BigQuery. V1 et V2 remplacent les caractères non acceptés par des traits de soulignement.

Les valeurs autorisées incluent les suivantes :

  • STRICT. Active les noms de colonnes flexibles. Il s'agit de la valeur par défaut. Les jobs de chargement contenant des caractères non compatibles dans les noms de colonnes échouent avec un message d'erreur. Pour configurer le remplacement des caractères non acceptés par des traits de soulignement afin que le job de chargement aboutisse, spécifiez le paramètre de configuration default_column_name_character_map.
  • V1. Les noms de colonnes ne peuvent contenir que des caractères standards. Les caractères non acceptés sont remplacés par des traits de soulignement. Il s'agit du comportement par défaut pour les tables créées avant l'introduction de column_name_character_map.
  • V2. En plus des caractères de nom de colonne standards, les noms de colonne flexibles sont également acceptés. Les caractères non acceptés sont remplacés par des traits de soulignement.
  • S'applique aux données CSV et Parquet.

compression

STRING

Type de compression de la source de données. Valeur autorisée : GZIP. Si cette option n'est pas spécifiée, la source de données n'est pas compressée.

S'applique aux données CSV et JSON.

decimal_target_types

ARRAY<STRING>

Détermine comment convertir un type Decimal. Équivaut à ExternalDataConfiguration.decimal_target_types.

Exemple : ["NUMERIC", "BIGNUMERIC"].

description

STRING

Description de cette table.

enable_list_inference

BOOL

Si la valeur est définie sur true, utilise l'inférence de schéma spécifiquement pour le type logique LIST Parquet.

S'applique aux données Parquet.

enable_logical_types

BOOL

Si la valeur est true, convertit les types logiques Avro en types SQL correspondants. Pour en savoir plus, consultez la section Types logiques.

S'applique aux données Avro.

encoding

STRING

Encodage des caractères des données. Valeurs autorisées : UTF8 (ou UTF-8), ISO_8859_1 (ou ISO-8859-1).

S'applique aux données CSV.

enum_as_string

BOOL

Si la valeur est définie sur true, déduit le type logique ENUM Parquet en tant que STRING au lieu de BYTES par défaut.

S'applique aux données Parquet.

expiration_timestamp

TIMESTAMP

Date et heure d'expiration de cette table. Si cette option n'est pas spécifiée, la table n'expire pas.

Exemple : "2025-01-01 00:00:00 UTC".

field_delimiter

STRING

Séparateur des champs dans un fichier CSV.

S'applique aux données CSV.

format

STRING

Format des données externes. Les valeurs acceptées pour CREATE EXTERNAL TABLE incluent les valeurs suivantes : AVRO, CLOUD_BIGTABLE, CSV, DATASTORE_BACKUP, DELTA_LAKE (bêta), GOOGLE_SHEETS, NEWLINE_DELIMITED_JSON (ou JSON), ORC, PARQUET.

Les valeurs acceptées pour LOAD DATA incluent les valeurs suivantes : AVRO, CSV, DELTA_LAKE (bêta), NEWLINE_DELIMITED_JSON (ou JSON), ORC, PARQUET.

La valeur JSON est équivalente à NEWLINE_DELIMITED_JSON.

hive_partition_uri_prefix

STRING

Préfixe commun à tous les URI sources avant le début de l'encodage de la clé de partition. Ne s'applique qu'aux tables externes partitionnées avec Hive.

S'applique aux données Avro, CSV, JSON, Parquet et ORC.

Exemple : "gs://bucket/path".

file_set_spec_type

STRING

Spécifie comment interpréter les URI sources des tâches de chargement et des tables externes.

Les valeurs autorisées incluent les suivantes :

  • FILE_SYSTEM_MATCH. Étend les URI sources en répertoriant les fichiers à partir du magasin d'objets. Il s'agit du comportement par défaut si FileSetSpecType n'est pas défini.
  • NEW_LINE_DELIMITED_MANIFEST. Indique que les URI fournis sont des fichiers manifestes délimités par un retour à la ligne, avec un URI par ligne. Les URI génériques ne sont pas compatibles avec les fichiers manifestes, et tous les fichiers de données référencés doivent se trouver dans le même bucket que le fichier manifeste.

Par exemple, si vous disposez de l'URI source "gs://bucket/path/file" et que file_set_spec_type est FILE_SYSTEM_MATCH, le fichier est utilisé directement en tant que fichier de données. Si file_set_spec_type est défini sur NEW_LINE_DELIMITED_MANIFEST, chaque ligne du fichier est interprétée comme un URI qui pointe vers un fichier de données.

ignore_unknown_values

BOOL

Si la valeur est true, ignore les valeurs supplémentaires qui ne sont pas représentées dans le schéma de la table, sans renvoyer d'erreur.

S'applique aux données CSV et JSON.

json_extension

STRING

Pour les données JSON, indique un format d'échange JSON particulier. Si ce n'est pas le cas, BigQuery lit les données sous forme d'enregistrements JSON génériques.

Les valeurs acceptées sont les suivantes :
GEOJSON. Données GeoJSON délimitées par des retours à la ligne. Pour en savoir plus, consultez la section Créer une table externe à partir d'un fichier GeoJSON délimité par un retour à la ligne.

max_bad_records

INT64

Nombre maximal d'enregistrements incorrects à ignorer lors de la lecture des données.

S'applique aux données CSV, JSON et Sheets.

max_staleness

INTERVAL

Applicable aux tables BigLake et aux tables d'objets.

Indique si les métadonnées mises en cache sont utilisées par les opérations sur la table et indique le niveau nécessaire de fraîcheur des métadonnées mises en cache pour que l'opération puisse les utiliser.

Pour désactiver la mise en cache des métadonnées, spécifiez 0. Il s'agit de la valeur par défaut.

Pour activer la mise en cache des métadonnées, spécifiez une valeur de littéral d'intervalle comprise entre 30 minutes et 7 jours. Par exemple, spécifiez INTERVAL 4 HOUR pour un intervalle d'obsolescence de quatre heures. Avec cette valeur, les opérations sur la table utilisent les métadonnées mises en cache si elles ont été actualisées au cours des quatre dernières heures. Si les métadonnées mises en cache sont plus anciennes, l'opération extrait les métadonnées de Cloud Storage.

null_marker

STRING

Chaîne représentant les valeurs NULL dans un fichier CSV.

S'applique aux données CSV.

object_metadata

STRING

Obligatoire seulement lors de la création d'une table d'objets.

Définissez la valeur de cette option sur SIMPLE lors de la création d'une table d'objets.

preserve_ascii_control_characters

BOOL

Si la valeur est true, les caractères de contrôle ASCII intégrés qui sont les 32 premiers caractères de la table ASCII, allant de "\x00" à "\x1F", sont conservés.

S'applique aux données CSV.

projection_fields

STRING

Liste des propriétés d'entité à charger.

S'applique aux données Datastore.

quote

STRING

Chaîne utilisée pour citer des sections de données dans un fichier CSV. Si vos données contiennent des caractères de retour à la ligne entre guillemets, définissez également la propriété allow_quoted_newlines sur true.

S'applique aux données CSV.

reference_file_schema_uri

STRING

Fichier de référence fourni par l'utilisateur avec le schéma de la table.

S'applique aux données Parquet/ORC/AVRO.

Exemple : "gs://bucket/path/reference_schema_file.parquet".

require_hive_partition_filter

BOOL

Si la valeur est true, toutes les requêtes sur cette table nécessitent un filtre de partition pouvant être utilisé pour éliminer les partitions lors de la lecture des données. Ne s'applique qu'aux tables externes partitionnées avec Hive.

S'applique aux données Avro, CSV, JSON, Parquet et ORC.

sheet_range

STRING

Plage d'une feuille de calcul Sheets à interroger.

S'applique aux données Google Sheets.

Exemple : "sheet1!A1:B20".

skip_leading_rows

INT64

Nombre de lignes en haut d'un fichier à ignorer lors de la lecture des données.

S'applique aux données CSV et Sheets.

uris

Pour les tables externes, y compris les tables d'objets, qui ne sont pas des tables Bigtable :

ARRAY<STRING>

Tableau d'URI complets pour les emplacements de données externes. Chaque URI peut contenir un caractère générique de type astérisque (*), qui doit être placé après le nom du bucket. Lorsque vous spécifiez des valeurs uris qui ciblent plusieurs fichiers, tous ces fichiers doivent partager un schéma compatible.

Les exemples suivants montrent des valeurs uris valides :

  • ['gs://bucket/path1/myfile.csv']
  • ['gs://bucket/path1/*.csv']
  • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

Pour les tables Bigtable :

STRING

URI identifiant la table Bigtable à utiliser comme source de données. Vous ne pouvez spécifier qu'un seul URI Bigtable.

Exemple : https://googleapis.com/bigtable/projects/project_id/instances/instance_id[/appProfiles/app_profile]/tables/table_name

Pour en savoir plus sur la construction d'un URI Bigtable, consultez la section Récupérer l'URI Bigtable.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent inclure un ensemble de données ou un qualificatif de région. Pour les requêtes avec un qualificatif d'ensemble de données, vous devez disposer d'autorisations pour l'ensemble de données. Pour les requêtes avec un qualificatif de région, vous devez disposer des autorisations nécessaires sur le projet. Pour en savoir plus, consultez la section Syntaxe. Le tableau suivant explique la portée des régions et des ressources pour cette vue :

Nom de la vue Champ d'application de la ressource Champ d'application de la région
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLE_OPTIONS Niveau Projet REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS 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é.
 + REGION : nom de la région de l'ensemble de données. Par exemple, region-us. + DATASET_ID : ID de votre ensemble de données. Pour en savoir plus, consultez la section Qualificatif d'ensemble de données.

Exemple

Exemple 1 :

L'exemple suivant récupère les délais d'expiration par défaut de toutes les tables de l'ensemble de données mydataset de votre projet par défaut (myproject) en interrogeant la vue INFORMATION_SCHEMA.TABLE_OPTIONS.

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet à l'ensemble de données, en respectant le format suivant : `project_id`.dataset.INFORMATION_SCHEMA.view. Par exemple : `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS.

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'expiration_timestamp';

Le résultat ressemble à ce qui suit :

  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | table_catalog  | table_schema  | table_name |     option_name      | option_type |             option_value             |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | myproject      | mydataset     | mytable1   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2020-01-16T21:12:28.000Z" |
  | myproject      | mydataset     | mytable2   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2021-01-01T21:12:28.000Z" |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  

Exemple 2 :

L'exemple suivant récupère les métadonnées de toutes les tables de mydataset contenant des données de test. La requête utilise les valeurs de l'option description pour rechercher les tables dont la description contient "test". mydataset se trouve dans votre projet par défaut : myproject.

Pour exécuter la requête sur un projet autre que votre projet par défaut, ajoutez l'ID du projet à l'ensemble de données au format suivant : `project_id`.dataset.INFORMATION_SCHEMA.view. Par exemple, `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS.

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'description'
    AND option_value LIKE '%test%';

Le résultat ressemble à ce qui suit :

  +----------------+---------------+------------+-------------+-------------+--------------+
  | table_catalog  | table_schema  | table_name | option_name | option_type | option_value |
  +----------------+---------------+------------+-------------+-------------+--------------+
  | myproject      | mydataset     | mytable1   | description | STRING      | "test data"  |
  | myproject      | mydataset     | mytable2   | description | STRING      | "test data"  |
  +----------------+---------------+------------+-------------+-------------+--------------+