Utiliser Datastream pour ingérer des données dans des tables partitionnées dans BigQuery

Vous devrez peut-être partitionner vos tables BigQuery en segments plus petits pour améliorer les performances des requêtes et maîtriser les coûts. Étant donné que Datastream n'est pas compatible avec les tables de partitionnement dans BigQuery, vous devez ajouter manuellement les partitions avant de démarrer votre flux. Pour obtenir des informations générales sur le partitionnement dans BigQuery, consultez la page Présentation des tables partitionnées.

Partitionner les tables dans BigQuery

Pour partitionner vos tables dans BigQuery, choisissez l'une des options décrites dans les sections suivantes, en fonction de votre cas d'utilisation.

Option 1: La table existe déjà dans BigQuery et est incluse dans un flux

  1. Excluez la table de la configuration source de votre flux. Pour en savoir plus sur l'inclusion et l'exclusion d'objets dans la configuration source, consultez Configurer des bases de données sources.
  2. Attendez quelques minutes pour vous assurer que Datastream a terminé le traitement de tous les événements de la table.
  3. Créez votre table partitionnée dans BigQuery. Si vous souhaitez conserver les données qui se trouvaient déjà dans la table BigQuery d'origine, donnez à la table un autre nom temporaire.
  4. Copiez les données de la table d'origine dans la nouvelle table partitionnée.
  5. Déposez ou renommez la table d'origine.
  6. Remplacez le nom temporaire de la nouvelle table par le nom de la table d'origine.
  7. Ajoutez la table source à la configuration de votre flux.

Option 2: La table n'existe pas dans BigQuery

  1. Créez la table dans BigQuery en utilisant l'une des approches suivantes:

    • Utilisez le kit de migration BigQuery.
    • Créez manuellement une table BigQuery compatible avec Datastream. Par exemple, si vous souhaitez créer une table et partitionner les données en fonction de la colonne TIMESTAMP, vous pouvez exécuter une requête semblable à celle-ci:

      CREATE TABLE dataset.partitioned_table (
      'id' INT64,
      'name' STRING
      'update_date' DATETIME,
      'datastream_metadata' STRUCT<'uuid' STRING, 'source_timestamp' INT64>,
      PRIMARY KEY ('id') NOT ENFORCED
      )
      PARTITION BY TIMESTAMP(update_date)
      
  2. Après avoir créé la table partitionnée, assurez-vous que sa valeur max_staleness est définie selon vos besoins. Si vous ne définissez pas cette valeur, la valeur par défaut de 0 est définie. Pour en savoir plus, consultez la section Utiliser des tables BigQuery avec l'option max_staleness.

  3. Ajoutez la table source à la configuration de votre flux.

  4. Si vous avez défini le remplissage manuel pour le flux, lancez le remplissage pour la table.