2015-05-14 53 views
2

我使用Google Big Query来查找每天点击次数。这里是我的查询,Google Big Query中的每日点击次数

SELECT COUNT(*) AS Key, 
     DATE(EventDateUtc) AS Value 
FROM [myDataSet.myTable] 
WHERE ..... 
GROUP BY Value 
ORDER BY Value DESC 
LIMIT 1000; 

这是工作正常,但它忽略了与0人次日期。我想包括这个。我无法在Google Big Query中创建临时表。如何解决这个问题。

测试得到错误Field 'day' not found.

SELECT COUNT(*) AS Key, 
     DATE(t.day) AS Value from (
     select date(date_add(day, i, "DAY")) day 
from (select '2015-05-01 00:00' day) a 
cross join 
(select 
    position(
    split(
     rpad('', datediff(CURRENT_TIMESTAMP(),'2015-05-01 00:00')*2, 'a,'))) i 
from (select NULL)) b 

     ) d 
left join [sample_data.requests] t on d.day = t.day 
GROUP BY Value 
ORDER BY Value DESC 
LIMIT 1000; 

回答

1

您可以查询存在于你的表中的数据,查询不能猜出哪个日期从表中失踪。您需要用编程语言处理这个问题,或者您可以使用join with a numbers table and generates the dates on the fly

如果你知道你在查询中具有的日期范围,您可以生成天:

select date(date_add(day, i, "DAY")) day 
from (select '2015-01-01' day) a 
cross join 
(select 
    position(
    split(
     rpad('', datediff('2015-01-15','2015-01-01')*2, 'a,'))) i 
from (select NULL)) b; 

然后你就可以加入这个结果与您的查询表:

SELECT COUNT(*) AS Key, 
     DATE(t.day) AS Value from (...the.above.query.pasted.here...) d 
left join [myDataSet.myTable] t on d.day = t.day 
WHERE ..... 
GROUP BY Value 
ORDER BY Value DESC 
LIMIT 1000; 
+0

问题是如何? – user960567

+0

@ user960567查看我的更新回答 – Pentium10

+1

我只需要一个查询。 – user960567