Interroger des données Cloud Storage

BigQuery prend en charge l'interrogation de données Cloud Storage aux formats suivants :

  • CSV (Comma-Separated Values)
  • JSON (délimité par un retour à la ligne)
  • Fichiers Avro
  • Exportations Cloud Datastore
  • Exportations Cloud Firestore

BigQuery permet d'interroger des données Cloud Storage depuis les classes de stockage suivantes :

  • Multirégional
  • Régional
  • Nearline
  • Coldline

Pour interroger directement une source de données externe Cloud Storage, indiquez le chemin d'accès de l'URI Cloud Storage menant à vos données et créez une table externe qui renvoie à la source de données. La table utilisée pour renvoyer à la source de données Cloud Storage peut être une table permanente ou une table temporaire.

Prenez bien en compte l'emplacement de votre ensemble de données et de votre bucket Cloud Storage lorsque vous interrogez des données stockées dans Cloud Storage.

Récupérer l'URI Cloud Storage

Pour créer une table externe à l'aide d'une source de données Cloud Storage, vous devez indiquer l'URI Cloud Storage.

L'URI Cloud Storage comprend le nom du bucket et l'objet (nom de fichier). Par exemple, pour un bucket Cloud Storage mybucket et un fichier de données myfile.csv, l'URI du bucket serait gs://mybucket/myfile.csv. Si vos données sont réparties dans plusieurs fichiers, vous pouvez utiliser un caractère générique dans l'URI. Pour plus d'informations, consultez la page Points de terminaison de requêtes dans la documentation Cloud Storage.

BigQuery ne prend pas en charge les URI sources qui comprennent plusieurs barres obliques consécutives après la double barre oblique initiale. Le nom des objets Cloud Storage peut contenir plusieurs barres obliques ("/") consécutives. Toutefois, BigQuery convertit les barres obliques consécutives en une seule. Par exemple, bien que l'URI source suivant soit valide dans Cloud Storage, il ne fonctionne pas dans BigQuery : gs://[BUCKET]/my//object//name.

Pour récupérer l'URI Cloud Storage :

  1. Ouvrez la console Cloud Storage.

    Console Cloud Storage

  2. Accédez à l'emplacement de l'objet (fichier) contenant les données source.

  3. En haut de la console Cloud Storage, notez le chemin d'accès à l'objet. Pour composer l'URI, remplacez gs://[BUCKET]/[FILE] par le chemin correspondant, par exemple, gs://mybucket/myfile.json. [BUCKET] correspond au nom du bucket Cloud Storage et [FILE] au nom de l'objet (fichier) contenant les données.

Contrôles d'accès et champs d'application

Contrôles de l'accès aux tables externes permanentes

Vous pouvez partager l'accès à une table externe permanente liée à une source de données Cloud Storage. L'accès peut être partagé avec des utilisateurs (y compris des comptes de service) ou des groupes. Pour interroger la table externe, vos utilisateurs ou groupes ont besoin (au minimum) des attributs suivants :

  • Accès READER ou bigquery.dataViewer à l'ensemble de données contenant la table externe
  • Accès bigquery.user au projet contenant l'ensemble de données (afin d'exécuter des tâches de requête)
  • Rôle IAM prédéfini storage.objectViewer pour lire les données de Cloud Storage ou les autorisations suivantes :

Champs d'application des instances Compute Engine

Lorsque vous créez une instance Compute Engine, vous pouvez spécifier une liste de champs d'application pour celle-ci. Les champs d'application permettent de contrôler l'accès de l'instance aux produits GCP, y compris Cloud Storage. Les applications exécutées sur la VM utilisent le compte de service associé à l'instance pour appeler les API Google Cloud.

Si vous configurez une instance Compute Engine pour qu'elle s'exécute en tant que compte de service Compute Engine par défaut et que ce compte de service accède à une table externe liée à une source de données Cloud Storage, cette instance nécessite un accès en lecture seule à Cloud Storage. Le compte de service Compute Engine par défaut reçoit automatiquement le champ d'application https://www.googleapis.com/auth/devstorage.read_only. Si vous créez votre propre compte de service, attribuez à l'instance le champ d'application de lecture seule pour Cloud Storage.

Pour en savoir plus sur l'attribution de champs d'application à une instance Compute Engine, consultez la section Modifier le compte de service et les champs d'application d'accès d'une instance. Pour en savoir plus sur les comptes de service Compute Engine, consultez la page Comptes de service.

Tables externes permanentes et temporaires

Vous pouvez interroger une source de données externe dans BigQuery à l'aide d'une table permanente ou d'une table temporaire. Lorsque vous utilisez une table permanente, vous créez dans un ensemble de données BigQuery une table qui est associée à votre source de données externe. La table étant permanente, vous pouvez utiliser des contrôles d'accès au niveau de l'ensemble de données pour la partager avec d'autres utilisateurs ayant également accès à la source de données externe sous-jacente. Vous avez par ailleurs la possibilité d'interroger la table à tout moment.

Lorsque vous interrogez une source de données externe à l'aide d'une table temporaire, vous exécutez une commande qui inclut une requête et crée une table non permanente associée à la source de données externe. En cas d'utilisation d'une table temporaire, vous ne créez pas de table dans l'un de vos ensembles de données BigQuery. La table n'étant pas stockée de manière permanente dans un ensemble de données, elle ne peut pas être partagée avec d'autres utilisateurs. L'interrogation d'une source de données externe à l'aide d'une table temporaire est utile pour les requêtes ad hoc ponctuelles qui sont exécutées sur des données externes ou pour les processus d'extraction, de transformation et de chargement (ETL, Extract-Transform-Load).

Interroger des données Cloud Storage à l'aide de tables externes permanentes

Pour interroger une source de données externe à l'aide d'une table permanente, vous créez dans un ensemble de données BigQuery une table qui est associée à votre source de données externe. Les données ne sont pas stockées dans la table BigQuery. La table étant permanente, vous pouvez utiliser des contrôles d'accès au niveau de l'ensemble de données pour la partager avec d'autres utilisateurs ayant également accès à la source de données externe sous-jacente.

Il existe trois façons de définir des informations de schéma lors de la création d'une table externe permanente dans BigQuery :

  • Si vous utilisez l'API pour créer une table externe permanente, vous devez d'abord créer un fichier de définition de table qui définit le schéma et les métadonnées de la source de données externe. Lorsque vous créez un fichier de définition de table, vous pouvez activer la détection automatique de schémas pour les sources de données prises en charge.
  • Si vous utilisez la CLI pour créer une table externe permanente, vous pouvez utiliser un fichier de définition de table, créer et utiliser votre propre fichier de schéma ou saisir le schéma pour l'intégrer (sur la ligne de commande).
  • Si vous utilisez la console ou l'interface utilisateur Web classique BigQuery pour créer une table externe permanente, vous pouvez entrer le schéma de table manuellement ou utiliser la détection automatique de schéma pour les sources de données prises en charge.

Pour interroger des données Cloud Storage à l'aide d'une table externe permanente, vous devez :

  • créer un fichier de définition de table (pour l'API et éventuellement pour la CLI) ;
  • créer dans BigQuery une table associée à la source de données externe ;
  • interroger la table associée à la source de données externe.

Créer une table externe permanente

Vous pouvez créer une table permanente associée à votre source de données externe en :

  • utilisant la console GCP ou l'interface utilisateur Web classique de BigQuery ;
  • utilisant la commande mk de l'outil de ligne de commande ;
  • définissant des propriétés configuration.query.tableDefinitions dans une tâche de requête à l'aide de l'API.

Console

  1. Ouvrez l'interface utilisateur Web de BigQuery dans la console GCP.
    Accéder à l'interface utilisateur Web de BigQuery
  2. Dans la section Ressources du panneau de navigation, développez votre projet et sélectionnez un ensemble de données. Cliquez sur Create table (Créer une table) dans la partie droite de la fenêtre. Créer un tableau
  3. Dans la section Source (Source) de la page Create table (Créer une table) :

    • Depuis le menu Create table from (Créer une table à partir de) , sélectionnez le type de source de votre choix.

      Créer une source de table

    • Dans le champ source, recherchez le fichier/bucket Cloud Storage, ou saisissez l'URI Cloud Storage. Notez que vous ne pouvez pas inclure plusieurs URI dans l'interface utilisateur Web de BigQuery. En revanche, les caractères génériques sont acceptés. Le bucket Cloud Storage doit se trouver dans le même emplacement que l'ensemble de données contenant la table que vous créez.

      Sélectionner un fichier

    • Pour le paramètre File format (Format de fichier), sélectionnez le format de vos données. Les formats valides pour les données Cloud Storage sont les suivants :

      • CSV (Comma-Separated Values)
      • JSON (délimité par un retour à la ligne)
      • Avro
      • Sauvegarde Cloud Datastore (également utilisée pour Cloud Firestore)
  4. Dans la section Destination de la page Create Table (Créer une table) :

    • Sous Dataset name (Nom de l'ensemble de données), sélectionnez l'ensemble de données approprié.

      Sélectionner un ensemble de données

    • Dans le champ Nom de la table, saisissez le nom de la table que vous créez dans BigQuery.

    • Vérifiez que le champ Table type (Type de table) est défini sur External table (Table externe).

  5. Dans la section Schéma, saisissez la définition du schéma.

    • Pour les fichiers JSON ou CSV, vous pouvez cocher l'option Détection automatique pour activer la détection automatique de schéma. La détection automatique n'est pas disponible pour les exportations Cloud Datastore, les exportations Cloud Firestore et les fichiers Avro. Les informations de schéma pour ces types de fichiers sont automatiquement extraites des données sources autodescriptives.
    • Indiquez manuellement les informations de schéma de l'une des manières suivantes :
      • Activez l'option Modifier sous forme de texte et saisissez le schéma de la table sous forme de tableau JSON. Remarque : Vous pouvez afficher le schéma d'une table existante au format JSON en saisissant la commande bq show --format=prettyjson [DATASET].[TABLE].
      • Utilisez l'option Ajouter un champ pour saisir manuellement le schéma.
  6. Cliquez sur Créer une table.

Une fois la table permanente créée, vous pouvez exécuter une requête sur la table comme s'il s'agissait d'une table BigQuery native, selon les limites applicables aux sources de données externes.

Une fois la requête exécutée, vous pouvez exporter les résultats au format CSV ou JSON, puis les enregistrer sous forme de table ou dans Google Sheets. Consultez Télécharger, enregistrer et exporter des données pour en savoir plus.

UI classique

  1. Accédez à l'UI Web de BigQuery.
    Accéder à l'UI Web de BigQuery

  2. Cliquez sur la flèche vers le bas image de la flèche vers le bas à côté du nom de l'ensemble de données dans le volet de navigation, puis sur Créer une table.

  3. Dans la section Données sources de la page Créer une table :

    • Pour le paramètre Emplacement, sélectionnez Cloud Storage. Dans le champ "Source", saisissez l'URI Cloud Storage. Sachez que les caractères génériques sont acceptés dans les URI Cloud Storage.
    • Pour le paramètre Format de fichier, sélectionnez le format de vos données. Les formats valides pour les données Cloud Storage sont les suivants :

      • CSV (Comma-Separated Values)
      • JSON (délimité par un retour à la ligne)
      • Avro
      • Sauvegarde Cloud Datastore (également utilisée pour Cloud Firestore)
  4. Dans la section Table de destination de la page Créer une table :

    • Pour le paramètre Nom de la table, choisissez l'ensemble de données correspondant, puis saisissez dans le champ le nom de la table permanente que vous créez dans BigQuery.
    • Vérifiez que le paramètre Type de table est défini sur Table externe.
  5. Dans la section Schéma, saisissez les informations de schéma.

    • Pour les fichiers JSON ou CSV, vous pouvez cocher l'option Détection automatique pour activer la détection automatique de schéma. La détection automatique n'est pas disponible pour les exportations Cloud Datastore, les exportations Cloud Firestore et les fichiers Avro. Les informations de schéma pour ces types de fichiers sont automatiquement extraites des données sources autodescriptives.

    • Vous pouvez également saisir manuellement des informations de schéma CSV ou JSON comme suit :

      • en cliquant sur Modifier sous forme de texte, puis en saisissant le schéma de la table au format JSON ;
      • en utilisant l'option Ajouter un champ pour saisir manuellement le schéma.
  6. Sélectionnez les éléments applicables dans la section Options, puis cliquez sur Créer une table.

Une fois la table permanente créée, vous pouvez exécuter une requête sur la table comme s'il s'agissait d'une table BigQuery native, selon les limites applicables aux sources de données externes.

Une fois la requête exécutée, vous pouvez exporter les résultats au format CSV ou JSON, puis les enregistrer sous forme de table ou dans Google Sheets. Consultez Télécharger, enregistrer et exporter des données pour en savoir plus.

CLI

La commande bq mk permet de créer une table dans l'outil de ligne de commande BigQuery. Lorsque vous utilisez la CLI pour créer une table associée à une source de données externe, vous pouvez identifier le schéma de la table à l'aide des éléments suivants :

  • Un fichier de définition de table (stocké sur l'ordinateur local)
  • Une définition de schéma intégrée
  • Un fichier de schéma JSON (stocké sur l'ordinateur local)

Pour créer une table permanente associée à votre source de données Cloud Storage à l'aide d'un fichier de définition de table, saisissez la commande suivante :

bq mk --external_table_definition=[DEFINITION_FILE] [DATASET_ID].[TABLE_NAME]

Où :

  • [DEFINITION_FILE] correspond au chemin d'accès du fichier de définition de table sur l'ordinateur local ;
  • [DATASET_ID] correspond au nom de l'ensemble de données contenant la table ;
  • [TABLE_NAME] correspond au nom de la table que vous créez.

Par exemple, la commande suivante crée une table permanente nommée mytable à l'aide d'un fichier de définition de table nommé mytable_def.

bq mk --external_table_definition=/tmp/mytable_def mydataset.mytable

Pour créer une table permanente associée à votre source de données externe à l'aide d'une définition de schéma intégrée, saisissez la commande suivante :

bq mk --external_table_definition=[SCHEMA]@[SOURCE_FORMAT]=[CLOUD_STORAGE_URI] [DATASET_ID].[TABLE_NAME]

Où :

  • [SCHEMA] correspond à la définition du schéma (au format [FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE]) ;
  • [SOURCE_FORMAT] correspond à CSV, NEWLINE_DELIMITED_JSON, AVRO ou DATASTORE_BACKUP (DATASTORE_BACKUP s'utilise également pour Cloud Filestore) ;
  • [CLOUD_STORAGE_URI] correspond à l'URI Cloud Storage ;
  • [DATASET_ID] correspond au nom de l'ensemble de données contenant la table ;
  • [TABLE_NAME] est le nom de la table que vous créez.

Par exemple, la commande suivante crée une table permanente nommée sales qui est associée à un fichier CSV stocké dans Cloud Storage avec la définition de schéma suivante : Region:STRING,Quarter:STRING,Total_sales:INTEGER.

bq mk --external_table_definition=Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=gs://mybucket/sales.csv mydataset.sales

Pour créer une table permanente associée à votre source de données externe à l'aide d'un fichier de schéma JSON, saisissez la commande suivante :

bq mk --external_table_definition=[SCHEMA_FILE]@[SOURCE_FORMAT]=[CLOUD_STORAGE_URI] [DATASET_ID].[TABLE_NAME]

Où :

  • [SCHEMA_FILE] correspond au chemin d'accès du fichier de schéma JSON sur l'ordinateur local ;
  • [SOURCE_FORMAT] correspond à CSV, NEWLINE_DELIMITED_JSON, AVRO ou DATASTORE_BACKUP (DATASTORE_BACKUP s'utilise également pour Cloud Firestore) ;
  • [CLOUD_STORAGE_URI] correspond à l'URI Cloud Storage ;
  • [DATASET_ID] correspond au nom de l'ensemble de données contenant la table ;
  • [TABLE_NAME] correspond au nom de la table que vous créez.

Par exemple, la commande suivante crée une table appelée sales qui est associée à un fichier CSV stocké dans Cloud Storage à l'aide du fichier de schéma /tmp/sales_schema.json.

bq mk --external_table_definition=/tmp/sales_schema.json@CSV=gs://mybucket/sales.csv mydataset.sales

Une fois qu'elle a été créée, vous pouvez exécuter une requête sur la table permanente comme s'il s'agissait d'une table BigQuery native, selon les limites applicables aux sources de données externes.

Une fois la requête exécutée, vous pouvez télécharger les résultats au format CSV ou JSON, puis les enregistrer sous forme de tableau ou dans Google Sheets. Consultez Télécharger, enregistrer et exporter des données pour en savoir plus.

API

Python

Avant d'essayer cet exemple, suivez la procédure de configuration de Python dans le guide de démarrage rapide de BigQuery à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'

# Configure the external data source
dataset_ref = client.dataset(dataset_id)
table_id = 'us_states'
schema = [
    bigquery.SchemaField('name', 'STRING'),
    bigquery.SchemaField('post_abbr', 'STRING')
]
table = bigquery.Table(dataset_ref.table(table_id), schema=schema)
external_config = bigquery.ExternalConfig('CSV')
external_config.source_uris = [
    'gs://cloud-samples-data/bigquery/us-states/us-states.csv',
]
external_config.options.skip_leading_rows = 1  # optionally skip header row
table.external_data_configuration = external_config

# Create a permanent table linked to the GCS file
table = client.create_table(table)  # API request

# Example query to find states starting with 'W'
sql = 'SELECT * FROM `{}.{}` WHERE name LIKE "W%"'.format(
    dataset_id, table_id)

query_job = client.query(sql)  # API request

w_states = list(query_job)  # Waits for query to finish
print('There are {} states with names starting with W.'.format(
    len(w_states)))

Interroger des données Cloud Storage à l'aide de tables temporaires

Pour interroger une source de données externe sans créer de table permanente, on exécute une commande permettant de combiner les éléments suivants :

  • Un fichier de définition de table et une requête
  • Une définition de schéma intégrée et une requête
  • Un fichier de définition de schéma JSON et une requête

Le fichier de définition de table ou le schéma fourni s'utilise pour créer la table externe temporaire, sur laquelle la requête s'exécute. Il est possible d'interroger une source de données externe à l'aide d'une table temporaire dans l'API et la CLI BigQuery.

En cas d'utilisation d'une table externe temporaire, vous ne créez pas de table dans l'un de vos ensembles de données BigQuery. La table n'étant pas stockée de manière permanente dans un ensemble de données, elle ne peut pas être partagée avec d'autres utilisateurs. L'interrogation d'une source de données externe à l'aide d'une table temporaire est utile pour les requêtes ad hoc ponctuelles qui sont exécutées sur des données externes ou pour les processus d'extraction, de transformation et de chargement (ETL, Extract-Transform-Load).

Créer et interroger une table temporaire

Vous pouvez créer et interroger une table temporaire associée à une source de données externe à l'aide de la CLI ou de l'API.

CLI

Pour interroger une table temporaire associée à une source de données externe, utilisez la commande bq query avec l'indicateur --external_table_definition. Lorsque vous utilisez la CLI pour interroger une table temporaire associée à une source de données externe, il est possible d'identifier le schéma de la table à l'aide des éléments suivants :

  • Un fichier de définition de table (stocké sur l'ordinateur local)
  • Une définition de schéma intégrée
  • Un fichier de schéma JSON (stocké sur l'ordinateur local)

Définissez l'indicateur --location sur la valeur correspondant à votre emplacement.

Pour interroger une table temporaire associée à votre source de données externe à l'aide d'un fichier de définition de table, saisissez la commande suivante :

bq --location=[LOCATION] query --external_table_definition=[TABLE_NAME]::[DEFINITION_FILE] '[QUERY]'

Où :

  • [LOCATION] correspond au nom de votre emplacement. Le paramètre --location est facultatif, si vos données se trouvent dans la zone multirégionale US ou EU ;
  • [TABLE_NAME] est le nom de la table temporaire que vous créez ;
  • [DEFINITION_FILE] correspond au chemin d'accès du fichier de définition de table sur l'ordinateur local ;
  • [QUERY] est la requête que vous soumettez à la table temporaire.

Par exemple, la commande suivante permet de créer et d'interroger une table temporaire appelée sales à l'aide du fichier de définition de table sales_def.

bq --location=US query --external_table_definition=sales::sales_def 'SELECT Region,Total_sales FROM sales;'

Pour interroger une table temporaire associée à votre source de données externe à l'aide d'une définition de schéma intégrée, saisissez la commande suivante :

bq --location=[LOCATION] query --external_table_definition=[TABLE_NAME]::[SCHEMA]@[SOURCE_FORMAT]=[CLOUD_STORAGE_URI] '[QUERY]'

Où :

  • [LOCATION] correspond au nom de votre emplacement. Le paramètre --location est facultatif, si vos données se trouvent dans la zone multirégionale US ou EU ;
  • [TABLE_NAME] est le nom de la table temporaire que vous créez ;
  • [SCHEMA] correspond à la définition de schéma intégrée (au format [FIELD]:[DATA_TYPE],[FIELD]:[DATA_TYPE]) ;
  • [SOURCE_FORMAT] correspond à CSV, NEWLINE_DELIMITED_JSON, AVRO ou DATASTORE_BACKUP (DATASTORE_BACKUP s'utilise également pour Cloud Firestore) ;
  • [CLOUD_STORAGE_URI] correspond à l'URI Cloud Storage ;
  • [QUERY] est la requête que vous soumettez à la table temporaire.

Par exemple, la commande suivante crée et interroge une table temporaire appelée sales qui est associée à un fichier CSV stocké dans Cloud Storage avec la définition de schéma suivante : Region:STRING,Quarter:STRING,Total_sales:INTEGER.

bq --location=US query --external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=gs://mybucket/sales.csv 'SELECT Region,Total_sales FROM sales;'

Pour interroger une table temporaire associée à votre source de données externe à l'aide d'un fichier de schéma JSON, saisissez la commande suivante :

bq --location=[LOCATION] query --external_table_definition=[SCHEMA_FILE]@[SOURCE_FORMAT]=[CLOUD_STORAGE_URI] '[QUERY]'

Où :

  • [LOCATION] correspond au nom de votre emplacement. Le paramètre --location est facultatif, si vos données se trouvent dans la zone multirégionale US ou EU ;
  • [SCHEMA_FILE] correspond au chemin d'accès du fichier de schéma JSON sur votre ordinateur local ;
  • [SOURCE_FORMAT] correspond à CSV, NEWLINE_DELIMITED_JSON, AVRO ou DATASTORE_BACKUP (DATASTORE_BACKUP s'utilise également pour Cloud Firestore) ;
  • [CLOUD_STORAGE_URI] correspond à l'URI Cloud Storage ;
  • [QUERY] est la requête que vous soumettez à la table temporaire.

    Par exemple, la commande suivante crée et interroge une table temporaire appelée sales qui est associée à un fichier CSV stocké dans Cloud Storage à l'aide du fichier de schéma /tmp/sales_schema.json.

    bq --location=US query --external_table_definition=sales::/tmp/sales_schema.json@CSV=gs://mybucket/sales.csv 'SELECT Region,Total_sales FROM sales;'

API

Python

Avant d'essayer cet exemple, suivez la procédure de configuration de Python dans le guide de démarrage rapide de BigQuery à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.

# from google.cloud import bigquery
# client = bigquery.Client()

# Configure the external data source and query job
external_config = bigquery.ExternalConfig('CSV')
external_config.source_uris = [
    'gs://cloud-samples-data/bigquery/us-states/us-states.csv',
]
external_config.schema = [
    bigquery.SchemaField('name', 'STRING'),
    bigquery.SchemaField('post_abbr', 'STRING')
]
external_config.options.skip_leading_rows = 1  # optionally skip header row
table_id = 'us_states'
job_config = bigquery.QueryJobConfig()
job_config.table_definitions = {table_id: external_config}

# Example query to find states starting with 'W'
sql = 'SELECT * FROM `{}` WHERE name LIKE "W%"'.format(table_id)

query_job = client.query(sql, job_config=job_config)  # API request

w_states = list(query_job)  # Waits for query to finish
print('There are {} states with names starting with W.'.format(
    len(w_states)))

Gestion des caractères génériques dans les URI Cloud Storage

Si vos données Google Cloud Storage sont réparties dans plusieurs fichiers partageant un nom de base commun, vous pouvez utiliser un caractère générique dans l'URI du fichier de définition de la table. Vous pouvez également utiliser un caractère générique lorsque vous créez une table externe sans fichier de définition de table.

Pour insérer un caractère générique dans l'URI Cloud Storage, il vous suffit d'ajouter un astérisque (*) au nom de base. Par exemple, si vous disposez de deux fichiers nommés fed-sample000001.csv et fed-sample000002.csv, l'URI du bucket aura la forme suivante : gs://mybucket/fed-sample*. Cet URI générique peut ensuite être utilisé dans la console, l'UI classique, la CLI ou l'API.

Vous ne pouvez utiliser qu'un seul caractère générique pour les objets (noms de fichiers) contenus dans votre bucket. Le caractère générique peut apparaître à l'intérieur ou à la fin du nom de l'objet. Il n'est pas possible d'ajouter un caractère générique au nom d'un bucket.

Pour les exportations de Google Cloud Datastore, un seul URI peut être spécifié et il doit se terminer par .backup_info ou par .export_metadata.

Le caractère générique * n'est pas autorisé dans les cas suivants :

  • Création de tables externes associées à des exportations Cloud Datastore ou Cloud Firestore.
  • Chargement de données d'exportation Cloud Datastore ou Cloud Firestore depuis Cloud Storage.

Pseudo-colonne _FILE_NAME

Les tables basées sur des sources de données externes donnent accès à une pseudo-colonne intitulée _FILE_NAME. Cette colonne contient le chemin d'accès complet du fichier auquel appartient la ligne. Elle est disponible uniquement pour les tables qui renvoient à des données externes stockées dans Cloud Storage et Google Drive.

Le nom de colonne _FILE_NAME est réservé. Vous ne pouvez donc pas créer de colonne portant ce nom dans vos tables. Pour sélectionner la valeur de _FILE_NAME, vous devez utiliser un alias. L'exemple de requête suivant illustre la sélection de _FILE_NAME en attribuant l'alias fn à la pseudo-colonne.

bq query --project_id=[PROJECT_ID] --use_legacy_sql=false 'SELECT name, _FILE_NAME AS fn from [DATASET].[TABLE_NAME] where name contains "Alex";' 

Où :

  • [PROJECT_ID] est un ID de projet valide (cet indicateur n'est pas obligatoire si vous utilisez Cloud Shell ou si vous définissez un projet par défaut dans le SDK Cloud) ;
  • [DATASET] correspond au nom de l'ensemble de données où est stockée la table externe permanente ;
  • [TABLE_NAME] correspond au nom de la table externe permanente.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.