Créer des instances dupliquées avec vue matérialisée

Ce document explique comment créer des instances dupliquées de vues matérialisées dans BigQuery. Une instance répliquée de vues matérialisées est une réplication de données externes Amazon Simple Storage Service (Amazon S3), Apache Iceberg ou Salesforce Data Cloud dans un ensemble de données BigQuery. Les données sont ainsi disponibles localement dans BigQuery, ce qui peut vous aider à éviter les coûts de sortie des données et à améliorer les performances des requêtes.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Assurez-vous de disposer des autorisations Identity and Access Management (IAM) requises pour effectuer les tâches décrites dans ce document.

Rôles requis

Pour obtenir les autorisations nécessaires pour effectuer les tâches décrites dans ce document, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin). Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour effectuer les tâches décrites dans ce document. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour effectuer les tâches décrites dans ce document :

  • bigquery.tables.create
  • bigquery.tables.get
  • bigquery.tables.getData
  • bigquery.tables.replicateData
  • bigquery.jobs.create

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour en savoir plus sur BigQuery IAM, consultez la page Présentation d'IAM dans BigQuery.

Préparer un ensemble de données pour les instances répliquées de vues matérialisées

Avant de créer une instance dupliquée avec vue matérialisée, vous devez effectuer les tâches suivantes :

  1. Créez un ensemble de données dans une région compatible avec Amazon S3.
  2. Créez une table source dans l'ensemble de données que vous avez créé à l'étape précédente. La table source peut présenter l'un des types de tables suivants :

Créer des instances dupliquées avec vue matérialisée

Sélectionnez l'une des options suivantes :

Console

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

    Accéder à BigQuery

  2. Dans le volet Explorateur, accédez au projet et à l'ensemble de données dans lesquels vous souhaitez créer l'instance répliquée de vues matérialisées, puis cliquez sur Afficher les actions > Créer une table.

  3. Dans la section Source de la boîte de dialogue Créer une table, procédez comme suit :

    1. Pour le champ Créer une table à partir de, sélectionnez Table/vue existante.
    2. Pour le champ Projet, saisissez le projet dans lequel se trouve la table ou la vue source.
    3. Pour le champ Ensemble de données, saisissez l'ensemble de données où se trouve la table ou la vue source.
    4. Pour le champ Vue, saisissez la table ou la vue source que vous répliquez. Si vous choisissez une vue, il doit s'agir d'une vue autorisée. Sinon, toutes les tables utilisées pour générer cette vue doivent se trouver dans l'ensemble de données de la vue.
  4. Facultatif : Pour Obsolescence maximale des vues matérialisées locales, saisissez une valeur max_staleness pour votre vue matérialisée locale.

  5. Dans la section Destination de la boîte de dialogue Créer une table, procédez comme suit :

    1. Pour le champ Projet, saisissez le projet dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées.
    2. Pour le champ Ensemble de données, saisissez l'ensemble de données dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées.
    3. Pour le champ Nom de la vue matérialisée de l'instance répliquée, saisissez un nom pour votre instance répliquée.
  6. Facultatif : Spécifiez des tags et des options avancées pour votre instance répliquée de vues matérialisées. Si vous ne spécifiez pas d'ensemble de données pour l'ensemble de données Vue matérialisée locale, un ensemble de données est automatiquement créé dans le même projet et la même région que les données sources, et nommé bq_auto_generated_local_mv_dataset. Si vous ne spécifiez pas de nom pour Nom Vue matérialisée locale, un nom est automatiquement créé dans le même projet et la même région que les données sources, et porte le préfixe bq_auto_generated_local_mv_.

  7. Cliquez sur Créer une table.

Une vue matérialisée locale est créée (si elle n'a pas été spécifiée) et autorisée dans l'ensemble de données source. L'instance répliquée de vues matérialisées est ensuite créée dans l'ensemble de données de destination.

SQL

  1. Créez une vue matérialisée sur la table de base de l'ensemble de données que vous avez créé. Vous pouvez également créer la vue matérialisée dans un autre ensemble de données situé dans une région Amazon S3.
  2. Autorisez la vue matérialisée sur les ensembles de données contenant les tables sources utilisées dans la requête ayant créé la vue matérialisée.
  3. Si vous avez configuré l'actualisation manuelle du cache de métadonnées pour la table source, exécutez la procédure système BQ.REFRESH_EXTERNAL_METADATA_CACHE pour actualiser le cache de métadonnées.
  4. Exécutez la procédure système BQ.REFRESH_MATERIALIZED_VIEW pour actualiser la vue matérialisée.
  5. Créez des instances répliquées de vues matérialisées à l'aide de l'instruction CREATE MATERIALIZED VIEW AS REPLICA OF :

    CREATE MATERIALIZED VIEW PROJECT_ID.BQ_DATASET.REPLICA_NAME
    OPTIONS(replication_interval_seconds=REPLICATION_INTERVAL)
    AS REPLICA OF PROJECT_ID.S3_DATASET.MATERIALIZED_VIEW_NAME;

    Remplacez l'élément suivant :

    • PROJECT_ID : nom du projet dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées, par exemple myproject.
    • BQ_DATASET : nom de l'ensemble de données BigQuery dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées, par exemple bq_dataset. L'ensemble de données doit se trouver dans la région BigQuery qui correspond à la région de la vue matérialisée source.
    • REPLICA_NAME : nom de l'instance répliquée de la vues matérialisées que vous souhaitez créer, par exemple my_mv_replica.
    • REPLICATION_INTERVAL : indique la fréquence à laquelle les données de la vue matérialisée source sont répliquées vers l'instance répliquée, en secondes. Doit être une valeur comprise entre 60 et 3600, inclus. La valeur par défaut est 300 (5 minutes).
    • S3_DATASET : nom de l'ensemble de données contenant la vue matérialisée source, par exemple s3_dataset.
    • MATERIALIZED_VIEW_NAME : nom de la vue matérialisée à répliquer, par exemple, my_mv.

    L'exemple suivant crée une vue matérialisée nommée mv_replica dans bq_dataset :

    CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica`
    OPTIONS(
    replication_interval_seconds=600
    )
    AS REPLICA OF `myproject.s3_dataset.my_s3_mv`

Une fois que vous avez créé l'instance répliquée de vues matérialisées, le processus de réplication interroge la vue matérialisée source pour rechercher les modifications et réplique les données sur l'instance répliquée de vues matérialisées, en actualisant les données à l'intervalle que vous avez spécifié dans l'option replication_interval_seconds ou max_staleness. Si vous interrogez l'instance répliquée avant la fin du premier remplissage, une erreur backfill in progress s'affiche. Vous pouvez interroger les données de l'instance répliquée de vues matérialisées une fois la première réplication terminée.