上个月我使用BigQuery和使用关键字“EACH”时遇到了问题。我有很多报告依赖于Google Analytics数据上的一些非常具体和精确的查询,由于此问题我无法更新。我没有以任何方式更改我的查询,但有一天结果开始显示为“0”而不是实际数字。
我很想知道BigQuery最近的生产变化是否可能导致这种情况或者我做错了什么。我真的很喜欢这方面的决议,它已经发生了一段时间,并且真正影响了我们依赖的报告需求。以下是我的问题的一些其他详细信息:
产生错误结果的作业ID: jjldtlwOeW2zyxvi7SViTxsDJzA
错误发布:https://code.google.com/p/google-bigquery/issues/detail?id=195
- 无法产生正确结果的查询
select
date(date) as date
,sum(case when hits.type = "page" then 1 else 0 end) as pageviews
,count(distinct (case when hits.type = "page" then concat(fullvisitorid, string(visitid), hits.page.pagepath) end), 1000000) as unique_pageviews
from
table_date_range([XXXXXXXX.ga_sessions_], timestamp('2014-10-06'), timestamp('2014-10-06'))
group each by
date
ignore case;
- 有效的查询(但无法处理大量数据):
select
date(date) as date
,sum(case when hits.type = "page" then 1 else 0 end) as pageviews
,count(distinct (case when hits.type = "page" then concat(fullvisitorid, string(visitid), hits.page.pagepath) end), 1000000) as unique_pageviews
from
table_date_range([XXXXXXXX.ga_sessions_], timestamp('2014-10-06'), timestamp('2014-10-06'))
group by
date
ignore case;
答案 0 :(得分:3)
我认为您在IGNORE CASE
和GROUP EACH BY
中发现了一个错误。
我能够在我自己的分析数据集上重现。我们将进一步调查以确定根本原因。与此同时,解决方法是从查询中删除IGNORE CASE
,并使用LOWER
使每个相等性检查不区分大小写,如下所示:
select
date
,sum(case when lower(hits.type) = "page" then 1 else 0 end) as pageviews
,count(distinct (case when lower(hits.type) = "page" then concat(fullvisitorid, string(visitid), hits.page.pagepath) end), 1000000) as unique_pageviews
from
table_date_range([XXXXXXXX.ga_sessions_], timestamp('2014-10-06'), timestamp('2014-10-06'))
group each by
date;