BigQuery de le convertir à un autre fuseau horaire
Je suis le stockage des données dans unixtimestamp sur google big query. Toutefois, lorsque l'utilisateur demande un rapport, elle aura besoin du filtrage et regroupement des données par son fuseau horaire local.
Les données sont stockées dans GMT. L'utilisateur peut voir les données dans l'est. Le rapport peut demander que les données soient regroupées par date.
Je ne vois pas le fuseau horaire fonction de conversion ici:
Personne ne sait comment je peux faire cela dans bigquery? c'est à dire comment dois-je groupe par après la conversion de l'horodatage d'un autre fuseau horaire?
OriginalL'auteur akshah123 | 2012-09-18
Vous devez vous connecter pour publier un commentaire.
2016 mise à jour: Chercher les réponses ci-dessous, BigQuery now fournit l'heure et le fuseau horaire méthodes.
Vous êtes en droit de BigQuery ne fournit pas de timestamp méthodes de conversion.
Dans ce cas, je suggère que vous exécutez votre GROUPE EN fonction des dimensions de l'GMT/UTC champ d'horodatage, et ensuite de les convertir et afficher le résultat dans le fuseau horaire local dans votre code.
Pourquoi ne pas avoir une colonne qui enregistre l'utilisateur du fuseau horaire local avec chaque enregistrement? Ensuite, vous pouvez rapidement parcourir les lignes obtenues et de fournir le bon affichage de la date.
nous avons fait d'envisager cette option, mais le problème est que plusieurs utilisateurs peuvent demander à voir les mêmes données. Donc, il n'est pas pratique pour stocker la valeur dans chaque conversion possible avec l'enregistrement. Cependant, pour le moment, nous n'avons que des utilisateurs dans l'est de sorte que l'on peut choisir cette voie. Serait-ce un problème une fois que nous avons des utilisateurs à l'extérieur de la région.
Par ailleurs, est-il quelque part je peux vous proposer cette fonctionnalité à ajouter dans les grandes requête?
Mise à JOUR: nous avons commencé un nouveau Google BigQuery public à l'issue tracker pour aider à la surface de demandes de fonctionnalités et de rapports de bug: code.google.com/p/google-bigquery
OriginalL'auteur Michael Manoochehri
À compter de septembre 2016 BigQuery a adopté le standard SQL et vous pouvez simplement utiliser la "DATE(timestamp, fuseau horaire)" la fonction de décalage de fuseau horaire. Vous pouvez faire référence à leurs docs ici:
BigQuery DATE docs
Il est vrai que cette fonctionnalité est nouvelle, mais elle ne résout pas le problème. Si vous avez un timestamp, vous souhaitez généralement un nouveau timestamp. Cette fonction prend en timestamp et les sorties d'un jour.
Un
timestamp
est un point absolu dans le temps (quelques microsecondes de l'époque Unix pour BigQuery). Il n'y a pas de "nouvelle" timestamp à obtenir. Si vous voulez que le point dans le temps est représenté dans un fuseau horaire spécifique, alors vous devez les convertir en temps absolu dans une logique de calendrier de temps, généralement représentés par desdate
. C'est exactement ce que cette fonction n'.Je ne comprends pas votre réponse, ce que je suis en train de parler, c'est que cette commande change quelque chose comme 1-jan-2001 07:00:00 (ne me dérange pas le format) dans le 1 janvier 2001, c'est donc uniquement la date, sans le temps.
Avez-vous lu la documentation? Vous pouvez utiliser
DATETIME(timestamp, timezone)
à la place si vous avez besoin d'unDateTime
résultat. cloud.google.com/bigquery/docs/reference/standard-sql/...OriginalL'auteur milyord
Standard SQL dans BigQuery a les fonctions intégrées:
Exemple:
Vous pouvez utiliser les IANA fuseau horaire noms ou les décalages.
OriginalL'auteur Mani Gandham
Votre prémisse est de droite. Si vous avez un groupe de cette manière, les utilisateurs qui veulent HNE ou EDT obtenez incorrecte de la date de regroupement:
Mais aussi longtemps que vous comprendre le décalage que votre utilisateur le souhaite, vous pouvez encore faire le plein de calcul sur le serveur. Par exemple, si est est 5 heures après l'UTC, puis de la requête comme ceci:
Juste paramétrer le "5" pour être le décalage dans les heures, et vous êtes tous ensemble. Voici un exemple basé sur l'un des exemples d'ensembles de données:
Vous pouvez supprimer le décalage de voir comment certaines modifications de passer à des jours différents.
D'accord: vous avez besoin de votre application (ou vos utilisateurs!) pour comprendre le décalage qu'ils veulent. Ce n'est pas vraiment une solution idéale. Vous aurez certainement manquer sur le bord des cas comme ce sont les limites exactes de "aujourd'hui" le jour de l'Heure d'été commence ou se termine. Mais il serait de couvrir de nombreux besoins.
nous sommes dans la même démarche.
OriginalL'auteur mdahlman