"每个"关键字不会在" GROUP EACH BY"中返回正确的结果。

时间:2014-12-15 16:25:11

标签: google-analytics google-bigquery

上个月我使用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;

1 个答案:

答案 0 :(得分:3)

我认为您在IGNORE CASEGROUP 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;
相关问题