2017-08-29 4 views
0

Utilisation de standars SQL. Lorsque la table est constituée de tables génériques. I Essayez d'utiliser ceci:Comment extraire les données des 3 derniers jours, pas celles d'aujourd'hui et d'hier de Bigquery

SELECT * 
FROM `Resourse.Reports_Reg.Session_streaming` 
WHERE 
     SUBSTR(_table_suffix, 0, 6) = 
     FORMAT_DATE("%E4Y%m", DATE_SUB(CURRENT_DATE, INTERVAL 3 day)) 

Cette demande, je pensais, devrait renvoyer des données pour les 5 derniers jours. Mais je ne comprends toujours pas quelles données il me renvoie. Comment extraire des données des 3 derniers jours, sans compter ceux d'aujourd'hui et d'hier

Répondre

1

En l'état, vous ne sélectionnez rien dans _table_suffix étant donné que votre requête n'a pas de caractère générique.

Si votre table a par exemple une structure de nom comme:

`Resourse.Reports_Reg.Session_streaming_20170820` 

où la dernière chaîne est une date, puis en sélectionnant passé troisième et deuxième jours avec le format "% Y% m% d" peut être fait comme:

SELECT 
    * 
FROM `Resourse.Reports_Reg.Session_streaming_*` 
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE, INTERVAL 3 day)) AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE, INTERVAL 2 day)) 

Notez que le caractère générique "*" sélectionne la date "20170820" par exemple. Après cela, il n'y a qu'une clause where pour sélectionner les dates appropriées.

+0

Peut-être ne fonctionne pas correctement, Parce que ce "select" retourner tous les jours dans ce mois – Zzema

+0

J'ai essayé de mettre à jour ma réponse en conséquence. Notez que vous devrez adapter votre format de date de chaîne pour interroger correctement les dates que vous avez dans le nom de vos tables. –