2017-09-12 1 views
1

Dans les meilleures pratiques officielles I found:Utilisation du _PARTITIONDATE contre les pseudo-colonnes de _PARTITIONTIME dans BigQuery

Partitionnement vos tables par date et l'interrogation de la partition concernée; par exemple, où _PARTITIONDATE = « 01/01/2017 » scanne seul le 1 Janvier, 2017 partition

Et je commencé à utiliser la pseudo-colonne _PARTITIONDATE pas mal, que je trouve plus facile d'écrire des requêtes de cette façon , contrairement à la colonne _PARTITIONTIME et appliquer une fonction TIMESTAMP() sur ma date, comme le montre cette example:

OÙ _PARTITIONTIME = TIMESTAMP ('28.03.2016')

Je me demandais si je devais continuer avec mon utilisation de _PARTITIONDATE - comme je ne pouvais pas trouver plus de documentation à ce sujet. En outre, contrairement à _PARTITIONTIME, il n'est pas mis en évidence par la syntaxe dans l'éditeur SQL BigQuery.

Est le moyen officiel de favoriser _PARTITIONTIME sur _PARTTIONDATE?

Répondre

2

_PARTITIONDATE n'est pas documenté, car il ne correspond pas à une fonctionnalité qui a été publiée. Vous devez utiliser _PARTITIONTIME sauf si nous annonçons une nouvelle fonctionnalité dans le release notes.

WHERE _PARTITIONTIME = TIMESTAMP('2016-03-28') 

est exactement le même que

WHERE _PARTITIONTIME = '2016-03-28' 

La colonne _PARTITIONTIME est une estampille temporelle, de sorte que la chaîne de caractères sur le côté droit de ce dernier exemple est contraint à un horodatage. En termes de mise en évidence de la syntaxe, l'interface utilisateur actuelle a certaines limitations de reconnaissance des fonctions intégrées, mais une actualisation de l'interface utilisateur à venir devrait permettre de résoudre ce problème.

+0

Vous mentionnez deux fois '_PARTITIONTIME', mais je suppose que vous vouliez dire _PARTITIONDATE' dans votre deuxième ligne? Je sais qu'ils sont sémantiquement identiques, je voulais juste m'assurer de ne pas utiliser quelque chose qui n'est pas officiellement supporté pour éviter que la colonne ne disparaisse dans le futur. (Donc, ma question portait sur «_PARTITIONDATE» vs «_PARTITIONTIME») – Tobi

+1

Oh, désolé, je vois ce que vous voulez dire. '_PARTITIONDATE' n'est pas documenté car il ne correspond pas à une fonctionnalité qui a été publiée. Vous devriez utiliser '_PARTITIONTIME' à moins d'annoncer une nouvelle fonctionnalité dans les [notes de mise à jour] (https://cloud.google.com/bigquery/docs/release-notes). –

+0

Merci pour la clarification, j'ai mis à jour votre réponse afin que les gens puissent obtenir l'information plus facilement sans lire les commentaires! Je suppose que les [Best-Practices] (https://cloud.google.com/bigquery/docs/best-practices-costs) doivent être mis à jour puis utiliser _PARTITIONTIME'? – Tobi