2017-08-29 81 views
0

使用標準SQL。當表由通配表組成時。 我嘗試使用這個:如何從過去3天中提取數據,不包括今天和昨天的來自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)) 

這個請求,我想,應該爲最近5天返回數據。但我仍然不明白它返回給我的數據。如何從過去的3天,不包括今天和昨天的

回答

1

正因爲如此,你沒有選擇任何東西到_table_suffix因爲你的查詢有沒有通配符提取數據。

如果你的表有例如像一個名稱結構:

`Resourse.Reports_Reg.Session_streaming_20170820` 

,那兒的最後一個字符串與格式爲「%Y%M%d」的日期,然後選擇過去的第三和第二天可完成如下:

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)) 

注意通配符「*」選擇日期「20170820」爲例。之後,只有where子句選擇適當的日期。

+0

可能無法正常工作,因爲這個「選擇」返回所有天本月 – Zzema

+0

我試着相應地更新我的答案。請注意,您必須調整字符串日期格式,才能正確查詢表名稱中的日期。 –