Gérer les ensembles de données

Ce document explique comment gérer des ensembles de données dans BigQuery. Après avoir créé un ensemble de données, vous pouvez gérer cet ensemble comme décrit ci-dessous.

  • Mettre à jour les éléments suivants d'un ensemble de données :
    • Description
    • Délai d'expiration par défaut pour les nouvelles tables
    • Contrôle des accès
    • Libellés
  • Renommer (recréer) un ensemble de données
  • Copier (recréer) un ensemble de données
  • Supprimer un ensemble de données

Pour plus d'informations sur la création et l'utilisation des ensembles de données, y compris pour savoir comment répertorier des ensembles de données, obtenir des informations à leur sujet et définir les contrôles d'accès aux ensembles de données, consultez la page Créer et utiliser des ensembles de données.

Mettre à jour les propriétés des ensembles de données

Dans un ensemble de données, vous pouvez mettre à jour les éléments suivants :

Autorisations requises

Pour mettre à jour les propriétés d'un ensemble de données, vous devez disposer d'un accès OWNER au niveau de l'ensemble de données ou détenir un rôle IAM au niveau du projet qui comprend les autorisations bigquery.datasets.update. Les rôles IAM prédéfinis au niveau du projet qui sont présentés ci-dessous incluent les autorisations bigquery.datasets.update :

En outre, comme le rôle bigquery.user dispose des autorisations bigquery.datasets.create, un utilisateur ayant le rôle bigquery.user peut mettre à jour les ensembles de données qu'il crée. Lorsqu'un utilisateur détenant le rôle bigquery.user crée un ensemble de données, il bénéficie d'un accès OWNER à celui-ci. L'accès OWNER donne à l'utilisateur un contrôle total sur l'ensemble de données.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la section Contrôle des accès. Pour plus d'informations sur les rôles au niveau des ensembles de données, consultez la section Rôles primitifs pour les ensembles de données.

Mettre à jour les descriptions des ensembles de données

Pour mettre à jour la description d'un ensemble de données, vous pouvez utiliser l'interface utilisateur Web de BigQuery, la commande CLI bq update ou la méthode API datasets.patch.

Pour mettre à jour la description d'un ensemble de données, procédez comme suit.

Interface utilisateur Web

  1. Dans le volet de navigation, sélectionnez votre ensemble de données.

  2. À la section Description de la page Détails de l'ensemble de données, cliquez sur Décrire cet ensemble de données pour ouvrir la zone de texte si l'ensemble de données n'a pas de description. S'il en a une, cliquez sur le texte de la description existante.

  3. Saisissez une description dans la zone de texte ou modifiez la description existante. Lorsque vous cliquez en dehors de la zone, le texte est enregistré.

    Description d'un ensemble de données

CLI

Exécutez la commande bq update avec l'indicateur --description. Si vous mettez à jour un ensemble de données dans un projet autre que votre projet par défaut, ajoutez l'ID de ce projet projet au nom de l'ensemble de données, au format suivant : [PROJECT_ID]:[DATASET].

bq update --description "[DESCRIPTION]" [PROJECT_ID]:[DATASET]

Où :

  • [DESCRIPTION] est le texte qui décrit l'ensemble de données entre guillemets.
  • [PROJECT_ID] est l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données que vous mettez à jour.

Exemples :

Saisissez la commande suivante pour remplacer la description de mydataset par "Description of mydataset". L'ensemble de données mydataset se trouve dans votre projet par défaut.

bq update --description "Description of mydataset" mydataset

Saisissez la commande suivante pour remplacer la description de mydataset par "Description of mydataset". L'ensemble de données se trouve dans myotherproject, votre projet par défaut.

bq update --description "Description of mydataset" myotherproject:mydataset

API

Appelez datasets.patch et utilisez la propriété description pour appliquer la description de votre ensemble de données. Comme la méthode datasets.update remplace la totalité de la ressource d'ensemble de données, il est préférable d'utiliser la méthode datasets.patch.

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.

ds := client.Dataset(datasetID)
meta, err := ds.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.DatasetMetadataToUpdate{
	Description: "Updated Description.",
}
if _, err = ds.Update(ctx, update, meta.ETag); 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 plus d'informations, consultez la documentation de référence sur l'API BigQuery Java.

Créez une instance Dataset.Builder à partir d'une instance Dataset existante à l'aide de la méthode Dataset.toBuilder(). Configurez l'objet pour la génération de l'ensemble de données. Générez l'ensemble de données mis à jour avec la méthode Dataset.Builder.build() et appelez la méthode Dataset.update() pour envoyer la mise à jour à l'API.
Dataset oldDataset = bigquery.getDataset(datasetName);
DatasetInfo datasetInfo = oldDataset.toBuilder().setDescription(newDescription).build();
Dataset newDataset = bigquery.update(datasetInfo);

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 plus d'informations, consultez la documentation de référence sur l'API BigQuery Python.

Configurez la propriété Dataset.description et appelez Client.update_dataset() pour envoyer la mise à jour à l'API.

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_ref = client.dataset('my_dataset')
# dataset = client.get_dataset(dataset_ref)  # API request

assert dataset.description == 'Original description.'
dataset.description = 'Updated description.'

dataset = client.update_dataset(dataset, ['description'])  # API request

assert dataset.description == 'Updated description.'

Mettre à jour les délais d'expiration des tables par défaut

Pour mettre à jour le délai d'expiration par défaut de la table d'un ensemble de données, utilisez l'interface utilisateur Web de BigQuery, la commande CLI bq update ou la méthode d'API datasets.patch.

Vous pouvez définir un délai d'expiration de la table par défaut au niveau de l'ensemble de données ou définir le délai d'expiration d'une table lors de sa création. Si vous définissez le délai d'expiration lorsque vous créez la table, le délai par défaut est ignoré. Si vous ne définissez pas de délai d'expiration de table par défaut au niveau de l'ensemble de données et que vous ne définissez pas de délai d'expiration lorsque vous créez la table, celle-ci n'expire jamais et vous devez la supprimer manuellement.

Lorsque vous mettez à jour le délai d'expiration de table par défaut pour un ensemble de données, prenez en compte les points suivants.

  • Si vous remplacez la valeur Never par un délai d'expiration défini, toutes les tables qui existent déjà dans l'ensemble de données n'expireront que si le délai d'expiration a été défini lors de leur création.
  • Si vous modifiez la valeur du délai d'expiration par défaut, toutes les tables existantes expireront conformément au délai d'expiration de table d'origine. Le nouveau délai d'expiration de table est appliqué à toutes les nouvelles tables créées dans l'ensemble de données, sauf si vous spécifiez un autre délai d'expiration lors de la création d'une table.

La valeur du délai d'expiration par défaut de table est exprimée différemment selon l'endroit où elle est définie. Parmi les méthodes ci-dessous, utilisez celle qui vous donne le niveau de précision adéquat.

  • Dans l'interface Web de BigQuery, le délai d'expiration est exprimé en jours.
  • Dans l'outil de ligne de commande, le délai d'expiration est exprimé en secondes.
  • Dans l'API, le délai d'expiration est exprimé en millisecondes.

Pour mettre à jour le délai d'expiration par défaut d'un ensemble de données, procédez comme suit.

Interface utilisateur Web

Pour mettre à jour le délai d'expiration par défaut à l'aide de l'interface utilisateur Web, suivez ces étapes :

  1. Dans le volet de navigation, sélectionnez votre ensemble de données.

  2. À la section Details (Détails) de la page Dataset Details (Détails de l'ensemble de données), à droite de l'option Default Table Expiration (Expiration de la table par défaut), cliquez sur Edit (Modifier).

    Expiration de la table

  3. Dans la boîte de dialogue Mettre à jour l'expiration, pour le paramètre Expiration des données, cliquez sur Dans et saisissez le délai d'expiration en jours. La valeur par défaut est Jamais.

CLI

Pour mettre à jour le délai d'expiration par défaut des tables nouvellement créées dans un ensemble de données, saisissez la commande bq update avec l'indicateur --default_table_expiration. Si vous mettez à jour un ensemble de données dans un projet autre que votre projet par défaut, ajoutez l'ID de ce projet au nom de l'ensemble de données, au format suivant : [PROJECT_ID]:[DATASET].

bq update --default_table_expiration [INTEGER] [PROJECT_ID]:[DATASET]

Où :

  • [INTEGER] est la durée de vie par défaut (en secondes) des tables nouvellement créées. La valeur minimale est de 3 600 secondes (une heure). Le délai d'expiration correspond à l'heure actuelle plus la valeur [INTEGER]. Spécifiez 0 pour supprimer le délai d'expiration existant. Toute table créée dans l'ensemble de données est supprimée lorsque le nombre de secondes défini par la valeur [INTEGER] au moment de sa création est écoulé. Cette valeur est appliquée si vous ne définissez pas de délai d'expiration pour la table lors de sa création.
  • [PROJECT_ID] est l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données que vous mettez à jour.

Exemples :

Pour les nouvelles tables créées dans mydataset, saisissez la commande suivante pour définir le délai d'expiration de table par défaut sur deux heures (7 200 secondes) à partir de l'heure actuelle. L'ensemble de données se trouve dans votre projet par défaut.

bq update --default_table_expiration 7200 mydataset

Pour les nouvelles tables créées dans mydataset, saisissez la commande suivante pour définir le délai d'expiration de table par défaut sur deux heures (7 200 secondes) à partir de l'heure actuelle. L'ensemble de données se trouve dans myotherproject, et non dans votre projet par défaut.

bq update --default_table_expiration 7200 myotherproject:mydataset

API

Appelez datasets.patch et utilisez la propriété defaultTableExpirationMs pour appliquer votre délai d'expiration de table par défaut en millisecondes. Comme la méthode datasets.update remplace la totalité de la ressource d'ensemble de données, il est préférable d'utiliser la méthode datasets.patch.

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.

ds := client.Dataset(datasetID)
meta, err := ds.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.DatasetMetadataToUpdate{
	DefaultTableExpiration: 24 * time.Hour,
}
if _, err := client.Dataset(datasetID).Update(ctx, update, meta.ETag); 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 plus d'informations, consultez la documentation de référence sur l'API BigQuery Java.

Créez une instance Dataset.Builder à partir d'une instance Dataset existante à l'aide de la méthode Dataset.toBuilder(). Configurez l'objet pour la génération de l'ensemble de données. Générez l'ensemble de données mis à jour avec la méthode Dataset.Builder.build() et appelez la méthode Dataset.update() pour envoyer la mise à jour à l'API.

Configurez le délai d'expiration par défaut avec la méthode Dataset.Builder.setDefaultTableLifetime().

Long beforeExpiration = dataset.getDefaultTableLifetime();

Long oneDayMilliseconds = 24 * 60 * 60 * 1000L;
DatasetInfo.Builder builder = dataset.toBuilder();
builder.setDefaultTableLifetime(oneDayMilliseconds);
bigquery.update(builder.build());  // API request.

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 plus d'informations, consultez la documentation de référence sur l'API BigQuery Python.

Configurez la propriété Dataset.default_table_expiration_ms et appelez Client.update_dataset() pour envoyer la mise à jour à l'API.

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_ref = client.dataset('my_dataset')
# dataset = client.get_dataset(dataset_ref)  # API request

assert dataset.default_table_expiration_ms is None
one_day_ms = 24 * 60 * 60 * 1000  # in milliseconds
dataset.default_table_expiration_ms = one_day_ms

dataset = client.update_dataset(
    dataset, ['default_table_expiration_ms'])  # API request

assert dataset.default_table_expiration_ms == one_day_ms

Mettre à jour les contrôles d'accès d'un ensemble de données

La procédure de mise à jour des contrôles d'accès d'un ensemble de données est très semblable à la procédure d'application de ces contrôles d'accès. Les contrôles d'accès ne peuvent pas être appliqués lors de la création d'un ensemble de données à l'aide de l'interface Web de BigQuery ou de l'outil de ligne de commande. Vous devez d'abord créer l'ensemble de données, puis mettre à jour les contrôles d'accès correspondants. L'API vous permet de mettre à jour les contrôles d'accès des ensembles de données en appelant la méthode datasets.patch.

Autorisations requises

Pour appliquer ou mettre à jour les contrôles d'accès d'un ensemble de données, vous devez disposer d'un accès OWNER au niveau de l'ensemble de données ou détenir un rôle IAM au niveau du projet qui comprend les autorisations bigquery.datasets.update. Les rôles IAM prédéfinis au niveau du projet qui sont présentés ci-dessous incluent les autorisations bigquery.datasets.update :

En outre, comme le rôle bigquery.user dispose des autorisations bigquery.datasets.create, un utilisateur ayant le rôle bigquery.user peut mettre à jour les ensembles de données qu'il crée. Lorsqu'un utilisateur détenant le rôle bigquery.user crée un ensemble de données, il bénéficie d'un accès OWNER à celui-ci. L'accès OWNER donne à l'utilisateur un contrôle total sur l'ensemble de données.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la section Contrôle des accès. Pour plus d'informations sur les rôles au niveau des ensembles de données, consultez la section Rôles primitifs pour les ensembles de données.

Mettre à jour les contrôles d'accès d'un ensemble de données

Lorsque vous mettez à jour les contrôles d'accès d'un ensemble de données, vous pouvez modifier l'accès pour les utilisateurs et groupes suivants :

  • Utilisateur par e-mail : permet à un compte Google individuel d'accéder à l'ensemble de données.
  • Groupe par e-mail : permet à tous les membres d'un groupe Google d'accéder à l'ensemble de données.
  • Domaine : permet à tous les utilisateurs et groupes d'un domaine Google d'accéder à l'ensemble de données.
  • Tous les utilisateurs authentifiés : permet à tous les titulaires d'un compte Google d'accéder à l'ensemble de données (l'ensemble de données devient public).
  • Propriétaires du projet : permet à tous les propriétaires du projet d'accéder à l'ensemble de données.
  • Lecteurs du projet : permet à tous les lecteurs du projet d'accéder à l'ensemble de données.
  • Éditeurs du projet : permet à tous les éditeurs du projet d'accéder à l'ensemble de données.
  • Vue autorisée : permet à une vue d'accéder à l'ensemble de données.

Pour mettre à jour les contrôles d'accès sur un ensemble de données, procédez comme suit.

Interface utilisateur Web

  1. Cliquez sur la flèche du menu déroulant à droite de l'ensemble de données et sélectionnez Partager l'ensemble de données.

  2. Dans la boîte de dialogue Partager l'ensemble de données, procédez comme suit pour modifier les entrées existantes :

    • Supprimez les entrées existantes en cliquant sur l'icône X à droite de l'utilisateur, du groupe ou du compte de service concerné.
    • Modifiez les autorisations d'un utilisateur, groupe ou compte de service en cliquant sur le bouton d'autorisation et en choisissant un niveau d'accès approprié : Is owner (OWNER), Can edit (WRITER) ou Can view (READER). Pour plus d'informations sur les rôles au niveau des ensembles de données, consultez la section Rôles primitifs pour les ensembles de données.
  3. Dans la boîte de dialogue Partager l'ensemble de données, suivez ces étapes pour ajouter de nouvelles entrées :

    1. Cliquez sur le menu déroulant à gauche du champ Ajouter des personnes et choisissez l'option appropriée.

    2. Saisissez une valeur dans la zone de texte. Par exemple, si vous avez choisi Utilisateur par e-mail, entrez l'adresse e-mail de l'utilisateur.

    3. À droite du champ Ajouter des personnes, cliquez sur Consultation autorisée et choisissez le rôle approprié dans la liste.

      Ajouter des personnes à un ensemble de données

      • "Consultation autorisée" (READER) permet à bigquery.dataViewer d'accéder à l'ensemble de données.
      • "Modification autorisée" (WRITER) permet à bigquery.dataEditor d'accéder à l'ensemble de données.
      • "Propriétaire" (OWNER) permet à bigquery.dataOwner d'accéder à l'ensemble de données.
    4. Cliquez sur Ajouter.

  4. Lorsque vous avez terminé l'ajout, la suppression ou la modification de vos contrôles d'accès, cliquez sur Enregistrer les modifications.

  5. Vérifiez vos contrôles d'accès en cliquant sur la flèche du menu déroulant à droite de l'ensemble de données et en choisissant Partager l'ensemble de données. Confirmez les paramètres dans la boîte de dialogue Partager l'ensemble de données.

Ligne de commande

  1. Écrivez les informations sur l'ensemble de données existant (y compris les contrôles d'accès) dans un fichier JSON à l'aide de la commande show. Si l'ensemble de données se trouve dans un projet autre que votre projet par défaut, ajoutez l'ID de ce projet au nom de l'ensemble de données, au format suivant : [PROJECT_ID]:[DATASET].

    bq show --format=prettyjson [PROJECT_ID]:[DATASET] > [PATH_TO_FILE]
    

    Où :

    • [PROJECT_ID] correspond à l'ID de votre projet.
    • [DATASET] est le nom de votre ensemble de données.
    • [PATH_TO_FILE] est le chemin d'accès au fichier JSON sur votre ordinateur local.

    Exemples :

    Saisissez la commande suivante pour écrire les contrôles d'accès pour mydataset dans un fichier JSON. mydataset se trouve dans votre projet par défaut.

    bq show --format=prettyjson mydataset > /tmp/mydataset.json
    

    Saisissez la commande suivante pour écrire les contrôles d'accès pour mydataset dans un fichier JSON. mydataset se trouve dans myotherproject.

    bq show --format=prettyjson myotherproject:mydataset > /tmp/mydataset.json
    
  2. Apportez vos modifications à la section "access" du fichier JSON. Vous pouvez ajouter ou supprimer n'importe quelle entrée specialGroup : projectOwners, projectWriters, projectReaders et allAuthenticatedUsers. Vous pouvez également ajouter, supprimer ou modifier n'importe lequel des éléments suivants : userByEmail, groupByEmail et domain.

    Par exemple, la section d'accès du fichier JSON d'un ensemble de données peut se présenter sous la forme suivante :

    {
     "access": [
      {
       "role": "READER",
       "specialGroup": "projectReaders"
      },
      {
       "role": "WRITER",
       "specialGroup": "projectWriters"
      },
      {
       "role": "OWNER",
       "specialGroup": "projectOwners"
      }
      {
       "role": "READER",
       "specialGroup": "allAuthenticatedUsers"
      }
      {
       "role": "READER",
       "domain": "[DOMAIN_NAME]"
      }
      {
       "role": "WRITER",
       "userByEmail": "[USER_EMAIL]"
      }
      {
       "role": "READER",
       "groupByEmail": "[GROUP_EMAIL]"
      }
     ],
    }
    

  3. Une fois les modifications effectuées, utilisez la commande update avec l'indicateur --source pour inclure le fichier JSON. Si l'ensemble de données se trouve dans un projet autre que votre projet par défaut, ajoutez l'ID de ce projet au nom de l'ensemble de données, au format suivant : [PROJECT_ID]:[DATASET].

    bq update --source [PATH_TO_FILE] [PROJECT_ID]:[DATASET]
    

    Où :

    • [PATH_TO_FILE] est le chemin d'accès au fichier JSON sur votre ordinateur local.
    • [PROJECT_ID] correspond à l'ID de votre projet.
    • [DATASET] est le nom de votre ensemble de données.

    Exemples :

    Saisissez la commande suivante pour mettre à jour les contrôles d'accès pour mydataset. mydataset se trouve dans votre projet par défaut.

    bq update --source /tmp/mydataset.json mydataset
    

    Saisissez la commande suivante pour mettre à jour les contrôles d'accès pour mydataset. mydataset se trouve dans myotherproject.

    bq update --source /tmp/mydataset.json myotherproject:mydataset
    
  4. Pour vérifier les modifications de vos contrôles d'accès, saisissez de nouveau la commande show sans écrire les informations dans un fichier.

    bq show --format=prettyjson [DATASET]

    ou

    bq show --format=prettyjson [PROJECT_ID]:[DATASET]

API

Appelez la méthode datasets.patch et utilisez la propriété access pour mettre à jour vos contrôles d'accès. Pour plus d'informations, consultez la section Ensembles de données.

Comme la méthode datasets.update remplace la totalité de la ressource d'ensemble de données, il est préférable d'utiliser la méthode datasets.patch pour mettre à jour les contrôles d'accès.

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.

ds := client.Dataset(datasetID)
meta, err := ds.Metadata(ctx)
if err != nil {
	return err
}
// Append a new access control entry to the existing access list.
update := bigquery.DatasetMetadataToUpdate{
	Access: append(meta.Access, &bigquery.AccessEntry{
		Role:       bigquery.ReaderRole,
		EntityType: bigquery.UserEmailEntity,
		Entity:     "sample.bigquery.dev@gmail.com"},
	),
}

// Leverage the ETag for the update to assert there's been no modifications to the
// dataset since the metadata was originally read.
if _, err := ds.Update(ctx, update, meta.ETag); 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 plus d'informations, consultez la documentation de référence sur l'API BigQuery Java.

Créez une instance Dataset.Builder à partir d'une instance Dataset existante à l'aide de la méthode Dataset.toBuilder(). Configurez l'objet pour la génération de l'ensemble de données. Générez l'ensemble de données mis à jour avec la méthode Dataset.Builder.build() et appelez la méthode Dataset.update() pour envoyer la mise à jour à l'API.

Configurez les contrôles d'accès avec la méthode Dataset.Builder.setAcl().

List<Acl> beforeAcls = dataset.getAcl();

// Make a copy of the ACLs so that they can be modified.
ArrayList<Acl> acls = new ArrayList<>(beforeAcls);
acls.add(Acl.of(new Acl.User("sample.bigquery.dev@gmail.com"), Acl.Role.READER));
DatasetInfo.Builder builder = dataset.toBuilder();
builder.setAcl(acls);

bigquery.update(builder.build());  // API request.

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 plus d'informations, consultez la documentation de référence sur l'API BigQuery Python.

Définissez la propriété dataset.access_entries avec les contrôles d'accès pour un ensemble de données. Appelez ensuite la fonction client.update_dataset() pour mettre à jour la propriété.

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

entry = bigquery.AccessEntry(
    role='READER',
    entity_type='userByEmail',
    entity_id='sample.bigquery.dev@gmail.com')
assert entry not in dataset.access_entries
entries = list(dataset.access_entries)
entries.append(entry)
dataset.access_entries = entries

dataset = client.update_dataset(dataset, ['access_entries'])  # API request

assert entry in dataset.access_entries

Renommer des ensembles de données

Pour le moment, il n'est pas possible de modifier le nom d'un ensemble de données existant ni de copier un ensemble de données pour lui attribuer un nouveau nom. Pour modifier le nom d'un ensemble de données, vous devez le recréer. Procédez comme suit.

  1. Créez un nouvel ensemble de données et indiquez le nouveau nom.

  2. Copiez les tables de l'ancien ensemble de données dans le nouveau.

  3. Recréez les vues dans le nouvel ensemble de données.

  4. Supprimez l'ancien ensemble de données pour ne pas avoir à payer des coûts de stockage supplémentaires.

Copier des ensembles de données

Pour le moment, il n'est pas possible de copier un ensemble de données. Vous devez donc le recréer. Procédez comme suit.

  1. Créez un nouvel ensemble de données. Comme les noms des ensembles de données doivent être uniques au sein de chaque projet, vous devez attribuer un nouveau nom à un ensemble de données que vous recréez dans le même projet.

  2. Copiez les tables de l'ancien ensemble de données dans le nouveau.

  3. Recréez les vues dans le nouvel ensemble de données.

  4. Supprimez l'ancien ensemble de données pour ne pas avoir à payer des coûts de stockage supplémentaires.

Supprimer des ensembles de données

Vous pouvez supprimer un ensemble de données à l'aide de l'interface Web de BigQuery, de la commande CLI bq rm ou de la méthode d'API datasets.delete.

Autorisations requises

Pour supprimer un ensemble de données, vous devez disposer d'un accès OWNER au niveau de l'ensemble de données ou détenir un rôle IAM au niveau du projet qui comprend les autorisations bigquery.datasets.delete. Si l'ensemble de données contient des tables, bigquery.tables.delete est également requis. Les rôles IAM prédéfinis au niveau du projet qui sont présentés ci-dessous incluent les autorisations bigquery.datasets.delete et bigquery.tables.delete.

En outre, comme le rôle bigquery.user dispose des autorisations bigquery.datasets.create, un utilisateur ayant le rôle bigquery.user peut supprimer les ensembles de données qu'il crée. Lorsqu'un utilisateur détenant le rôle bigquery.user crée un ensemble de données, il bénéficie d'un accès OWNER à cet ensemble. L'accès OWNER donne à l'utilisateur un contrôle total sur l'ensemble de données.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la section Contrôle des accès. Pour plus d'informations sur les rôles au niveau des ensembles de données, consultez la section Rôles primitifs pour les ensembles de données.

Supprimer un ensemble de données

Lorsque vous supprimez un ensemble de données à l'aide de l'interface utilisateur Web, les tables de l'ensemble de données (et les données qu'elles contiennent) sont supprimées. Lorsque vous supprimez un ensemble de données à l'aide de la CLI, vous devez utiliser l'indicateur -r pour supprimer les tables de cet ensemble de données.

Lorsqu'un ensemble de données est supprimé, il ne peut plus être récupéré ni restauré. La suppression d'un ensemble de données est définitive.

Pour supprimer un ensemble de données, procédez comme suit.

Interface utilisateur Web

  1. Cliquez sur l'icône de flèche vers le bas flèche vers le bas à côté du nom de votre ensemble de données dans la fenêtre de navigation, puis cliquez sur Supprimer l'ensemble de données.

  2. Dans la boîte de dialogue Supprimer l'ensemble de données :

    • Pour l'ID de l'ensemble de données, saisissez le nom de l'ensemble de données à supprimer.
    • Cliquez sur OK.

      Supprimer un ensemble de données

Ligne de commande

Utilisez la commande bq rm avec l'indicateur --dataset ou le raccourci -d (facultatif) pour supprimer un ensemble de données. Lorsque vous utilisez la CLI pour supprimer un ensemble de données, vous devez confirmer la commande. Pour ignorer la confirmation, utilisez l'indicateur -f.

De plus, si l'ensemble de données contient des tables, vous devez utiliser l'indicateur -r pour toutes les supprimer de l'ensemble de données. Si vous supprimez une table dans un projet autre que votre projet par défaut, ajoutez l'ID de ce projet au nom de l'ensemble de données, au format suivant : [PROJECT_ID]:[DATASET].

bq rm -r -f -d [PROJECT_ID]:[DATASET]

Où :

  • [PROJECT_ID] est l'ID de votre projet.
  • [DATASET] est le nom de l'ensemble de données que vous supprimez.

Exemples :

Saisissez la commande suivante pour supprimer mydataset et toutes les tables qu'il contient de votre projet par défaut. La commande utilise le raccourci facultatif -d.

bq rm -r -d mydataset

Lorsque vous y êtes invité, saisissez y, puis appuyez sur ENTRÉE.

Saisissez la commande suivante pour supprimer mydataset et toutes les tables qu'il contient de myotherproject. La commande n'utilise pas le raccourci facultatif -d. Pour ignorer la confirmation, utilisez l'indicateur -f.

bq rm -r -f myotherproject:mydataset

API

Appelez la méthode datasets.delete pour supprimer l'ensemble de données et définissez le paramètre deleteContents sur true pour supprimer les tables qu'il contient.

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.

if err := client.Dataset(datasetID).Delete(ctx); err != nil {
	return fmt.Errorf("Failed to delete dataset: %v", 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.

DatasetId datasetId = DatasetId.of(projectId, datasetName);
boolean deleted = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
if (deleted) {
  // the dataset was deleted
} else {
  // the dataset was not found
}

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 de l'API BigQuery Node.js.

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

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = "your-project-id";
// const datasetId = "my_dataset";

// Creates a client
const bigquery = new BigQuery({
  projectId: projectId,
});

// Creates a reference to the existing dataset
const dataset = bigquery.dataset(datasetId);

// Deletes the dataset
dataset
  .delete()
  .then(() => {
    console.log(`Dataset ${dataset.id} deleted.`);
  })
  .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;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->delete();
printf('Deleted dataset %s' . PHP_EOL, $datasetId);

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 de l'API BigQuery Python.

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

# Delete a dataset that does not contain any tables
# dataset1_id = 'my_empty_dataset'
dataset1_ref = client.dataset(dataset1_id)
client.delete_dataset(dataset1_ref)  # API request

print('Dataset {} deleted.'.format(dataset1_id))

# Use the delete_contents parameter to delete a dataset and its contents
# dataset2_id = 'my_dataset_with_tables'
dataset2_ref = client.dataset(dataset2_id)
client.delete_dataset(dataset2_ref, delete_contents=True)  # API request

print('Dataset {} deleted.'.format(dataset2_id))

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 to delete"

require "google/cloud/bigquery"

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

dataset.delete

puts "Deleted dataset: #{dataset_id}"

Étapes suivantes

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

Envoyer des commentaires concernant…

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