Créer et gérer des vues paramétrées

Vous pouvez créer une vue paramétrée à partir d'une vue logique dans Bigtable, puis effectuer des opérations sur les vues paramétrées.

Avant de lire cette page, familiarisez-vous avec la présentation des vues paramétrées.

Avant de commencer

Si vous prévoyez d'utiliser Google Cloud CLI, procédez comme suit :

  1. Installez la Google Cloud CLI.

  2. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  3. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init

Rôles requis

Pour obtenir les autorisations nécessaires pour créer et gérer des vues paramétrées, demandez à votre administrateur de vous accorder le rôle Administrateur Bigtable (roles/bigtable.admin) sur l'instance.

Vous pouvez également demander les autorisations suivantes au niveau de l'instance :

  • Créer : bigtable.logicalViews.create
  • Mettre à jour : bigtable.logicalViews.update
  • Supprimer : bigtable.logicalViews.delete
  • Liste : bigtable.logicalViews.list

Pour créer une vue paramétrée, vous devez également disposer au minimum de l'autorisation bigtable.tables.readRows sur la table source.

Créer une vue paramétrée

Une vue paramétrée est une table virtuelle définie par une instruction SQL SELECT qui peut inclure la fonction VIEW_PARAMETERS().

Pour créer une vue paramétrée, utilisez la gcloud bigtable logical-views create commande.

gcloud bigtable logical-views create VIEW \
  --instance=INSTANCE \
  --query="SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('VIEW_PARAMETERS') AS BYTES))"

Remplacez les éléments suivants :

  • VIEW: ID de la nouvelle vue paramétrée, qui peut comporter jusqu'à 128 caractères. L'ID doit être unique parmi les ID de table et les ID de vue de l'instance.
  • INSTANCE: ID de l'instance dans laquelle créer la vue paramétrée.
  • TABLE_ID : ID de la table source.
  • VIEW_PARAMETERS : nom du paramètre de la vue entre guillemets simples à transmettre en tant qu'argument à la VIEW_PARAMETERS() fonction.

Facultatif :

  • Pour protéger la vue paramétrée contre la suppression, ajoutez l'indicateur --deletion-protection à la commande. Si vous n'appliquez pas ce paramètre, la vue peut être supprimée. Vous pouvez également autoriser explicitement la suppression de la vue en ajoutant --no-deletion-protection. Pour en savoir plus, consultez la section Mettre à jour une vue paramétrée de ce document.

Créer une vue paramétrée avec une clé de ligne structurée

Si votre table utilise une clé de ligne structurée, vous pouvez filtrer un segment spécifique de la clé de ligne.

Par exemple, si une clé de ligne dans une table d'historique des achats stocke l'utilisateur, l'horodatage de la date d'achat et l'ID de commande, délimités par un symbole #, vous pouvez spécifier le schéma de ligne comme suit :

field {
    field_name: "user_id"
    type: { bytesType { encoding { raw {} } } }
  }
  field {
    field_name: "reversed_timestamp"
    type: { timestampType { encoding { unixMicrosInt64 { encoding: {           orderedCodeBytes: {} } } } } }
  }
  field {
    field_name: "order_id"
    type: { stringType { encoding { utf8Bytes {} } } }
  }
  encoding {
    delimitedBytes { delimiter "#" }
  }

Vous pouvez ensuite créer une vue qui filtre le champ d'ID utilisateur :

gcloud bigtable logical-views create VIEW \
    --instance=INSTANCE \
    --query="SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)"

Remplacez les éléments suivants :

  • VIEW : ID de la nouvelle vue paramétrée, qui peut comporter jusqu'à 128 caractères. L'ID doit être unique parmi les ID de table et les ID de vue de l'instance.
  • INSTANCE : ID de l'instance dans laquelle créer la vue paramétrée.
  • TABLE_ID : ID de la table source.

Mettre à jour une vue paramétrée

Vous mettez à jour une vue paramétrée de la même manière que vous mettez à jour une vue logique.

Supprimer une vue paramétrée

Vous supprimez une vue paramétrée de la même manière que vous supprimez une vue logique.

Afficher des informations sur les vues paramétrées

Vous affichez une liste de vues paramétrées de la même manière que vous affichez une liste de vues logiques pour une instance.

Interroger les vues paramétrées

Vous interrogez les vues paramétrées de la même manière que les tables standards, mais vous fournissez la carte view_parameters dans la requête.

L'exemple suivant montre comment interroger une vue paramétrée nommée purchase_history_pv, qui filtre les données en fonction d'un ID utilisateur.

// Assumes 'purchase_history_pv' was created with the definition:
// SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)

String query = "SELECT customer_info[email], order_details[status], order_info[items] from purchase_history_pv";
PreparedStatement preparedStatement = dataClient.prepareStatement(query);
BoundStatement boundStatement = preparedStatement.bind().build();

// The user ID is now passed out-of-band in a view parameters map.
Map<String, Value> viewParameters = new HashMap<>();
viewParameters.put("user_id", Value.newBuilder().setType(stringType()).setStringValue(userId).build());

// Execute the query, passing the view parameters using a proto field in the request.
ResultSet rs = dataClient.executeQuery(
    boundStatement,
    viewParameters
);

Cela empêche l'utilisateur de voir ou de manipuler le paramètre user_id dans la requête elle-même, ce qui permet une séparation logique claire.

Étape suivante