2016-11-21 8 views
0

GoogleアナリティクスデータのBig Queryテーブルからソースあたりの訪問数をクエリしようとしていますが、ランディングページレベルでセッションをフィルタリングする必要があります。したがって私は、ランディングページなどのように、セッションデータに再結合することによりvisitIDsを事前照会だ:ランディングページに参​​加すると、ソースあたりのセッション数が2倍になります

#StandardSQL 
WITH landingpages AS (
    SELECT 
    visitID, 
    h.page.pagePath AS LandingPage 
    FROM 
    `project.dataset.ga_sessions_*`, UNNEST(hits) AS h 
    WHERE 
    hitNumber = 1 
    AND 
    _TABLE_SUFFIX BETWEEN '20150926' AND '20150926' 
    # filters to be added here 
) 

SELECT 
    sessions.trafficSource.source, 
    SUM(sessions.totals.visits) AS visits 
FROM `project.dataset.ga_sessions_*` AS sessions 

JOIN 
    landingpages 
ON 
    landingpages.visitID = sessions.visitID 
WHERE 
    _TABLE_SUFFIX BETWEEN '20150926' AND '20150926' 
GROUP BY 
    trafficSource.source 
ORDER BY 
    visits DESC 

これはおおよそGAから報告されたように、各ソースごとのセッションの数を倍増します。

誰かが間違ったことを指摘できますか? (私はそれが盲目的だと思われます)

私は最初のクエリからのデータ出力を調べてみましたが、重複したvisitIDsのごくわずかな部分を除いて何か問題は見つけられませんでした。私はまた、さまざまな種類のJOINを試しました。

+0

私が間違って行ってきたところ、私が見ることができる、私はすでにhttp://stackoverflow.com/questions/39894328与えられたいアドバイスに従うことを怠っ/ select-revenue-per-landing-page-for-nested-table-using-google-big-queryを使用します。一意の訪問がfullVisitorIDとvisitIDで表され、二重結合が必要であるということは完全に浸透していませんでした。今これを検証する作業。 – goose

答えて

1

GBQからGAデータを照会するときは、一意の訪問はfullVisitorIDとvisitIDの両方で表されることを知っておくことが重要です。両方の二重結合のみが意味のあるデータセットを返します。ここで

は私が書かれているべきだ。

#StandardSQL 
WITH landingpages AS (
    SELECT 
    fullVisitorId, 
    visitID, 
    h.page.pagePath AS LandingPage 
    FROM 
    `project.dataset.ga_sessions_*`, UNNEST(hits) AS h 
    WHERE 
    hitNumber = 1 
    AND 
    _TABLE_SUFFIX BETWEEN '20150926' AND '20150926' 

), 
session_data AS (
    SELECT 
     date AS ga_date, trafficSource.source AS source, fullVisitorId, visitID, SUM(totals.visits) AS visits 
    FROM 
     `project.dataset.ga_sessions_*` 
    WHERE 
     _TABLE_SUFFIX BETWEEN '20150926' AND '20150926' 
    AND 
     totals.visits > 0  
    GROUP BY ga_date, source, fullVisitorId, visitID 
) 

SELECT 
    ga_date, source, SUM(visits) AS Sessions 
FROM 
    landingpages 
JOIN 
    session_data 
ON 
    landingpages.VisitID = session_data.VisitID 
AND 
    landingpages.fullVisitorId = session_data.fullVisitorId 
GROUP BY 
    ga_date, source 
ORDER BY 
    Sessions DESC 
関連する問題