Copier les instantanés d'une table

Ce document explique comment créer une copie d'un instantané de table à l'aide de Google Cloud Console, de l'instruction SQL CREATE SNAPSHOT TABLE, de la commande bq cp -s --no_clobber ou de l'API jobs.insert. Il est destiné aux utilisateurs familiarisés avec les instantanés de table BigQuery.

Autorisations et rôles

Cette section décrit les autorisations Identity and Access Management (IAM) dont vous avez besoin pour créer une copie d'un instantané de table, ainsi que les rôles IAM prédéfinis qui accordent ces autorisations.

Autorisations

Pour copier un instantané d'une table, vous avez besoin des autorisations suivantes :

Autorisation Ressource
Tous les éléments suivants :

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.createSnapshot
L'instantané de table que vous souhaitez copier.
bigquery.tables.create Ensemble de données contenant la copie de l'instantané de la table.

Rôles

Voici les rôles BigQuery prédéfinis qui fournissent les autorisations requises :

Rôle Ressource
Au choix :

bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
L'instantané de table que vous souhaitez copier.
Au choix :

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Ensemble de données contenant la copie de l'instantané de la table.

Limites

Vous ne pouvez pas copier un instantané d'une table sur un instantané d'une table ou d'une table existante.

Pour en savoir plus sur les limitations des instantanés de table, consultez la section Limites des instantanés de table.

Copier un instantané de table

Le processus de copie d'un instantané de table est similaire au processus de création d'un instantané d'une table. La différence est que vous spécifiez l'instantané de table que vous souhaitez copier en tant que table source.

Vous pouvez créer une copie d'un instantané de table à l'aide de l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet Explorateur, développez les nœuds de projet et d'ensemble de données de l'instantané de table que vous souhaitez examiner.

  3. Cliquez sur le nom de l'instantané de table.

  4. Dans le volet de l'instantané qui s'affiche, cliquez sur Copier.

  5. Dans le volet Copier la table qui s'affiche, saisissez le projet, l'ensemble de données et la table pour la copie de l'instantané de la table de destination.

  6. Cliquez sur Copier.

SQL

Utilisez l'instruction LDD CREATE SNAPSHOT TABLE :

  1. Dans Google Cloud Console, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

    CREATE SNAPSHOT TABLE COPY_PROJECT_ID.COPY_DATASET_NAME.COPY_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
    

    Remplacez les éléments suivants :

    • COPY_PROJECT_ID : ID du projet dans lequel créer la copie d'instantanés.
    • COPY_DATASET_NAME : nom de l'ensemble de données dans lequel créer la copie d'instantanés.
    • COPY_NAME : nom de la copie d'instantané que vous créez.
    • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané que vous copiez.
    • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané que vous copiez.
    • SNAPSHOT_NAME : nom de l'instantané que vous copiez.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez la page Exécuter des requêtes interactives.

bq

Saisissez la commande suivante dans Cloud Shell :

Accéder à Cloud Shell

bq cp \
-s \
--no_clobber \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
COPY_PROJECT_ID:COPY_DATASET_NAME.COPY_NAME

Remplacez les éléments suivants :

  • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané que vous copiez.
  • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané que vous copiez.
  • SNAPSHOT_NAME : nom de l'instantané que vous copiez.
  • COPY_PROJECT_ID : ID du projet dans lequel créer la copie d'instantanés.
  • COPY_DATASET_NAME : nom de l'ensemble de données dans lequel créer la copie d'instantanés.
  • COPY_NAME : nom de la copie d'instantané que vous créez.

L'option --no_clobber est obligatoire.

API

Appelez la méthode jobs.insert avec les paramètres suivants :

Paramètre Valeur
projectId ID du projet à facturer pour cette opération.
Corps de la requête

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "COPY_PROJECT_ID",
        "datasetId": "COPY_DATASET_NAME",
        "tableId": "COPY_NAME"
      },
      "operationType": "SNAPSHOT",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

Remplacez les éléments suivants :

  • SNAPSHOT_PROJECT_ID : ID du projet contenant l'instantané que vous copiez.
  • SNAPSHOT_DATASET_NAME : nom de l'ensemble de données contenant l'instantané que vous copiez.
  • SNAPSHOT_NAME : nom de l'instantané que vous copiez.
  • COPY_PROJECT_ID : ID du projet dans lequel créer la copie d'instantanés.
  • COPY_DATASET_NAMECOPY_DATASET_NAME : nom de l'ensemble de données dans lequel créer la copie d'instantanés.
  • COPY_NAME : nom de la copie d'instantané que vous créez.

Étapes suivantes