Acheter et gérer des engagements d'emplacements

L'API BigQuery Reservation vous permet d'acheter des emplacements dédiés (nommés engagements), de créer des pools d'emplacements (nommés réservations), puis d'attribuer des projets, des dossiers et des organisations à ces réservations.

Un engagement de capacité est un achat de capacité de calcul BigQuery pour une durée minimale. L'achat d'un engagement de capacité est facultatif lors de la création d'une réservation avec une édition, mais peut vous permettre de réaliser des économies.

Les engagements sont une ressource régionale. Les engagements acquis dans une région ou un ensemble multirégional ne peuvent pas être utilisés dans une autre région ou un autre ensemble multirégional. Les engagements ne peuvent pas être déplacés d'une région à une autre ou d'une région à une autre.

Activer l'API Reservations

L'API BigQuery Reservations est distincte de l'API BigQuery existante et doit être activée indépendamment. Pour plus d'informations, consultez la section Activer et désactiver des API.

  • Le nom de l'API est "API BigQuery Reservations".
  • Le point de terminaison de l'API BigQuery Reservations est bigqueryreservation.googleapis.com.

Activer l'API.

Acheter des emplacements

Pour réserver de la capacité pendant une durée minimum, vous pouvez souscrire un engagement de capacité. Vous bénéficiez ainsi d'une remise et réduisez les coûts. Pour en savoir plus sur les coûts spécifiques, consultez la page Tarifs de BigQuery.

Autorisations requises

Pour créer un engagement de capacité, vous avez besoin de l'autorisation Identity and Access Management (IAM) suivante :

Tous les rôles IAM prédéfinis ci-dessous incluent cette autorisation :

  • BigQuery Admin
  • BigQuery Resource Admin

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

Créer un engagement de capacité

Les engagements sont une ressource régionale. Les engagements acquis dans une région ou un ensemble multirégional ne peuvent pas être utilisés dans une autre région ou un autre ensemble multirégional. Les engagements ne peuvent pas être déplacés d'une région à une autre ou d'une région à un ensemble multirégional.

Console

  1. Dans la console Google Cloud, accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau de navigation, accédez à la section Gestion de la capacité.

  3. Cliquez sur Créer un engagement.

  4. Sous Configurer :

    1. Sélectionnez le lieu.
    2. Dans la section Modèle de capacité, choisissez le modèle de capacité.
    3. Si vous sélectionnez l'option Autoscaling (Édition) :
      1. Dans la liste Édition, sélectionnez l'édition. Les engagements de capacité ne sont disponibles qu'avec les éditions Enterprise et Enterprise Plus. L'autoscaling n'est disponible que dans une édition. Pour en savoir plus sur les éditions, consultez la page Présentation des éditions BigQuery.
    4. Sélectionnez la durée d'engagement, qui spécifie votre forfait d'engagement.
    5. Si vous souscrivez un engagement annuel, sélectionnez le forfait de renouvellement que vous souhaitez prendre en compte lorsque l'engagement expire :

      1. Renouveler chaque année. Lorsque l'engagement annuel expire, il est renouvelé pour un an supplémentaire en tant qu'engagement annuel.

      Pour en savoir plus, consultez la section Engagements.

    6. Saisissez le nombre d'emplacements que vous souhaitez acheter.

    7. Cliquez sur Suivant.

  5. Examinez l'estimation du coût de votre achat.

  6. Sous Confirmer et envoyer, procédez comme suit :

    1. Saisissez CONFIRM (confirmer) pour confirmer l'achat.
    2. Cliquez sur Acheter pour acheter les emplacements.
  7. Pour afficher l'engagement, cliquez sur Afficher les engagements d'emplacements. Une fois la capacité provisionnée, l'état de l'engagement de capacité demandé s'affiche en vert.

La première fois que vous achetez une capacité, une réservation default est créée.

SQL

Pour créer un engagement de capacité, utilisez l'instruction LDD CREATE CAPACITY.

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

    Accéder à BigQuery

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

    CREATE CAPACITY
      `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`
    OPTIONS (
      slot_count = NUMBER_OF_SLOTS,
      edition = EDITION,
      plan = 'PLAN_TYPE');

    Remplacez les éléments suivants :

    • ADMIN_PROJECT_ID : ID du projet d'administration qui gérera la propriété de cet engagement.
    • LOCATION : emplacement de l'engagement.
    • COMMITMENT_ID : ID de l'engagement

      Il doit être unique au projet et à l'emplacement. Il doit commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des tirets.

    • NUMBER_OF_SLOTS : nombre d'emplacements à acheter.
    • EDITION : édition associée à l'engagement de capacité. Vous ne pouvez créer un engagement de capacité qu'avec les éditions Enterprise ou Enterprise Plus. Pour en savoir plus sur les éditions, consultez la page Présentation des éditions BigQuery.
    • PLAN_TYPE : type de forfait, tel que ANNUAL ou THREE_YEAR.

  3. Cliquez sur Exécuter.

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

bq

Utilisez la commande bq mk avec l'option --capacity_commitment pour acheter des emplacements.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --capacity_commitment=true \
    --edition=EDITION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN_TYPE \
    --slots=NUMBER_OF_SLOTS

Remplacez les éléments suivants :

  • ADMIN_PROJECT_ID : ID du projet d'administration qui gérera la propriété de cet engagement.
  • LOCATION : emplacement de l'engagement.
  • EDITION : édition associée à l'engagement de capacité. Vous ne pouvez créer un engagement de capacité qu'avec les éditions Enterprise ou Enterprise Plus. Pour en savoir plus sur les éditions, consultez la page Présentation des éditions BigQuery.
  • PLAN_TYPE : type de forfait, tel que ANNUAL ou THREE_YEAR.
  • RENEWAL_PLAN_TYPE : type de forfait de renouvellement, tel que NONE, ANNUAL ou THREE_YEAR.
  • NUMBER_OF_SLOTS : nombre d'emplacements à acheter.

Afficher les engagements de capacité

Autorisations requises

Pour afficher les engagements, vous devez disposer de l'autorisation Identity and Access Management (IAM) suivante :

Tous les rôles IAM prédéfinis ci-dessous incluent cette autorisation :

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

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

Afficher les engagements de capacité par projet

Pour afficher vos engagements de capacité par projet, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau de navigation, accédez à la section Gestion de la capacité.

  3. Cliquez sur l'onglet Slot commitments (Engagements d'emplacement). Vos engagements de capacité sont répertoriés dans la table sous Commitments (Engagements).

SQL

Pour afficher les engagements d'un projet d'administration, interrogez la vue INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT.

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

    Accéder à BigQuery

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

    SELECT
      capacity_commitment_id
    FROM
      `region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
    WHERE
      project_id = 'ADMIN_PROJECT_ID'
      AND slot_count = 100;

    Remplacez les éléments suivants :

  3. Cliquez sur Exécuter.

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

bq

Utilisez la commande bq ls avec l'option --capacity_commitment pour répertorier les engagements pour un projet d'administration.

bq ls \
    --capacity_commitment=true \
    --location=LOCATION \
    --project_id=ADMIN_PROJECT_ID

Remplacez les éléments suivants :

Modifier les engagements de capacité

Vous pouvez apporter les mises à jour suivantes à un engagement de capacité :

  • Modifier le plan de renouvellement de l'engagement
  • Convertir un engagement en un forfait d'engagement de plus longue durée.
  • Diviser un engagement en deux engagements.
  • Fusionner deux engagements en un seul engagement.

Autorisations requises

Pour mettre à jour les engagements de capacité, vous avez besoin de l'autorisation Identity and Access Management (IAM) suivante :

Tous les rôles IAM prédéfinis ci-dessous incluent cette autorisation :

  • BigQuery Admin
  • BigQuery Resource Admin

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

Renouveler un engagement

Les engagements annuels possèdent un forfait de renouvellement que vous spécifiez lorsque vous créez ou souscrivez un engagement annuel. Vous pouvez modifier votre forfait de renouvellement de l'engagement annuel à tout moment avant la date de fin de l'engagement.

Console

Vous pouvez modifier votre forfait de renouvellement pour un engagement annuel comme suit :

  1. Dans Google Cloud Console, accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau de navigation, accédez à la section Gestion de la capacité.

  3. Cliquez sur l'onglet Slot commitments (Engagements d'emplacement).

  4. Recherchez l'engagement que vous souhaitez modifier.

  5. Cliquez sur Actions, puis sélectionnez l'option Modifier l'option de renouvellement.

  6. Sélectionnez le nouveau mode de renouvellement.

bq

Pour modifier le choix de forfait de renouvellement pour un engagement annuel, utilisez la commande bq update avec l'option --capacity_commitment et l'option --renewal_plan.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --renewal_plan=PLAN_TYPE \
    --capacity_commitment=true \
    COMMITMENT_ID

Remplacez les éléments suivants :

Convertir un engagement en une durée plus longue

Vous pouvez à tout moment convertir votre engagement en un engagement de plus longue durée.

Dès que vous mettez à jour votre engagement, le tarif associé au nouveau type d'engagement vous est facturé et la date de fin de l'engagement est réinitialisée.

Pour convertir un engagement, exécutez la commande bq update avec l'option --plan.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN \
    --capacity_commitment=true \
    COMMITMENT_ID

Remplacez les éléments suivants :

Diviser un engagement

Vous pouvez diviser votre engagement en deux engagements. Cela peut être utile si vous souhaitez renouveler une partie d'un engagement. Par exemple, si vous avez un engagement annuel de 1 000 emplacements, vous pouvez répartir 300 emplacements dans un nouvel engagement, ce qui laisse 700 emplacements dans l'engagement d'origine. Vous pouvez ensuite renouveler 700 emplacements au tarif annuel, puis convertir 300 emplacements en engagement sur trois ans.

Lorsque vous divisez un engagement, le nouvel engagement a le même forfait et la même date de fin que l'engagement d'origine.

Console

  1. Dans la console Google Cloud, accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau de navigation, accédez à la section Gestion de la capacité.

  3. Cliquez sur l'onglet Slot commitments (Engagements d'emplacement).

  4. Sélectionnez l'engagement que vous souhaitez scinder.

  5. Cliquez sur Diviser.

  6. Sur la page Engagement divisé, utilisez le curseur Configurer la division pour sélectionner le nombre d'emplacements dans chaque division, par incréments de 100 emplacements.

  7. Cliquez sur Diviser pour diviser l'engagement. Le nouvel engagement est répertorié dans l'onglet Slot commitments (Engagements d'emplacement).

bq

Pour fractionner des engagements, utilisez la commande bq update.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --split \
    --slots=SLOTS_TO_SPLIT \
    --capacity_commitment=true \
    COMMITMENT_ID

Remplacez les éléments suivants :

  • ADMIN_PROJECT_ID : ID du projet
  • LOCATION : emplacement de l'engagement.
  • SLOTS_TO_SPLIT : nombre d'emplacements de l'engagement d'origine à répartir dans le nouvel engagement.
  • COMMITMENT_ID : ID de l'engagement

    Pour obtenir l'ID, consultez la section Afficher les engagements achetés.

Fusionner deux engagements

Vous pouvez fusionner plusieurs engagements en un seul engagement. Les engagements de fusion doivent tous être du même type (ANNUAL ou THREE_YEAR). La date de fin de l'engagement combiné correspond à la date de fin maximale des périodes d'engagement d'origine. Si l'un des engagements présente une date de fin antérieure, il est prolongé à la date ultérieure et un montant au prorata vous est facturé pour ces emplacements.

Console

  1. Dans la console Google Cloud, accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau de navigation, accédez à la section Gestion de la capacité.

  3. Cliquez sur l'onglet Slot commitments (Engagements d'emplacement).

  4. Sélectionnez les engagements à fusionner.

  5. Cliquez sur Fusionner.

  6. Sur la page Fusionner les engagements, vérifiez les détails de la fusion et cliquez sur Fusionner. Le nouvel engagement fusionné est répertorié dans l'onglet Slot commitments (Engagements d'emplacement).

bq

Pour fusionner deux engagements en un seul, utilisez la commande bq update :

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --merge=true \
    --capacity_commitment=true \
    COMMITMENT1,COMMITMENT2

Remplacez les éléments suivants :

  • ADMIN_PROJECT_ID : ID du projet
  • LOCATION : emplacement des engagements
  • COMMITMENT1 : premier engagement à fusionner
  • COMMITMENT2 : deuxième engagement à fusionner

Expiration des engagements

Les engagements expirent à la fin de leur durée. Vous ne pouvez pas supprimer un engagement tant qu'il est actif. Si l'option de renouvellement est définie sur NONE, l'engagement est automatiquement supprimé. Sinon, il est renouvelé avec un engagement annuel ou de trois ans, selon l'option de renouvellement. Pour remplacer l'option de renouvellement par NONE, suivez la procédure décrite dans la section Renouveler un engagement.

Une fois un engagement renouvelé, la valeur de l'attribut Heure de début n'est pas modifiée. Il fait référence à l'heure de début de l'engagement d'origine. La valeur de Heure de fin correspond à l'heure à laquelle l'engagement renouvelé expire. Par exemple, si vous avez créé un engagement annuel le 13 décembre 2022 et qu'il est renouvelé le 13 décembre 2023. Si vous consultez les détails de l'engagement le 14 décembre 2023, la valeur de Heure de début sera le 13 décembre 2022 et celle de Heure de fin sera le 12 décembre 2024.

Les emplacements de base sont toujours facturés. Si un engagement de capacité expire, vous devrez peut-être ajuster manuellement la quantité d'emplacements de base dans vos réservations afin d'éviter des frais inutiles. Par exemple, supposons que vous disposez d'un engagement d'un an avec 100 emplacements et une réservation avec 100 emplacements de base. L'engagement expire et n'offre pas d'option de renouvellement. Une fois l'engagement expiré, vous payez 100 emplacements de base au tarif à l'utilisation.

Contrôler la création d'engagements de capacité

Vous pouvez utiliser des stratégies de refus IAM pour mieux contrôler qui peut créer des engagements de capacité.

Il est possible de créer des stratégies de refus pour un ensemble d'utilisateurs, ou pour l'intégralité des utilisateurs, et ces stratégies peuvent être configurées avec des exceptions et des conditions.

Par exemple, la stratégie suivante refuse à tous les utilisateurs l'autorisation de créer des engagements de capacité, à l'exception du compte principal "lucian@example.com" :

{
  "deniedPrincipals": [
    "principalSet://goog/public:all"
  ],
  "deniedPermissions": [
    "bigquery.googleapis.com/capacityCommitments.create"
  ],
  "exceptionPrincipals": [
    "principal://goog/subject/lucian@example.com"
  ]
}

Cette stratégie peut ensuite être associée à une organisation pour contrôler qui peut créer les engagements.

Notez que ces stratégies sont prioritaires sur les rôles IAM. Par conséquent, même un utilisateur doté du rôle bigquery.admin ne pourrait pas créer d'engagement, à moins que la stratégie ne soit supprimée ou modifiée.

Pour en savoir plus, consultez la section Refuser l'accès aux ressources.

Résoudre les problèmes liés aux engagements de capacité

Cette section décrit les étapes de dépannage qui vous aideront si vous rencontrez des problèmes lors de l'utilisation de BigQuery Reservations.

Les emplacements achetés sont en attente

Les emplacements sont soumis à la capacité disponible. Lorsque vous achetez des engagements d'emplacements et que BigQuery les alloue, la colonne État affiche une coche. Si BigQuery ne peut pas allouer immédiatement les emplacements demandés, la colonne État reste en attente. Vous devrez peut-être attendre quelques heures avant que les emplacements soient disponibles. Si vous avez besoin d'accéder plus rapidement aux emplacements, essayez les solutions suivantes :

  1. Supprimez l'engagement en attente.
  2. Souscrivez un nouvel engagement pour un plus petit nombre d'emplacements. Selon la capacité, l'engagement le plus petit peut devenir immédiatement actif.
  3. Achetez les emplacements restants en tant qu'engagement distinct. Les emplacements peuvent apparaître comme étant en attente dans la colonne État, mais ils deviennent généralement actifs en quelques heures.
  4. Facultatif : Lorsque les deux engagements sont disponibles, vous pouvez les fusionner en un seul engagement, à condition que vous ayez souscrit le même forfait pour les deux.

Si un engagement d'emplacements échoue ou prend beaucoup de temps, envisagez d'utiliser temporairement la tarification à la demande. Avec cette solution, vous devrez peut-être exécuter des requêtes critiques sur un autre projet qui n'est attribué à aucune réservation, ou supprimer complètement l'attribution du projet.