Créer des clones de table
Ce document explique comment copier une table dans un clone de table à l'aide d'une instruction SQL CREATE TABLE CLONE
, d'une commande bq cp
ou d'un appel d'API jobs.insert
. Ce document est destiné aux utilisateurs qui connaissent déjà les clones de table.
Autorisations et rôles
Cette section décrit les autorisations Identity and Access Management (IAM) dont vous avez besoin pour créer un clone de table, ainsi que les rôles IAM prédéfinis qui accordent ces autorisations.
Autorisations
Pour créer un clone de table, vous avez besoin des autorisations suivantes :
Autorisation | Ressource |
---|---|
Tous les éléments suivants :bigquery.tables.get bigquery.tables.getData |
La table à partir de laquelle vous souhaitez créer un clone. |
bigquery.tables.create bigquery.tables.updateData
|
L'ensemble de données contenant le clone 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
|
La table à partir de laquelle vous souhaitez créer un clone. |
Au choix :bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
L'ensemble de données contenant le nouvel instantané de table. |
Créer un clone de table
Utilisez GoogleSQL, l'outil de ligne de commande bq ou l'API BigQuery pour créer un clone de table.
SQL
Pour cloner une table, utilisez l'instruction CREATE TABLE CLONE.
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
CREATE TABLE myproject.myDataset_backup.myTableClone CLONE myproject.myDataset.myTable;
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
Remplacez les éléments suivants :
PROJECT
est l'ID du projet cible. Ce projet doit appartenir à la même organisation que le projet contenant la table que vous clonez.DATASET
est le nom de l'ensemble de données cible. Cet ensemble de données doit se trouver dans la même région que celui contenant la table que vous clonez.CLONE_NAME
est le nom du clone de table que vous créez.
bq
Exécutez une commande bq cp
avec l'option --clone
:
bq cp --clone -n project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME
Remplacez les éléments suivants :
PROJECT
est l'ID du projet cible. Ce projet doit appartenir à la même organisation que le projet contenant la table que vous clonez.DATASET
est le nom de l'ensemble de données cible. Cet ensemble de données doit se trouver dans la même région que celui contenant la table que vous clonez. Si l'ensemble de données ne se trouve pas dans la même région que celui contenant la table que vous clonez, une table complète est copiée.CLONE_NAME
est le nom du clone de table que vous créez.
Si vous créez un clone dans le même projet que la table de base, vous pouvez ignorer la spécification d'un projet, comme indiqué ci-dessous:
bq cp --clone -n myDataset.myTable DATASET.CLONE_NAME
API
Appelez la méthode jobs.insert
avec le champ operationType
défini sur CLONE
:
Paramètre | Valeur |
---|---|
projectId |
ID du projet qui exécute la tâche. |
Corps de la requête | { "configuration": { "copy": { "sourceTables": [ { "projectId": "myProject", "datasetId": "myDataset", "tableId": "myTable" } ], "destinationTable": { "projectId": "PROJECT", "datasetId": "DATASET", "tableId": "CLONE_NAME" }, "operationType": "CLONE", "writeDisposition": "WRITE_EMPTY", } } } |
Remplacez les éléments suivants :
PROJECT
est l'ID du projet cible. Ce projet doit appartenir à la même organisation que le projet contenant la table que vous clonez.DATASET
est le nom de l'ensemble de données cible. Cet ensemble de données doit se trouver dans la même région que celui contenant la table que vous clonez. Si l'ensemble de données ne se trouve pas dans la même région que celui contenant la table, vous clonez une table complète.CLONE_NAME
est le nom du clone de table que vous créez.
Contrôle des accès
Lorsque vous créez un clone de table, l'accès au clone de table est défini comme suit :
- Les règles d'accès au niveau des lignes sont copiées depuis la table de base vers le clone de la table.
- Les règles d'accès au niveau des colonnes sont copiées depuis la table de base vers le clone de la table.
L'accès au niveau de la table est déterminé comme suit :
- Si le clone de la table écrase une table existante, l'accès au niveau de la table est conservé. Les tags ne sont pas copiés depuis la table de base.
- Si le clone de la table est une nouvelle ressource, l'accès au niveau de la table pour le clone est déterminé par les stratégies d'accès de l'ensemble de données dans lequel le clone de la table est créé. De plus, les tags sont copiés depuis la table de base vers le clone de la table.
Étapes suivantes
- Une fois le clone de table créé, vous pouvez l'utiliser de la même manière que les tables standards. Pour en savoir plus, consultez la page Gérer les tables.