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

Ce document explique comment mettre à jour les propriétés d'un ensemble de données dans BigQuery. Une fois que vous avez créé un ensemble de données, vous pouvez mettre à jour les propriétés suivantes :

Autorisations requises

Pour mettre à jour les propriétés d'un ensemble de données, vous devez au minimum disposer des autorisations bigquery.datasets.update et bigquery.datasets.get. Les rôles Cloud IAM prédéfinis suivants incluent des autorisations bigquery.datasets.update et bigquery.datasets.get  :

  • bigquery.dataOwner
  • bigquery.admin

En outre, si un utilisateur possède des autorisations bigquery.datasets.create, lorsqu'il crée un ensemble de données, il obtient également le rôle bigquery.dataOwner qui lui permet d'y accéder. Un accès bigquery.dataOwner permet à l'utilisateur de mettre à jour les propriétés des ensembles de données qu'il crée.

Pour en savoir plus sur les rôles et les autorisations Cloud IAM dans BigQuery, consultez la page Contrôle des accès.

Mettre à jour les descriptions des ensembles de données

Vous pouvez mettre à jour la description d'un ensemble de données à l'aide des méthodes suivantes :

  • Utiliser la console GCP ou l'interface utilisateur Web classique de BigQuery
  • Utiliser la commande CLI bq update
  • Appeler la méthode d'API datasets.patch
  • Utiliser les bibliothèques clientes

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

Console

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

  2. Sur la page Details (Détails), cliquez sur l'icône en forme de crayon à côté de l'onglet Description pour modifier la description.

    Paramètres de requête

  3. Dans la boîte de dialogue, saisissez une description dans la zone de texte ou modifiez la description existante. Cliquez sur Mettre à jour pour enregistrer la nouvelle description.

UI classique

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

  2. À la section Description de la page Dataset Details (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. Sinon, cliquez sur le texte de description existant.

  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 au nom de l'ensemble de données, au format suivant : project_id:dataset.

bq update \
--description "string" \
project_id:dataset

Où :

  • string 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 mettez à jour la propriété description dans la ressource d'ensemble de données. Comme la méthode datasets.update remplace la ressource d'ensemble de données dans son intégralité, 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 décrite dans le guide de démarrage rapide de BigQuery relatif à l'utilisation des 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 cet exemple, suivez les instructions de configuration pour Java décrites dans le Guide de démarrage rapide de BigQuery à l'aide des 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(), puis 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 d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery relatif à l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de 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

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)
dataset.description = "Updated description."
dataset = client.update_dataset(dataset, ["description"])

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with description '{}'.".format(
        full_dataset_id, dataset.description
    )
)

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

Vous pouvez mettre à jour le délai d'expiration de table par défaut pour un ensemble de données à l'aide des méthodes suivantes :

  • Utiliser la console GCP ou l'interface utilisateur Web classique de BigQuery
  • Utiliser la commande CLI bq update
  • Appeler la méthode d'API datasets.patch
  • Utiliser les bibliothèques clientes

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 la console GCP et l'interface utilisateur Web classique 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.

Console

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

  2. Sur la page Détails, cliquez sur l'icône en forme de crayon à côté de l'onglet Description pour modifier le texte de description.

  3. Dans la boîte de dialogue Informations sur l'ensemble de données, dans la section Expiration de la table par défaut, saisissez une valeur pour le paramètre Nombre de jours après la création de la table.

  4. Cliquez sur Enregistrer.

UI classique

  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 UTC actuelle plus la valeur entière. Spécifiez 0 pour supprimer le délai d'expiration existant. Toutes les tables créées dans l'ensemble de données sont supprimées integer secondes après leur création. 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 mettez à jour la propriété defaultTableExpirationMs dans la ressource d'ensemble de données. Le délai d'expiration est exprimé en millisecondes dans l'API. Comme la méthode datasets.update remplace l'intégralité 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 décrite dans le guide de démarrage rapide de BigQuery relatif à l'utilisation des 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 cet exemple, suivez les instructions de configuration pour Java décrites dans le Guide de démarrage rapide de BigQuery à l'aide des 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(), puis 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 d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery relatif à l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de 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

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)
dataset.default_table_expiration_ms = 24 * 60 * 60 * 1000  # in milliseconds

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

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset {} with new expiration {}".format(
        full_dataset_id, dataset.default_table_expiration_ms
    )
)

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

Vous pouvez mettre à jour le délai d'expiration de partition par défaut d'un ensemble de données à l'aide des méthodes suivantes :

  • Utiliser la commande CLI bq update
  • Appeler la méthode d'API datasets.patch
  • Utiliser les bibliothèques clientes

La configuration ou la mise à jour du délai d'expiration de partition par défaut d'un ensemble de données n'est actuellement pas possible dans la console GCP ni dans l'interface utilisateur Web classique de BigQuery.

Vous pouvez définir, au niveau de l'ensemble de données, un délai d'expiration de partition par défaut qui affecte l'ensemble des tables partitionnées nouvellement créées. Vous pouvez également définir un délai d'expiration de partition pour des tables individuelles au moment de leur création. Si vous définissez à la fois un délai d'expiration de partition par défaut au niveau de l'ensemble de données et un délai d'expiration de table par défaut au niveau de l'ensemble de données, les nouvelles tables partitionnées n'auront qu'un délai d'expiration de partition. Si les deux options sont définies, le délai d'expiration de partition par défaut remplace celui appliqué aux tables.

Si vous définissez le délai d'expiration de partition lorsque vous créez la table partitionnée, cette valeur remplace le délai d'expiration de partition par défaut au niveau de l'ensemble de données, s'il existe.

Si vous ne définissez pas de délai d'expiration de partition par défaut au niveau de l'ensemble de données ni de délai d'expiration de partition lors de la création de la table, les partitions n'expirent jamais et vous devez les supprimer manuellement.

Lorsque vous définissez un délai d'expiration de partition par défaut sur un ensemble de données, celui-ci s'applique à toutes les partitions de toutes les tables partitionnées créées dans l'ensemble de données. Lorsque vous définissez le délai d'expiration de partition sur une table, celui-ci s'applique à toutes les partitions créées dans la table spécifiée. Actuellement, vous ne pouvez pas appliquer différents délais d'expiration à différentes partitions de la même table.

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

  • Si vous remplacez la valeur "Never" (Jamais) par un délai d'expiration défini, toutes les partitions qui existent déjà dans les tables partitionnées de l'ensemble de données n'expireront que si le délai d'expiration de partition a été défini sur la table au moment de sa création.
  • Si vous modifiez la valeur du délai d'expiration de partition par défaut, toutes les partitions des tables partitionnées existantes expirent conformément au délai d'expiration de partition par défaut d'origine. Le nouveau délai d'expiration de partition par défaut est appliqué à toutes les nouvelles tables partitionnées créées dans l'ensemble de données, sauf si vous spécifiez un autre délai d'expiration de partition sur la table au moment de la création de celle-ci.

La valeur du délai d'expiration de partition par défaut 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'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 de partition par défaut d'un ensemble de données, procédez comme suit :

Console

La mise à jour du délai d'expiration de partition par défaut d'un ensemble de données n'est actuellement pas possible dans la console GCP.

UI classique

La mise à jour du délai d'expiration de partition par défaut d'un ensemble de données n'est actuellement pas possible dans l'UI Web de BigQuery.

CLI

Pour mettre à jour le délai d'expiration par défaut d'un ensemble de données, saisissez la commande bq update avec l'indicateur --default_partition_expiration. Si vous mettez à jour un ensemble de données dans un projet autre que celui par défaut, ajoutez l'ID de ce projet à l'ensemble de données, au format suivant : project_id:dataset.

bq update \
--default_partition_expiration integer \
project_id:dataset

Où :

  • integer est la durée de vie par défaut (en secondes) des partitions des tables partitionnées nouvellement créées. Aucune valeur minimale n'est définie pour cet indicateur. Spécifiez 0 pour supprimer le délai d'expiration existant. Toutes les partitions des tables partitionnées nouvellement créées sont supprimées après [INTEGER] secondes à compter de la date UTC de la partition. Cette valeur est appliquée si vous ne définissez pas de délai d'expiration de partition sur 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 :

Saisissez la commande suivante pour définir le délai d'expiration de partition par défaut pour les nouvelles tables partitionnées créées dans mydataset sur 26 heures (93 600 secondes). L'ensemble de données se trouve dans votre projet par défaut.

bq update --default_partition_expiration 93600 mydataset

Saisissez la commande suivante pour définir le délai d'expiration de partition par défaut pour les nouvelles tables partitionnées créées dans mydataset sur 26 heures (93 600 secondes). L'ensemble de données se trouve dans myotherproject, et non dans votre projet par défaut.

bq update --default_partition_expiration 93600 myotherproject:mydataset

API

Appelez datasets.patch et mettez à jour la propriété defaultPartitionExpirationMs dans la ressource d'ensemble de données. Le délai d'expiration est exprimé en millisecondes. Comme la méthode datasets.update remplace la ressource d'ensemble de données dans son intégralité, il est préférable d'utiliser la méthode datasets.patch.

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 de l'ensemble de données à l'aide de la console GCP, l'interface utilisateur Web classique de BigQuery ni 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.

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

  • Adresse e-mail du compte Google : permet à un compte Google individuel d'accéder à l'ensemble de données
  • Groupe Google : permet à tous les membres d'un groupe Google d'accéder à l'ensemble de données
  • Domaine Google Apps : permet à tous les utilisateurs et groupes d'un domaine Google d'accéder à l'ensemble de données
  • Compte de service : permet à un compte de service d'accéder à l'ensemble de données
  • Toute personne : saisissez "allUsers" pour autoriser l'accès au grand public
  • Tous les comptes Google : saisissez "allAuthenticatedUsers" pour autoriser l'accès à tous les utilisateurs connectés à un compte Google
  • Vues autorisées : permet à une vue autorisée 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.

Console

  1. Dans le volet de navigation, à la section Resources, cliquez sur l'ensemble de données.

  2. Cliquez sur Partager l'ensemble de données.

  3. Dans la boîte de dialogue Partager l'ensemble de données, développez la liste des entrées existantes, puis cliquez sur l'icône de suppression (corbeille) pour les supprimer.

  4. Dans la boîte de dialogue Partager l'ensemble de données, suivez ces étapes pour ajouter de nouvelles entrées :

    1. Saisissez le nom de l'entité dans la zone Ajouter des membres.

    2. Pour Sélectionner un rôle, choisissez un rôle Cloud IAM approprié dans la liste. Pour en savoir plus sur les autorisations attribuées à chaque rôle BigQuery prédéfini, consultez la page Contrôle des accès.

    3. Cliquez sur Ajouter.

  5. Pour ajouter une vue autorisée, cliquez sur l'onglet Vue autorisée, saisissez les noms du projet, de l'ensemble de données et de la vue, puis cliquez sur Ajouter.

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

UI classique

  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 :

    • Pour supprimer des entrée existantes, cliquez sur l'icône X à droite de l'entité.
    • Pour modifier les autorisations d'une entité, cliquez sur le bouton d'autorisation et choisissez un niveau d'accès approprié : Is owner (OWNER), Can edit (WRITER) ou Can view (READER). Pour en savoir plus sur les rôles au niveau de l'ensemble de données, consultez la page Contrôle des accès.
  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, saisissez l'adresse e-mail de l'utilisateur.

    3. À droite du champ Add People (Ajouter des personnes), cliquez sur Can view (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, utilisateur" (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, puis en choisissant Partager l'ensemble de données. Vous pouvez confirmer les paramètres dans la boîte de dialogue Partager l'ensemble de données.

CLI

  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 celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le format suivant : project_id:dataset.

    bq show \
    --format=prettyjson \
    project_id:dataset > path_to_file
    

    Où :

    • project_id est 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 afin d'é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 afin d'é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 ressemblerait à ceci :

    {
     "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 celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données, en respectant le 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 est l'ID de votre projet.
    • dataset est le nom de votre ensemble de données.

    Exemples :

    Saisissez la commande suivante afin de 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 datasets.patch et mettez à jour la propriété access dans la ressource d'ensemble de données.

Comme la méthode datasets.update remplace 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 décrite dans le guide de démarrage rapide de BigQuery relatif à l'utilisation des 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 cet exemple, suivez les instructions de configuration pour Java décrites dans le Guide de démarrage rapide de BigQuery à l'aide des 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(), puis 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 d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery relatif à l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de 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

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)

entry = bigquery.AccessEntry(
    role="READER",
    entity_type="userByEmail",
    entity_id="sample.bigquery.dev@gmail.com",
)

entries = list(dataset.access_entries)
entries.append(entry)
dataset.access_entries = entries

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

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with modified user permissions.".format(full_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.