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. Étant donné que Datastream ne prend pas en charge 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 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
- Excluez la table de la configuration source de votre flux. Pour en savoir plus sur l'inclusion et l'exclusion d'objets dans votre configuration source, consultez Configurer des bases de données sources.
- Patientez quelques minutes pour vous assurer que Datastream a terminé de traiter tous les événements de la table.
- 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-lui un autre nom temporaire.
- Copiez les données de la table d'origine dans la nouvelle table partitionnée.
- Supprimez ou renommez la table d'origine.
- Remplacez le nom temporaire de la nouvelle table par celui de la table d'origine.
- Ajoutez la table source à la configuration de votre flux.
Option 2 : La table n'existe pas dans BigQuery
Créez la table dans BigQuery à l'aide de l'une des méthodes suivantes :
- Utilisez le kit d'outils 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 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)
Après avoir créé la table partitionnée, assurez-vous que sa valeur
max_stalenessest définie selon vos besoins. Si vous ne définissez pas de valeur, la valeur par défaut0est définie. Si vous laissez cette valeur sur0, vous obtiendrez les données les plus récentes, mais cela entraînera un coût important. Pour savoir comment trouver la valeur optimale pour votre table, consultez Utiliser des tables BigQuery avec l'optionmax_staleness.Si vous avez défini un remplissage manuel pour le flux, vous pouvez lancer le remplissage pour la table.