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 dupliquée avec vue matérialisée 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 afin que les données soient disponibles localement dans BigQuery. Cela 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 IAM (Identity and Access Management) 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 section 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 être 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 Explorer, accédez au projet et à l'ensemble de données dans lesquels vous souhaitez créer le réplica de la vue materialisée, 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. Dans Créer une table à partir de, sélectionnez Table/Vue existante.
    2. Pour Project (Projet), saisissez le projet dans lequel se trouve la table ou la vue source.
    3. Pour Dataset (Ensemble de données), saisissez l'ensemble de données dans lequel se trouve la table ou la vue source.
    4. Pour Vue, saisissez la table ou la vue source que vous répliquez. Si vous choisissez une vue, elle doit être 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: Sous 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 Project (Projet), saisissez le projet dans lequel vous souhaitez créer l'instance répliquée de la vue matérialisée.
    2. Pour Ensemble de données, saisissez l'ensemble de données dans lequel vous souhaitez créer l'instance répliquée de la vue matérialisée.
    3. Dans Replica materialized view name (Nom de la vue matérialisée de l'instance répliquée), saisissez un nom pour votre réplication.
  6. Facultatif: spécifiez des balises et des options avancées pour votre réplication de vue materialisée. 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 est nommé bq_auto_generated_local_mv_dataset. Si vous ne spécifiez pas de nom pour Nom de la 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 le préfixe bq_auto_generated_local_mv_ lui est attribué.

  7. Cliquez sur Créer une table.

Une nouvelle 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 dupliquée de la vue matérialisée 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. Autoriser 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 dupliqué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 dupliquée de la vue matérialisée, par exemple myproject.
    • BQ_DATASET: nom de l'ensemble de données BigQuery dans lequel vous souhaitez créer l'instance dupliquée de la vue matérialisée, 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 materialisée source.
    • REPLICA_NAME: nom de l'instance dupliquée de la vue matérialisée 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 dupliqué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 dupliquée de la vue matérialisée, 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 dupliquée de la vue matérialisée, en actualisant les données à l'intervalle que vous avez spécifié dans l'option replication_interval_seconds ou max_staleness. Si vous interrogez le réplica avant la fin du premier remplissage, vous obtenez une erreur backfill in progress. Vous pouvez interroger les données de l'instance dupliquée de la vue matérialisée une fois la première réplication terminée.