Exporter des données de table

Cette page explique comment exporter des données depuis des tables BigQuery.

Une fois que vous avez chargé des données dans BigQuery, vous pouvez les exporter sous plusieurs formats. BigQuery peut exporter jusqu'à 1 Go de données dans un seul fichier. Si les données dépassent 1 Go, vous devez les exporter dans plusieurs fichiers. Le cas échéant, la taille des fichiers varie.

Avec un service tel que Google Cloud Dataflow, vous pouvez lire des données depuis BigQuery au lieu de les exporter manuellement. Pour en savoir plus sur l'utilisation de Cloud Dataflow pour lire et écrire dans BigQuery, consultez la page E/S BigQuery dans la documentation Cloud Dataflow.

Autorisations requises

  • Assurez-vous que vous disposez d'un accès READER sur l'ensemble de données qui contient les données que vous souhaitez exporter. Vous pouvez également utiliser n'importe quel rôle IAM BigQuery prédéfini au niveau du projet, qui fournit des autorisations bigquery.tables.export, telles que bigquery.dataViewer, bigquery.dataOwner, bigquery.dataEditor ou bigquery.admin. Lorsque vous attribuez un rôle IAM au niveau du projet, l'utilisateur ou le groupe dispose d'autorisations bigquery.tables.export pour chaque table du projet.
  • Assurez-vous que vous disposez d'autorisations WRITER sur un bucket Google Cloud Storage, ou que vous êtes doté d'un rôle IAM prédéfini qui vous autorise à écrire des objets dans un bucket. Vous ne pouvez exporter des données depuis BigQuery que vers un bucket Cloud Storage. Pour en savoir sur les rôles IAM Cloud Storage, consultez la page Rôles IAM Cloud Storage.
  • Pour exécuter une tâche d'exportation, vous devez disposer d'autorisations bigquery.jobs.create. Vous pouvez définir les autorisations bigquery.jobs.create au niveau du projet en accordant l'un des rôles IAM prédéfinis suivants :

    • bigquery.user
    • bigquery.jobUser
    • bigquery.admin

Limites en matière d'exportation

Lorsque vous exportez des données depuis BigQuery, tenez compte des points suivants :

  • Vous ne pouvez pas exporter de données vers un fichier local ou vers Google Drive, mais vous pouvez enregistrer des résultats de requêtes dans un fichier local. La seule zone d'exportation acceptée est Google Cloud Storage.
  • Vous pouvez exporter jusqu'à 1 Go de données de table dans un seul fichier. Si les données dépassent 1 Go, utilisez un caractère générique pour les exporter dans plusieurs fichiers. Le cas échéant, la taille des fichiers varie.
  • Vous ne pouvez pas exporter des données imbriquées et répétées au format CSV. Ces données sont acceptées pour les exportations au format Avro et JSON.
  • Lorsque vous exportez des données au format JSON, les types de données INT64 (entier) sont encodés sous la forme de chaînes JSON, afin de préserver la précision 64 bits lorsque les données sont lues par d'autres systèmes.
  • Vous ne pouvez pas exporter des données de plusieurs tables dans une seule tâche d'exportation.
  • Lorsque vous exportez des données à partir de tables partitionnées, vous ne pouvez pas exporter des partitions individuelles.
  • Lorsque vous exportez des données à l'aide de l'interface utilisateur Web classique de BigQuery, vous ne pouvez pas choisir un type de compression autre que GZIP.

Considérations relatives à la zone

Lorsque vous choisissez une zone pour les données, envisagez d'entreprendre les actions suivantes :
  • Cohéberger un ensemble de données BigQuery et une source de données externe.
    • Lorsque vous interrogez des données dans une source de données externe telle que Cloud Storage, ces données doivent se trouver dans la même zone que votre ensemble de données BigQuery. Par exemple, si ce dernier se trouve dans la zone multirégionale UE, le bucket Cloud Storage contenant les données que vous interrogez doit se trouver dans un bucket multirégional de l'UE. Si votre ensemble de données est situé dans la zone multirégionale États-Unis, le bucket Cloud Storage doit se trouver dans un bucket multirégional aux États-Unis.
    • Si votre ensemble de données se trouve dans une zone régionale, le bucket Cloud Storage contenant les données que vous interrogez doit se trouver dans un bucket régional de la même zone. Par exemple, si l'ensemble de données se trouve dans la région Tokyo, le bucket Cloud Storage doit être un bucket régional situé à Tokyo.
    • Si l'ensemble de données externe se trouve dans Cloud Bigtable, l'ensemble de données doit se trouver dans la zone multirégionale US ou EU. Les données Cloud Bigtable doivent se trouver dans l'une des zones Cloud Bigtable gérées.
    • Les considérations relatives aux zones ne s'appliquent pas aux sources de données externes Google Drive.
  • Cohéberger vos buckets Cloud Storage pour charger des données.
    • Si votre ensemble de données BigQuery se trouve dans une zone multirégionale, le bucket Cloud Storage contenant les données que vous chargez doit se trouver dans un bucket régional ou multirégional de la même zone. Par exemple, si votre ensemble de données BigQuery se trouve dans l'UE, le bucket Cloud Storage doit être situé dans un bucket régional ou multirégional de l'UE.
    • Si votre ensemble de données se trouve dans une zone régionale, le bucket Cloud Storage doit être un bucket régional de la même zone. Par exemple, si votre ensemble de données se trouve dans la région Tokyo, le bucket Cloud Storage doit être un bucket régional situé à Tokyo.
    • Exception : Si votre ensemble de données se trouve dans la zone multirégionale États-Unis, vous pouvez charger des données à partir d'un bucket Cloud Storage situé dans n'importe quelle zone régionale ou multirégionale.
  • Cohéberger vos buckets Cloud Storage pour exporter des données.
    • Lorsque vous exportez des données, le bucket Cloud Storage régional ou multirégional doit se trouver dans la même zone que l'ensemble de données BigQuery. Par exemple, si votre ensemble de données BigQuery est situé dans la zone multirégionale UE, le bucket Cloud Storage contenant les données que vous exportez doit se trouver dans une zone régionale ou multirégionale de l'UE.
    • Si votre ensemble de données se trouve dans une zone régionale, le bucket Cloud Storage doit être un bucket régional de la même zone. Par exemple, si votre ensemble de données se trouve dans la région Tokyo, le bucket Cloud Storage doit être un bucket régional situé à Tokyo.
    • Exception : Si votre ensemble de données se trouve dans la zone multirégionale États-Unis, vous pouvez exporter des données dans un bucket Cloud Storage situé dans n'importe quelle zone régionale ou multirégionale.
  • Élaborer un plan de gestion des données.
    • Si vous choisissez une ressource de stockage régionale, telle qu'un ensemble de données BigQuery ou un bucket Cloud Storage, élaborez un plan de gestion géographique des données.
Pour en savoir plus sur les zones Cloud Storage, consultez la section Zones des buckets dans la documentation de Cloud Storage.

Déplacer des données BigQuery entre des zones

Il n'est pas possible de modifier la zone d'un ensemble de données après sa création, ni de déplacer un ensemble de données d'une zone vers une autre. Si vous devez tout de même le faire, procédez comme suit :

  1. Exportez les données de vos tables BigQuery vers un bucket Cloud Storage régional ou multirégional situé dans la même zone que l'ensemble de données. Par exemple, si votre ensemble de données se trouve dans la zone multirégionale UE, exportez les données dans un bucket régional ou multirégional de l'UE.

    L'exportation de données depuis BigQuery est gratuite, mais vous payez des frais pour le stockage des données exportées dans Cloud Storage. Les exportations BigQuery sont soumises aux limites applicables aux tâches d'exportation.

  2. Copiez ou déplacez les données de votre bucket Cloud Storage vers un bucket régional ou multirégional dans la nouvelle zone. Par exemple, si vous déplacez vos données de la zone multirégionale États-Unis vers la zone régionale Tokyo, vous les transférez vers un bucket régional situé à Tokyo. Pour en savoir plus sur le transfert d'objets Cloud Storage, consultez la section Renommer, copier et déplacer des objets de la documentation de Cloud Storage.

    Notez que le transfert de données entre régions entraîne des frais de sortie de réseau dans Cloud Storage.

  3. Après avoir transféré les données vers un bucket Cloud Storage dans la nouvelle zone, créez-y un nouvel ensemble de données BigQuery. Ensuite, chargez les données du bucket Cloud Storage dans BigQuery.

    Le chargement des données dans BigQuery est gratuit, mais vous devrez payer des frais pour le stockage des données dans Cloud Storage jusqu'à ce que vous supprimiez les données ou le bucket. Le stockage des données dans BigQuery après leur chargement vous est également facturé. Le chargement de données dans BigQuery est soumis aux limites applicables aux tâches de chargement.

Pour en savoir plus sur l'utilisation de Cloud Storage pour stocker et déplacer des ensembles de données volumineux, consultez la page Utiliser Google Cloud Storage pour le big data.

Formats d'exportation et types de compression

BigQuery accepte les formats de données et les types de compression suivants pour les données exportées.

Format des données Types de compression acceptés Détails
CSV GZIP

Vous pouvez contrôler le délimiteur de fichier CSV dans vos données exportées avec l'indicateur de la CLI --field_delimiter ou la propriété de tâche d'extraction configuration.extract.fieldDelimiter.

Les données imbriquées et répétées ne sont pas acceptées.

JSON GZIP Les données imbriquées et répétées sont acceptées.
Avro DEFLATE, SNAPPY

GZIP n'est pas compatible avec les exportations au format Avro.

Les données imbriquées et répétées sont acceptées.

Exporter des données stockées dans BigQuery

Pour exporter des données de table à l'aide de l'interface utilisateur Web de BigQuery, vous pouvez employer la commande CLI bq extract ou envoyer une tâche d'extraction via l'API ou les bibliothèques clientes.

Exporter des données de table

Pour exporter des données depuis une table BigQuery :

Interface utilisateur Web

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

  2. Dans le panneau de navigation, cliquez sur l'icône de développement située à côté de votre ensemble de données pour afficher ses contenus.

  3. Cliquez sur la flèche vers le bas image de la flèche vers le bas à côté de la table qui contient les données que vous exportez.

  4. Sélectionnez Exporter la table pour afficher la boîte de dialogue Exporter vers Google Cloud Storage.

  5. Dans la boîte de dialogue Exporter vers Google Cloud Storage :

    • Pour Format d'exportation, choisissez le format des données exportées : CSV, JSON (délimité par un retour à la ligne) ou Avro.
    • Pour Compression, acceptez la valeur par défaut (None), ou choisissez GZIP. Le format Avro ne peut pas être utilisé en combinaison avec la compression GZIP. Pour compresser des données Avro, utilisez l'outil de ligne de commande bq ou l'API, et spécifiez l'un des types de compression acceptés pour ces données : DEFLATE ou SNAPPY.
    • Dans la zone de texte URI Google Cloud Storage, saisissez un URI valide au format gs://[BUCKET_NAME]/[FILENAME.CSV], où [BUCKET_NAME] correspond au nom du bucket Cloud Storage et [FILENAME] au nom du fichier de destination. L'ensemble de données BigQuery et le bucket Cloud Storage doivent se trouver dans la même zone.
    • Cliquez sur OK pour exporter la table.

Pendant l'exécution de la tâche, (extraction) apparaît à côté du nom de la table dans le panneau de navigation. Pour vérifier la progression de la tâche, recherchez dans l'historique des tâches en haut du panneau de navigation une tâche d'extraction.

Ligne de commande


Utilisez la commande bq extract.

  • bq --location=[LOCATION] extract --destination_format [FORMAT] --compression [COMPRESSION_TYPE] --field_delimiter [DELIMITER] --print_header [BOOLEAN] [PROJECT_ID]:[DATASET].[TABLE] gs://[BUCKET]/[FILENAME]

Où :

  • [LOCATION] est le nom de votre zone. L'indicateur --location est facultatif. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, définissez la valeur de l'indicateur sur asia-northeast1. Vous pouvez spécifier une valeur d'emplacement par défaut à l'aide du fichier .bigqueryrc.
  • [FORMAT] est le format des données exportées : CSV, NEWLINE_DELIMITED_JSON ou AVRO.
  • [COMPRESSION_TYPE] est un type de compression compatible pour votre format de données. CSV et NEWLINE_DELIMITED_JSON acceptent GZIP. AVRO accepte DEFLATE et SNAPPY.
  • [DELIMITER] est le caractère qui indique la limite entre les colonnes dans les exportations au format CSV. \t et tab sont les noms acceptés pour la tabulation.
  • [BOOLEAN] a la valeur true ou false. Lorsque la valeur est true, les lignes d'en-tête sont imprimées dans les données exportées si le format de ces dernières accepte les en-têtes. La valeur par défaut est true.
  • [PROJECT_ID] correspond à l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données source.
  • [TABLE] est la table que vous exportez.
  • [BUCKET] est le nom du bucket Cloud Storage vers lequel vous exportez les données. L'ensemble de données BigQuery et le bucket Cloud Storage doivent se trouver dans la même zone.
  • [FILENAME] est le nom du fichier de données exporté. Pour effectuer l'exportation dans plusieurs fichiers, utilisez un caractère générique.

Exemples :

Par exemple, la commande suivante permet d'exporter mydataset.mytable dans un fichier compressé gzip nommé myfile.csv. myfile.csv est stocké dans un bucket Cloud Storage nommé example-bucket.

  • bq --location=US extract --compression GZIP 'mydataset.mytable' gs://example-bucket/myfile.csv

Le format de destination par défaut est CSV. Pour exporter au format JSON ou Avro, spécifiez l'indicateur destination_format, puis définissez-le sur NEWLINE_DELIMITED_JSON ou AVRO. Par exemple :

  • bq --location=US extract --destination_format NEWLINE_DELIMITED_JSON 'mydataset.mytable' gs://example-bucket/myfile.json

La commande suivante permet d'exporter mydataset.mytable dans un fichier Avro compressé à l'aide de Snappy. Le fichier se nomme myfile.avro. myfile.avro est exporté vers un bucket Cloud Storage nommé example-bucket.

  • bq --location=US extract --destination_format AVRO --compression SNAPPY 'mydataset.mytable' gs://example-bucket/myfile.avro

API


Pour exporter des données, créez une tâche et insérez les valeurs dans l'objet configuration.extract.

Spécifiez votre emplacement dans la propriété location de la section jobReference de la ressource de tâche.

  1. Créez une tâche d'extraction qui pointe vers les données sources BigQuery et la destination Cloud Storage. Pour en savoir plus sur la création de tâches, consultez la page Gérer les tâches, les ensembles de données et les projets.

  2. Spécifiez la table source à l'aide de l'objet de configuration sourceTable, qui comprend les ID du projet, de l'ensemble de données et de la table.

  3. Les URI de destination doivent être complets et respecter le format gs://[BUCKET_NAME]/[FILENAME.CSV]. Chaque URI peut contenir un caractère générique "*", et il doit être placé après le nom du bucket.

  4. Spécifiez le format de données en définissant la propriété configuration.extract.destinationFormat. Par exemple, pour exporter un fichier JSON, définissez cette propriété sur la valeur NEWLINE_DELIMITED_JSON.

  5. Pour vérifier l'état de la tâche, appelez jobs.get ([JOB_ID]) avec l'ID de la tâche renvoyée par la requête initiale.

    • Si status.state = DONE, la tâche a bien été exécutée.
    • Si la propriété status.errorResult est présente, la requête a échoué. Cet objet inclura des informations décrivant le problème rencontré.
    • Si la propriété status.errorResult est absente, la tâche a bien été exécutée. Toutefois, des erreurs non fatales ont pu se produire. Ces erreurs sont répertoriées dans la propriété status.errors de l'objet de tâche renvoyé.

Remarques relatives à l'API :

  • Nous vous recommandons de générer un ID unique et de le transmettre en tant que jobReference.jobId lorsque vous appelez jobs.insert() pour créer une tâche. Cette approche offre une protection plus robuste contre les pannes réseau, car le client peut lancer une requête ou effectuer de nouvelles tentatives en utilisant l'ID de tâche connu.

  • L'appel de jobs.insert() avec un ID de tâche donné est idempotent. En d'autres termes, vous pouvez effectuer autant de tentatives que vous le souhaitez avec le même ID de tâche. L'une de ces opérations tout au plus aboutira.

C#

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour C# dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery C#.

public void ExportJsonToGcs(
    string datasetId, string tableId, string bucketName, string fileName,
    BigQueryClient client)
{
    StorageClient gcsClient = StorageClient.Create();
    string contentType = "application/json";
    // Get Table and append results into StringBuilder.
    PagedEnumerable<TableDataList, BigQueryRow> result = client.ListRows(datasetId, tableId);
    StringBuilder sb = new StringBuilder();
    foreach (var row in result)
    {
        sb.Append($"{{\"title\" : \"{row["title"]}\", \"unique_words\":\"{row["unique_words"]}\"}}{Environment.NewLine}");
    }
    // Save stream to Google Cloud Storage.
    using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString())))
    {
        var obj = gcsClient.UploadObject(bucketName, fileName, contentType, stream);
    }
}

Go

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery Go.

srcProject := "bigquery-public-data"
srcDataset := "samples"
srcTable := "shakespeare"

// For example, gcsUri = "gs://mybucket/shakespeare.csv"
gcsRef := bigquery.NewGCSReference(gcsURI)
gcsRef.FieldDelimiter = ","

extractor := client.DatasetInProject(srcProject, srcDataset).Table(srcTable).ExtractorTo(gcsRef)
extractor.DisableHeader = true
// You can choose to run the job in a specific location for more complex data locality scenarios.
// Ex: In this example, source dataset and GCS bucket are in the US.
extractor.Location = "US"

job, err := extractor.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery Java.

Job job = table.extract(format, gcsUrl);
// Wait for the job to complete
try {
  Job completedJob =
      job.waitFor(
          RetryOption.initialRetryDelay(Duration.ofSeconds(1)),
          RetryOption.totalTimeout(Duration.ofMinutes(3)));
  if (completedJob != null && completedJob.getStatus().getError() == null) {
    // Job completed successfully
  } else {
    // Handle error case
  }
} catch (InterruptedException e) {
  // Handle interrupted wait
}

Node.js

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery Node.js.

// Imports the Google Cloud client libraries
const BigQuery = require('@google-cloud/bigquery');
const Storage = require('@google-cloud/storage');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = "your-project-id";
// const datasetId = "my_dataset";
// const tableId = "my_table";
// const bucketName = "my-bucket";
// const filename = "file.csv";

// Instantiates clients
const bigquery = new BigQuery({
  projectId: projectId,
});

const storage = new Storage({
  projectId: projectId,
});

// Exports data from the table into a Google Cloud Storage file
bigquery
  .dataset(datasetId)
  .table(tableId)
  .extract(storage.bucket(bucketName).file(filename))
  .then(results => {
    const job = results[0];

    // load() waits for the job to finish
    assert.equal(job.status.state, 'DONE');
    console.log(`Job ${job.id} completed.`);

    // Check the job's status for errors
    const errors = job.status.errors;
    if (errors && errors.length > 0) {
      throw errors;
    }
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

PHP

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour PHP dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery PHP.

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Storage\StorageClient;
use Google\Cloud\Core\ExponentialBackoff;

/** Uncomment and populate these variables in your code */
// $projectId  = 'The Google project ID';
// $datasetId  = 'The BigQuery dataset ID';
// $tableId    = 'The BigQuery table ID';
// $bucketName = 'The Cloud Storage bucket Name';
// $objectName = 'The Cloud Storage object Name';
// $format     = 'The extract format, either "csv" or "json"';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
// load the storage object
$storage = new StorageClient([
    'projectId' => $projectId,
]);
$destinationObject = $storage->bucket($bucketName)->object($objectName);
// create the extract job
$options = ['destinationFormat' => $format];
$extractConfig = $table->extract($destinationObject, $options);
$job = $table->runJob($extractConfig);
// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});
// check if the job has errors
if (isset($job->info()['status']['errorResult'])) {
    $error = $job->info()['status']['errorResult']['message'];
    printf('Error running job: %s' . PHP_EOL, $error);
} else {
    print('Data extracted successfully' . PHP_EOL);
}

Python

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

# from google.cloud import bigquery
# client = bigquery.Client()
# bucket_name = 'my-bucket'
project = 'bigquery-public-data'
dataset_id = 'samples'
table_id = 'shakespeare'

destination_uri = 'gs://{}/{}'.format(bucket_name, 'shakespeare.csv')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    # Location must match that of the source table.
    location='US')  # API request
extract_job.result()  # Waits for job to complete.

print('Exported {}:{}.{} to {}'.format(
    project, dataset_id, table_id, destination_uri))

Ruby

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Ruby dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery Ruby.

# project_id   = "Your Google Cloud project ID"
# dataset_id   = "ID of the dataset containing table"
# table_id     = "ID of the table to export file data from"
# storage_path = "Storage path to export to, eg. gs://bucket/file.csv"

require "google/cloud/bigquery"

bigquery = Google::Cloud::Bigquery.new project: project_id
dataset  = bigquery.dataset dataset_id
table    = dataset.table table_id

puts "Exporting data to Cloud Storage file: #{storage_path}"
extract_job = table.extract_job storage_path

puts "Waiting for extract job to complete: #{extract_job.job_id}"
extract_job.wait_until_done!

puts "Data exported"

Détails sur les exportations au format Avro

BigQuery exprime les données au format Avro comme suit :

  • Les fichiers d'exportation obtenus sont des fichiers de conteneur Avro.
  • Chaque ligne BigQuery est représentée par un enregistrement Avro. Les données imbriquées sont représentées par des objets Enregistrement imbriqués.
  • Les champs REQUIRED sont représentés par les types Avro correspondants. Par exemple, un type INTEGER BigQuery est mappé à un type LONG Avro.
  • Les champs NULLABLE sont représentés par une union Avro du type correspondant et la valeur "null".
  • Les champs REPEATED sont représentés par des tableaux Avro.
  • Les types de données TIMESTAMP sont représentés par les types LONG Avro.

Le format Avro ne peut pas être utilisé en combinaison avec la compression GZIP. Pour compresser des données Avro, utilisez l'outil de ligne de commande bq ou l'API, et spécifiez l'un des types de compression acceptés pour ces données : DEFLATE ou SNAPPY.

Exporter des données dans un ou plusieurs fichiers

La propriété destinationUris indique les emplacements et noms des fichiers dans lesquels BigQuery doit exporter vos fichiers.

BigQuery accepte un seul opérateur générique (*) dans chaque URI. Le caractère générique peut apparaître n'importe où dans l'URI, sauf dans le nom du bucket. L'opérateur générique permet d'indiquer à BigQuery qu'il doit créer plusieurs fichiers segmentés en fonction du modèle fourni. Cet opérateur est remplacé par un numéro (en commençant à 0), et il est complété à gauche de façon à obtenir 12 chiffres. Par exemple, un URI avec un caractère générique à la fin du nom du fichier crée des fichiers où 000000000000 est ajouté au premier fichier, 000000000001 est ajouté au deuxième fichier, etc.

Le tableau suivant décrit plusieurs options possibles pour la propriété destinationUris :

Options "destinationUris"
Un seul URI

Utilisez un seul URI si vous exportez des données de table d'une taille inférieure ou égale à 1 Go. Cette option est le cas d'utilisation le plus courant, car les données exportées sont généralement inférieures à la valeur maximale de 1 Go.

Définition de la propriété :

['gs://[YOUR_BUCKET]/file-name.json']

Crée :


gs://my-bucket/file-name.json
Un seul URI générique

Utilisez un seul URI générique si vous pensez que les données exportées dépasseront la valeur maximale de 1 Go. BigQuery segmente les données en plusieurs fichiers en fonction du modèle fourni. La taille des fichiers exportés varie.

Si vous utilisez un caractère générique dans un composant d'URI autre que le nom du fichier, assurez-vous que le composant de chemin d'accès n'existe pas avant d'exporter les données.

Définition de la propriété :

['gs://[YOUR_BUCKET]/file-name-*.json']

Crée :


gs://my-bucket/file-name-000000000000.json
gs://my-bucket/file-name-000000000001.json
gs://my-bucket/file-name-000000000002.json
...

Définition de la propriété :

['gs://[YOUR_BUCKET]/path-component-*/file-name.json']

Crée :


gs://my-bucket/path-component-000000000000/file-name.json
gs://my-bucket/path-component-000000000001/file-name.json
gs://my-bucket/path-component-000000000002/file-name.json
...
Plusieurs URI génériques

Utilisez plusieurs URI génériques si vous souhaitez partitionner la sortie d'exportation. Utilisez cette option si vous exécutez une tâche de traitement parallèle avec un service tel que Cloud Dataproc. Déterminez le nombre de nœuds de calcul disponibles pour traiter la tâche, puis créez un URI par nœud de calcul. BigQuery traite chaque zone URI comme une partition, et utilise un traitement parallèle pour segmenter les données en plusieurs fichiers dans chaque zone. Vous pouvez utiliser le modèle de votre choix dans votre nom de fichier, en partant du principe qu'il y a un seul opérateur générique dans chaque URI, que chaque URI est unique, et que le nombre d'URI ne dépasse pas les règles relatives aux quotas.

Lorsque vous transmettez plusieurs URI génériques, BigQuery crée un fichier spécial à la fin de chaque partition indiquant le fichier "final" de l'ensemble. Ce nom de fichier indique le nombre de segments créés par BigQuery.

Par exemple, si l'URI générique est gs://[YOUR_BUCKET]/file-name- <worker number>-*.json, et que BigQuery crée 80 fichiers segmentés, le nom du fichier d'enregistrement zéro est gs://my-bucket/file- name-<worker number>-000000000080.json. Vous pouvez utiliser ce nom de fichier pour déterminer que BigQuery a créé 80 fichiers segmentés (nommés 000000000000-000000000079).

Notez qu'un fichier d'enregistrement zéro peut contenir plus de 0 octet selon le format de données, par exemple lors de l'exportation de données au format CSV avec un en-tête de colonne.

Modèle de chaîne :

gs://[YOUR_BUCKET]/file-name-<worker number>-*.json

Définition de la propriété :


['gs://my-bucket/file-name-1-*.json',
'gs://my-bucket/file-name-2-*.json',
'gs://my-bucket/file-name-3-*.json']

Crée :

Cet exemple suppose que BigQuery crée 80 fichiers segmentés dans chaque partition.


gs://my-bucket/file-name-1-000000000000.json
gs://my-bucket/file-name-1-000000000001.json
...
gs://my-bucket/file-name-1-000000000080.json
gs://my-bucket/file-name-2-000000000000.json
gs://my-bucket/file-name-2-000000000001.json
...
gs://my-bucket/file-name-2-000000000080.json
gs://my-bucket/file-name-3-000000000000.json
gs://my-bucket/file-name-3-000000000001.json
...
gs://my-bucket/file-name-3-000000000080.json

Règles relatives aux quotas

Pour en savoir plus sur les quotas appliqués aux tâches d'exportation, consultez la section Tâches d'exportation de la page "Quotas et limites".

Prix

Actuellement, l'exportation des données depuis BigQuery est gratuite, mais les exportations sont soumises aux quotas et aux limites de BigQuery.

Pour en savoir plus sur les tarifs de BigQuery, consultez la page Tarifs.

Une fois les données exportées, leur stockage dans Google Cloud Storage vous est facturé.

Pour en savoir plus sur les tarifs de Cloud Storage, consultez la page Tarifs de Cloud Storage.

Étapes suivantes

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

Envoyer des commentaires concernant…

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