2017-07-12 31 views
0

我經常使用傳統的SQL如下運行數據的過去N天的查詢(典型地爲14或30)在大量查詢:使用BIGQUERY表通配符相對日期範圍和標準SQL

SELECT 
    … 
    FROM 
    TABLE_DATE_RANGE([XXX_], DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), 0, 'DAY')) 
    WHERE 
    … 

我想切換此查詢以使用標準SQL而不是傳統SQL。我知道如何使用通配符表示XXX_YYYYMMDD,並且我知道如何使用XXX_2017*之類來表示特定範圍的日期,但我不知道如何表達相對範圍,例如過去30天。

如何將上述查詢轉換爲標準SQL?

回答

1

看看這對你的作品:

SELECT 
    date 
FROM `dataset.table_*` 
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY)) 
GROUP BY date 
ORDER BY DATE 

凡在這個例子中,通配符格式"%Y%m%d"選擇日期。您可以選擇哪種格式更適合您的通配符選擇。