2016-05-12 14 views
0

この2ページのユニークページビューを計算しようとしています。サインアップしてbigqueryでユニークページビューを計算する

  • アカウント - > mysite.com/form?account=true &のみ
  • アカウント加入 - > mysite.com/form?account=true

を私はこのクエリを持っていますそれぞれのページパラメータに対して以下のクエリを別々に実行すると、それを組み合わせて実行した場合とは異なる結果になります。しかし、組み合わせた結果は不正確です。誰かが私がここで間違っていることを教えてもらえますか?

 SELECT 
    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)')) THEN "Accounts" 
    WHEN (REGEXP_MATCH (hits.page.pagePath, '(.*subscribed)')) THEN "Signups" ELSE "Others" END AS Goals 
    FROM 
    [mydata.ga_sessions_20150506] 
    GROUP BY 
    Goals 

答えて

0

問題は、両方の文字列"account=true""subscribed"が同じpagePathに存在しているので、あなたは一つだけが考慮され、それらをカウントしようとすると、例かもしれません。私は"account=true"なく"subscribed"に一致するように条件を強制

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 

:それを解決するための

一つの方法は、次のような、整合条件を変更することである可能性があります。一例として、

は、ここで私は私達の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 

は、この情報がお役に立てば幸いです。ご質問があれば、

+0

私はこれまでと同じ結果を得ています。一意のページビューに問題がある可能性がありますか? 私はuniquepageviewのためにこの以下の質問をテストしました、そして、私は正確な数を得ています。しかし、私は私の例でこのクエリを含める方法がわかりません。 SELECT COUNT(1)( hits.page.pagePath、 hits.page.pageTitle、 fullVisitorId、 visitNumberを選択FROM unique_pageviews として、 COUNTは、(1)[MY_TABLE] WHERE hits.type FROM に当たるように= 'ページ' hits.page.pagePath、 hits.page.pageTitle、 fullVisitorId、 visitNumber BY GROUP) – sam123

+0

その後、間違っているかわかりません。もしhits.page.pagepathが( "account = true&subscribed"または "account = true"で "subscribed"ではない) 'を追加しようとすると、おそらく最初のクエリがうまくいかなかった理由を解決するかもしれません。このクエリもテストされていない可能性がありますが、動作しない可能性があります) –

+0

クイック質問、私があなたに提案したクエリと正しいものとの両方の結果を私たちと共有できますか? –

関連する問題