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
partition_expiration_days FLOAT64 Durée de vie par défaut, en jours, de toutes les partitions d'une table partitionnée
expiration_timestamp TIMESTAMP Heure d'expiration de cette table
kms_key_name STRING Nom de la clé Cloud KMS employée pour chiffrer la table
friendly_name STRING Nom descriptif de la table
description STRING Description de la table
labels ARRAY<STRUCT<STRING, STRING>> Tableau de valeurs STRUCT représentant les étiquettes de la table
require_partition_filter BOOL Filtre de partition nécessaire ou non pour les requêtes sur la table
enable_refresh BOOL Indique si l'actualisation automatique est activée pour une vue matérialisée.
refresh_interval_minutes FLOAT64 Fréquence d'actualisation d'une vue matérialisée

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.

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. Dans l'aperçu.

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.

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.

metadata_cache_mode

STRING

Applicable aux tables BigLake et aux tables d'objets.

Indique si le cache de métadonnées de la table est actualisé automatiquement ou manuellement.

Définissez cet élément sur AUTOMATIC pour que le cache de métadonnées soit actualisé à un intervalle défini par le système, généralement entre 30 et 60 minutes.

Définissez la valeur sur MANUAL si vous souhaitez actualiser le cache de métadonnées selon une programmation que vous déterminez. Dans ce cas, vous pouvez appeler la procédure système BQ.REFRESH_EXTERNAL_METADATA_CACHE pour actualiser le cache.

Vous devez définir metadata_cache_mode si max_staleness est défini sur une valeur supérieure à 0.

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éfinit é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 :

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