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 :
-
Installez la Google Cloud CLI.
-
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.
-
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 à laVIEW_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.