问题可能是其中两个字符串"account=true"
和"subscribed"
存在于同一个pagePath
的情况下,就这样。解决它的
的一种方法是通过改变匹配条件,如:
SELECT
EXACT_COUNT_DISTINCT(CASE WHEN hits.type = "PAGE" THEN CONCAT(fullvisitorid,
STRING(visitid), hits.page.pagepath) END) AS UniquePageViews,
CASE WHEN (REGEXP_MATCH (hits.page.pagePath, '(account=true)') AND NOT REGEXP_MATCH (hits.page.pagePath, '(subscribed)')) THEN "Accounts"
WHEN (REGEXP_MATCH (hits.page.pagePath, '(subscribed)') AND NOT REGEXP_MATCH (hits.page.pagePath, '(account=true)')) THEN "Signups"
WHEN (REGEXP_MATCH (hits.page.pagePath, '(subscribed)') AND REGEXP_MATCH (hits.page.pagePath, '(account=true)')) THEN "Both"
ELSE "Others" END AS Goals
FROM
[mydata.ga_sessions_20150506]
GROUP BY
Goals
如果我强迫的条件仅匹配"account=true"
而不是"subscribed"
。
作为一个例子,这是我对我们的ga_sessions数据集进行测试:
SELECT
exact_count_distinct(CASE WHEN hits.type = "PAGE" THEN CONCAT(fullvisitorid, STRING(visitid), hits.page.pagepath) END) AS UniquePageViews,
CASE WHEN (REGEXP_MATCH (hits.page.pagePath, '(colcci)') AND NOT REGEXP_MATCH (hits.page.pagePath, '(lacoste)')) THEN "colcci"
WHEN (REGEXP_MATCH (hits.page.pagePath, '(lacoste)') AND NOT REGEXP_MATCH (hits.page.pagePath, '(colcci)')) THEN "lacoste"
WHEN (REGEXP_MATCH (hits.page.pagePath, '(lacoste)') AND REGEXP_MATCH (hits.page.pagePath, '(colcci)')) THEN 'both'
ELSE "Others" END AS Goals
FROM [40663402.ga_sessions_20150506]
GROUP BY
Goals
希望这有助于。任何问题都会让我们知道,
我得到的结果与以前相同。也许是独特的网页浏览量的问题? 我测试了以下查询uniquepageview,我得到了准确的数字。但我不确定如何在我的示例中包含此查询。 SELECT COUNT(1)作为unique_pageviews FROM(SELECT hits.page.pagePath, hits.page.pageTitle, fullVisitorId, visitNumber, COUNT(1)击中 FROM [MY_TABLE] WHERE hits.type = '页面' GROUP BY hits.page.pagePath, hits.page.pageTitle, fullVisitorId, visitNumber ) – sam123
不知道什么是错的呢。也许如果你尝试添加: '其中hits.page.pagepath包含(“account = true&subscribed”或(“account = true”,而不是“subscription”)可能会解决但不确定为什么第一个查询不起作用。 –
快速的问题,你可以分享结果与我们的查询我建议你和你说的是正确的? –