2017-10-23 3 views
0

Google 애널리틱스 내보내기가 포함 된 BigData를 쿼리하고 있습니다. 문자열 '하 파에 우 알칸타라'를 포함하는 페이지를 방문한 모든 세션을 찾고 그래서 난이 쿼리조회수는 hits.page.page 제목을 기반으로합니다.

SELECT 
channelGrouping as Default_Channel_Grouping, 
SUM (totals.visits) as Sessions, 
SUM(case when hits.page.pageTitle CONTAINS ('rafinha - Dugout') then 1 else 0 end) as Rafinha_Sessions 
FROM 

(TABLE_DATE_RANGE([133338516.ga_sessions_], 
       TIMESTAMP('2017-10-01'), 
       TIMESTAMP('2017-10-20'))) 
GROUP BY Default_Channel_Grouping 
ORDER BY Sessions DESC 

내가 BigQuery를하고 Google 웹 로그 분석> 인수 사이의 번호가 일치를 받고 있지 않다> 채널

+0

'hits'는 반복 필드이므로 일치하는'pageTitle '값이 여러 개있는 경우 총합을 초과 할 수 있습니다. 대신 표준 SQL을 사용해 보셨습니까? 반복되는 필드 작업으로 명시하는 것이 더 쉽습니다. –

답변

0

시도를 사용
SELECT 
    channelGrouping, 
    COUNT(1) AS Sessions, 
    SUM(isRafinhaSession) 
FROM (
    SELECT 
    channelGrouping, 
    SOME(hits.page.pageTitle CONTAINS ('rafinha - Dugout')) WITHIN RECORD  isRafinhaSession 
    FROM (TABLE_DATE_RANGE([133338516.ga_sessions_], TIMESTAMP('2017-10-01'), TIMESTAMP('2017-10-20'))) 
    WHERE 
    totals.visits=1) 
GROUP BY 
    1 
ORDER BY 
    Sessions DESC 

내부 쿼리는 세션 수준 (WITHIN RECORD)에 대한 조건 (여러 개의 부울을 OR로 집계 함)을 찾습니다. 외부 쿼리는 전체 테이블에 대해 그룹화 및 집계를 허용합니다.

+0

Thanks @sco, 이것은 (기타)를 제외한 모든 채널에 유용합니다. Google 애널리틱스에서 BigQuery에서 14 세션을 얻었지만 1 세션 만 얻었습니다. 문제가 뭐라고 생각하니? –

0

데이터와 관련된 문제이므로 비교를 위해 아래를 사용하면 문제가 해결되므로 다음과 같이 감사드립니다.

SELECT 
    channelGrouping, 
    COUNT(1) AS Sessions, 
    SUM(nvl(isRafinhaSession,1)) as RafinhaSession 
FROM (
    SELECT 
    channelGrouping, 
    some(LOWER(hits.page.pageTitle) CONTAINS LOWER(('rafinha - Dugout'))) WITHIN RECORD  isRafinhaSession 
    FROM (TABLE_DATE_RANGE([133338516.ga_sessions_], TIMESTAMP('2017-10-01'), TIMESTAMP('2017-10-20'))) 
    WHERE 
    totals.visits=1) 
GROUP BY 
    1 
ORDER BY 
    Sessions DESC 
관련 문제