Gérer les tables groupées

Après avoir créé une table groupée dans BigQuery, vous pouvez contrôler qui peut y accéder, examiner ses propriétés et modifier ses colonnes de clustering à mesure que vos schémas de requête évoluent. Ce document explique comment contrôler l'accès aux tables groupées, obtenir des informations les concernant, lister les tables groupées d'un ensemble de données et modifier la spécification de clustering.

Pour en savoir plus sur les tables groupées, consultez Présentation des tables groupées. Pour en créer une, consultez Créer des tables en cluster.

Avant de commencer

Pour obtenir des informations sur les tables, vous devez disposer de l'autorisation bigquery.tables.get. Les rôles IAM prédéfinis suivants incluent les autorisations bigquery.tables.get :

  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

En outre, si un utilisateur dispose de l'autorisation bigquery.datasets.create, lorsqu'il crée un ensemble de données, il bénéficie d'un accès bigquery.dataOwner à cet ensemble de données. L'accès bigquery.dataOwner permet à l'utilisateur d'obtenir des informations sur les tables d'un ensemble de données.

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.

Contrôler l'accès aux tables en cluster

Pour configurer l'accès aux tables et aux vues, vous pouvez attribuer un rôle IAM à une entité située aux niveaux suivants, classés par ordre de ressources autorisées (de la plus grande à la plus petite) :

Vous pouvez également restreindre l'accès aux données dans les tables à l'aide des méthodes suivantes :

L'accès à n'importe quelle ressource protégée par IAM est cumulatif. Par exemple, si une entité n'a pas d'accès à un niveau élevé, tel qu'un projet, vous pouvez lui accorder l'accès au niveau de l'ensemble de données. Elle aura alors accès aux tables et aux vues de l'ensemble de données. De même, si l'entité n'a pas accès au niveau supérieur ou au niveau de l'ensemble de données, vous pouvez lui accorder l'accès au niveau de la table ou de la vue.

L'attribution de rôles IAM à un niveau supérieur de la hiérarchie des ressourcesCloud de Confiance by S3NS, par exemple au niveau du projet, du dossier ou de l'organisation, permet à l'entité d'accéder à un large ensemble de ressources. Par exemple, si vous attribuez un rôle à une entité au niveau du projet, elle obtient des autorisations qui s'appliquent à tous les ensembles de données du projet.

L'attribution d'un rôle au niveau de l'ensemble de données spécifie les opérations qu'une entité est autorisée à effectuer sur les tables et les vues de cet ensemble de données spécifique, même si cette entité n'a pas accès à un niveau supérieur. Pour en savoir plus sur la configuration des contrôles d'accès aux ensembles de données, consultez la page Contrôler l'accès aux ensembles de données.

L'attribution d'un rôle au niveau de la table ou de la vue spécifie les opérations qu'une entité est autorisée à effectuer sur des tables et des vues spécifiques, même si cette entité n'a pas accès à un niveau supérieur. Pour en savoir plus sur la configuration des contrôles d'accès au niveau des tables, consultez la page Contrôler l'accès aux tables et aux vues.

Vous pouvez également créer des rôles personnalisés IAM. Si vous créez un rôle personnalisé, les autorisations que vous accordez dépendent des opérations spécifiques que vous souhaitez autoriser l'entité à effectuer.

Vous ne pouvez pas définir une autorisation "deny" sur une ressource protégée par IAM.

Pour en savoir plus sur les rôles et les autorisations, consultez la page Comprendre les rôles dans la documentation IAM ainsi que la page rôles et autorisations IAM de BigQuery.

Obtenir des informations sur des tables groupées

Sélectionnez l'une des options suivantes :

Console

  1. Dans la console Cloud de Confiance , accédez au volet Ressources.

  2. Cliquez sur le nom de votre ensemble de données pour le développer, puis sur le nom de la table que vous souhaitez afficher.

  3. Cliquez sur Détails.

    Les détails de la table s'affichent, y compris les colonnes de clustering.

    Détails de la table.

SQL

Pour les tables groupées, vous pouvez interroger la colonne CLUSTERING_ORDINAL_POSITION dans la vue INFORMATION_SCHEMA.COLUMNS pour rechercher le décalage avec un indice de 1 de la colonne dans les colonnes de clustering de la table :

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

    Accéder à BigQuery

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

    CREATE TABLE mydataset.data (column1 INT64, column2 INT64)
    CLUSTER BY column1, column2;
    SELECT
      column_name, clustering_ordinal_position
    FROM
      mydataset.INFORMATION_SCHEMA.COLUMNS;

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

La position ordinale de clustering est 1 pour column1 et 2 pour column2. D'autres métadonnées de table sont disponibles via les vues TABLES, TABLE_OPTIONS, COLUMNS et COLUMN_FIELD_PATH dans INFORMATION_SCHEMA.

bq

Exécutez la commande bq show pour afficher toutes les informations sur la table. L'option --schema permet de n'afficher que les informations de schéma de table. L'option --format peut être utilisée pour contrôler le résultat.

Si vous souhaitez obtenir des informations sur une table se trouvant 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 \
    --schema \
    --format=prettyjson \
    PROJECT_ID:DATASET.TABLE

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • DATASET : nom de l'ensemble de données
  • TABLE : nom de la table

Exemples :

Saisissez la commande suivante pour afficher toutes les informations sur la table myclusteredtable de l'ensemble de données mydataset. mydataset se trouve dans votre projet par défaut.

bq show --format=prettyjson mydataset.myclusteredtable

Le résultat doit se présenter sous la forme suivante :

{
  "clustering": {
    "fields": [
      "customer_id"
    ]
  },
...
}

API

Appelez la méthode bigquery.tables.get et définissez tous les paramètres pertinents.

Répertorier les tables en cluster dans un ensemble de données

Les autorisations requises pour lister les tables groupées et les étapes pour les lister sont les mêmes que pour les tables standards. Pour en savoir plus, consultez Répertorier les tables dans un ensemble de données.

Modifier la spécification du clustering

Vous pouvez modifier ou supprimer les spécifications de clustering d'une table, ou modifier l'ensemble des colonnes groupées dans une table groupée. Cette méthode de mise à jour de l'ensemble de colonnes en cluster est utile pour les tables qui utilisent des insertions en flux continu, car elles ne peuvent pas facilement être échangées par d'autres méthodes.

Suivez ces étapes pour appliquer une nouvelle spécification de clustering à des tables non partitionnées ou partitionnées.

  1. Dans l'outil bq, mettez à jour la spécification de clustering de votre table pour qu'elle corresponde au nouveau clustering :

     bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE 

    Remplacez les éléments suivants :

    • CLUSTER_COLUMN : colonne sur laquelle vous effectuez le clustering, par exemple mycolumn
    • DATASET : nom de l'ensemble de données contenant la table, par exemple mydataset
    • ORIGINAL_TABLE : nom de votre table d'origine, par exemple mytable

    Vous pouvez également appeler la méthode API tables.update ou tables.patch pour modifier la spécification du clustering.

  2. Pour mettre en cluster toutes les lignes conformément à la nouvelle spécification de clustering, exécutez l'instruction UPDATE suivante :

    UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true

Étapes suivantes