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
  • Mise à 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().

Console

  1. Dans la console Google Cloud , ouvrez la liste des instances Bigtable.

    Ouvrir la liste des instances

  2. Dans la liste, sélectionnez une instance.

  3. Dans le volet de navigation, cliquez sur Bigtable Studio.

  4. Ouvrez un nouvel onglet en cliquant sur Menu "Nouvel onglet", puis sélectionnez Éditeur.

  5. Dans l'éditeur de requête, rédigez votre requête SQL. La définition de la requête doit appeler la fonction VIEW_PARAMETERS() pour spécifier un ou plusieurs paramètres de vue. Exemple :

    SELECT *
    FROM TABLE_ID
    WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('PARAM_NAME') AS BYTES))
    

    Remplacez les éléments suivants :

    • TABLE_ID : ID de la table source.
    • PARAM_NAME : nom du paramètre de vue, entre guillemets simples, à transmettre en tant qu'argument à la fonction VIEW_PARAMETERS(). Cela définit le nom du paramètre, et non sa valeur d'exécution. Vous fournissez la valeur d'exécution lorsque vous interrogez la vue paramétrée.

    Si la requête est une requête SQL valide, le message Valide s'affiche.

  6. (Facultatif) Pour mettre en forme votre instruction au format SQL, cliquez sur Mettre en forme.

  7. Cliquez sur Enregistrer, puis sélectionnez Enregistrer en tant que vue logique.

  8. Dans la boîte de dialogue Enregistrer votre vue logique, saisissez un nom pour la vue, puis cliquez sur Enregistrer.

    La vue s'affiche dans le volet Explorateur, dans la liste Vues logiques, avec une icône de vue paramétrée variable_add.

    Pour en savoir plus sur l'utilisation de l'éditeur de requêtes, consultez Gérer vos données à l'aide de Bigtable Studio.

gcloud

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

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

Remplacez les éléments suivants :

  • VIEW : ID de la nouvelle vue paramétrée (128 caractères maximum). L'ID doit être unique parmi les ID de table et 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.
  • PARAM_NAME : nom du paramètre de vue, entre guillemets simples, à transmettre en tant qu'argument à la fonction VIEW_PARAMETERS(). Cela définit le nom du paramètre, et non sa valeur d'exécution. Vous fournissez la valeur d'exécution lorsque vous interrogez la vue paramétrée.

Facultatif :

  • Pour empêcher la suppression de la vue paramétrée, 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 des vues 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. Pour en savoir plus, consultez Gérer les schémas de clés de ligne.

Par exemple, si une clé de ligne dans une table d'historique des achats stocke l'utilisateur, le code temporel 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 "ID utilisateur" :

Console

  1. Dans Bigtable Studio, ouvrez l'éditeur de requête et saisissez la requête SQL qui filtre sur le segment de clé de ligne :

    SELECT *
    FROM TABLE_ID
    WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)
    

    Remplacez TABLE_ID par l'ID de la table source.

  2. Cliquez sur Enregistrer, puis sélectionnez Enregistrer en tant que vue logique.

  3. Dans la boîte de dialogue Enregistrer votre vue logique, saisissez un nom pour la vue, puis cliquez sur Enregistrer.

    La vue s'affiche dans le volet Explorateur, dans la liste Vues logiques, avec une icône de vue paramétrée variable_add.

gcloud

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

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 (128 caractères maximum). L'ID doit être unique parmi les ID de table et 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 pouvez afficher la liste des vues paramétrées de la même manière que vous affichez la liste des vues logiques d'une instance.

Console

  1. Dans la console Google Cloud , ouvrez la liste des instances Bigtable.

    Ouvrir la liste des instances

  2. Dans la liste, sélectionnez une instance.

  3. Dans le volet de navigation, cliquez sur Bigtable Studio.

  4. Dans le volet Explorateur, développez Vues logiques.

    Les vues paramétrées apparaissent dans la liste avec une icône de vue paramétrée variable_add qui les distingue des vues logiques standards.

  5. Si l'instance comporte plus de 10 vues, cliquez sur Afficher plus pour charger les 10 suivantes.

gcloud

Pour afficher la liste des vues logiques d'une instance, utilisez la commande gcloud bigtable logical-views list.

gcloud bigtable logical-views list --instance=INSTANCE

Remplacez INSTANCE par l'ID de l'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 le mappage view_parameters dans la requête.

Console

  1. Dans la console Google Cloud , ouvrez la liste des instances Bigtable.

    Ouvrir la liste des instances

  2. Dans la liste, sélectionnez une instance.

  3. Dans le volet de navigation, cliquez sur Bigtable Studio.

  4. Dans le volet Explorateur, développez Vues logiques.

  5. À côté de la vue paramétrée que vous souhaitez interroger, cliquez sur le menu more_vert Afficher les actions, puis sur Interroger la vue.

    Un volet Paramètres s'ouvre avec les noms des paramètres de la vue préremplis.

  6. Dans Afficher les paramètres, saisissez les valeurs d'exécution pour chaque paramètre requis dans les champs Valeur.

    Les valeurs des paramètres sont transmises sous forme de chaînes. Si un paramètre de la définition de votre vue est converti en un autre type (tel qu'un entier ou des octets), saisissez la valeur de chaîne brute.

  7. Facultatif : Pour ajouter d'autres paramètres, cliquez sur Ajouter un paramètre, puis saisissez le nom et la valeur du paramètre. Les noms de paramètres doivent être uniques dans les paramètres de vue.

  8. Cliquez sur Enregistrer.

  9. Dans l'éditeur de requête, cliquez sur Exécuter.

    Les résultats de votre requête s'affichent dans le tableau Résultats.

    Si vous exécutez la requête sans fournir les paramètres de vue requis, un message d'erreur s'affiche dans la section des résultats, avec un bouton Modifier les paramètres. Cliquez sur Modifier les paramètres pour ouvrir le volet Paramètres et saisissez les valeurs de paramètres manquantes.

Les valeurs des paramètres sont configurées pour chaque onglet de l'éditeur de requête. Si vous quittez Bigtable Studio pendant votre session et que vous y revenez, vos onglets ouverts, vos requêtes, vos résultats et vos paramètres configurés sont conservés.

Java

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.

Étapes suivantes