2016-07-18 3 views
2

Notre cas d'utilisation pour BigQuery est un peu unique. Je veux commencer à utiliser Date-Partitioned Tables mais nos données sont très nombreuses. Il n'est pas inséré quand il se produit, mais finalement quand il est fourni au serveur. Parfois, cela peut prendre des jours, voire des mois, avant que des données ne soient insérées. Ainsi, l'attribut _PARTITION_LOAD_TIME est inutile pour nous.Google Big Query - Tables partitionnées par date avec des données éventuelles

Ma question est là une manière que je peux spécifier la colonne qui agirait comme l'argument _PARTITION_LOAD_TIME et avoir toujours les avantages d'une table partitionnée par date? Si je pouvais l'émuler manuellement et mettre BigQuery à jour en conséquence, alors je peux commencer à utiliser les tables Date-Partitionnées.

Quelqu'un at-il une bonne solution ici?

Répondre

2

Vous n'avez pas besoin de créer votre propre colonne.
La pseudo colonne _PARTITIONTIME fonctionne encore pour vous! Le seul que vous devez faire est d'insérer/charger le lot de données respectif dans la partition respective en référençant non seulement le nom de table mais plutôt la table avec le décorateur de partition - comme yourtable $ 20160718
De cette façon vous pouvez charger des données dans la partition à laquelle il appartient

+0

Parfait, puisque je fais déjà cela en découpant mes tables. Je dois juste changer comment je le référence. :) – Dovy

+0

Qu'en est-il potentiellement d'avoir une table massive et ensuite en utilisant une colonne pour le séparer en un tableau partitionné par jour? Est-ce possible, ou est-il préférable de créer les tables individuelles et de les convertir ensuite en une table de date-heure? – Dovy

+0

Si vous avez déjà des tables datées (avec le suffixe YYYMMJJ) - je vous recommande de les convertir en tables partitionnées - voir les détails sur https://cloud.google.com/bigquery/docs/creating-partitioned-tables#converting_dated_tables_into_a_partitioned_table –