2017-07-24 66 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