2017-07-24 106 views
0

我有一個存儲在BigQuery中的日期字段。我想搜索匹配的月份或年份或整個日期。什麼是執行以下操作的最高性能方法?在BigQuery中搜索日期

# An example date looks like "2014-01-01" 

# By year 
SELECT * FROM index WHERE date LIKE '2014-%' 

# By month 
SELECT * FROM index WHERE date LIKE '%-01-%' 

# By day 
SELECT * FROM index WHERE date LIKE '%-\d\d-01' 

# By year and month 
SELECT * FROM index WHERE date LIKE '2014-01-%' 

我該如何在BigQuery中以最高性能的方式進行上述搜索?

注意,上述字段的類型爲DATE

+0

沒有。使用適當的日期函數,而不是字符串函數。 –

+0

@GordonLinoff會比字符串匹配更快嗎? – David542

回答

2

爲BigQuery的標準SQL,並假設日期字段存儲爲DATE類型

截至

#standardSQL 
SELECT * FROM index WHERE EXTRACT(YEAR FROM dt) = 2014 

按月份

#standardSQL 
SELECT * FROM index WHERE EXTRACT(MONTH FROM dt) = 1 

白天

#standardSQL 
SELECT * FROM index WHERE EXTRACT(DAY FROM dt) = 1 
+0

你可以做一個快速的基準比較,做一個字符串匹配vs做一個日期字段上的提取匹配,以顯示性能的差異? – David542