Ingérer des données dans des tables partitionnées dans BigQuery à l'aide de Datastream

Vous devrez peut-être partitionner vos tables BigQuery en segments plus petits pour améliorer les performances des requêtes et contrôler les coûts. Comme Datastream n'est pas compatible avec le partitionnement des tables 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 des tables dans BigQuery

Pour partitionner vos tables dans BigQuery, utilisez 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 plus des informations sur l'inclusion et l'exclusion d'objets de votre configuration source ; consultez la page Configurer les 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 BigQuery d'origine donnez-lui un nom temporaire différent.
  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 celui 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 à l'aide de l'une des approches suivantes :

    • Utiliser le kit de migration BigQuery
    • Créez manuellement une table BigQuery compatible avec Datastream. Par exemple, si vous souhaitez créer un tableau et partitionner les données en fonction de la colonne TIMESTAMP, vous pouvez utiliser une requête semblable à la suivante :

      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. Une fois la table partitionnée créée, assurez-vous que sa valeur max_staleness est définie en fonction de vos exigences. Si vous ne définissez pas de valeur, la valeur par défaut est 0. Pour en savoir plus, consultez la page Utiliser les tables BigQuery avec l'option max_staleness.

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

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