비밀번호

커뮤니티2

  • 맑음속초21.8맑음북춘천20.0맑음철원21.3맑음동두천22.7맑음파주21.0맑음대관령21.2맑음춘천21.1맑음백령도17.3맑음북강릉24.0맑음강릉25.5맑음동해22.8맑음서울21.8맑음인천18.0맑음원주22.1맑음울릉도18.1맑음수원21.2맑음영월21.7맑음충주21.0맑음서산22.1구름조금울진19.5맑음청주22.3맑음대전22.4맑음추풍령22.3맑음안동22.2맑음상주22.8맑음포항22.5맑음군산22.0맑음대구22.1맑음전주22.1맑음울산22.1맑음창원23.2맑음광주21.9맑음부산21.7맑음통영19.2맑음목포19.4맑음여수20.1맑음흑산도17.5맑음완도21.1맑음고창21.9맑음순천22.6맑음홍성20.3맑음서청주20.6맑음제주18.9구름조금고산18.6맑음성산20.3맑음서귀포21.3맑음진주22.3맑음강화20.1맑음양평20.5맑음이천21.1맑음인제22.7맑음홍천21.6맑음태백24.1맑음정선군23.6맑음제천21.2맑음보은23.9맑음천안22.0맑음보령20.8맑음부여22.7맑음금산21.5맑음세종20.7맑음부안20.8맑음임실23.0맑음정읍21.7맑음남원21.5맑음장수22.2맑음고창군22.0맑음영광군21.6맑음김해시22.5맑음순창군22.7맑음북창원23.4맑음양산시23.5맑음보성군21.4맑음강진군23.3맑음장흥23.0맑음해남22.1맑음고흥23.3맑음의령군22.4맑음함양군23.8맑음광양시22.5맑음진도군21.2맑음봉화22.5맑음영주23.0맑음문경23.4맑음청송군23.4맑음영덕23.7맑음의성22.7맑음구미22.5맑음영천22.7맑음경주시24.3맑음거창22.4맑음합천23.2맑음밀양22.7맑음산청23.1맑음거제21.0맑음남해20.1맑음북부산22.4
  • 2024.04.13(토)

구글애널리틱스[Google Analytics]구글애널리틱스 커뮤니티입니다.

[업무 고충 해결] 빅쿼리와 구글 시트를 연동하여 엑셀 작업 간소화 하기 (2)

[Google Analytics] 구글애널리틱스 커뮤니티입니다. 구글애널리틱스관련 정보를 공유 해 주세요!

 

안녕하세요 도치쀼 입니다 :) 

 

이전 글에서 '엑셀 시트와 빅쿼리를 연결하는 방법' 에 대해서 공유 드렸었는데

이번에는 제가 그 연동 이후에 위클리 리포팅을 위해 작업한 쿼리를 공유리려 합니다.

 

이 글을 조회하는 분들이 저와 동일한 리포팅 폼을 활용할 가능성은 낮더라도 

비슷한 고충이 있으시다면 참고하시길 바라며 이어서 적어보겠습니다 :) 

 

(쿼리 초보인데 좀 더 효율성을 높히는 방법이 보이신다면 언제든 피드백 부탁드려요~! )

 

 

우선 쿼리를 공유드리기 앞서 

제가 왜 위클리 리포팅에 쿼리를 활용하려 했고, 또 구체적으로 어떤 값들을 나오게 만드려는지 공유드리겠습니다.

 

아래의 포맷은 제가 리포팅하는 캠페인의 

유입 세션수, 캠페인 내 이벤트 수, 캠페인 외의 구매 관련 행동 등에 대해 트렌드를 파악하는 리포트의 형식 입니다.

 

원래는 엑셀의 함수를 이것 저것 써가며 계산해오고 있었는데  빅쿼리에서 실행 버튼 클릭 한번으로

10개 국가의 세션수의 누적값 / 2초 이상 체류한 세션의 비율 / 금주 세션수 / 전주 대비 증감률을  구할 수 있다면...?

 

시도해 볼만 한 과정이죠 :)

 

 

기존에 제가 위의 리포팅을 작성할 때는 대시보드로 만든 테이블에서 값을 확인한 후, 

그 값을 엑셀로 옮겨와 가공하여, 궁극적으로 저 형태로 ppt 를 만들어야 했는데, 

 

값을 옮기는 과정에서 오류가 있을 경우 재작업을 한 적도 잦고, 

함수를 복사/붙여넣기하는 과정에서 값이 누락되는 상황도 종종 있었습니다.

 

허나 이전 글에서 공유드린 '구글 시트와 빅쿼리를 연동' 하게 되면  

실시간 연동을 통해 데이터를 빠르고, 정확하게 리포팅 할 수 있게 됩니다.

 

엑셀 함수 필요 없이 클릭 한 번 만으로요...! 

 

 

즉 ,이렇게 아래처럼 구글 시트만 있으면

 

 

<구글 시트 업데이트 예시 -- 1월 15-21일 (1월 3주차) 데이터 업데이트> 

 

 

 뿅 하고 원하는 결과값들을 한번에 얻을 수 있답니다 

<실행 후 예시 결과값 : 1월 3주차까지의 누적 세션수, 유효 세션수의 비중 , 이번주 총 세션수, 전주 대비 세션 증감률> 

 

 

 

[Let's Query!]

그럼 위의 리포팅에서 왼쪽 하단에 있는 Visit 항목들을 계산한 쿼리를 하나씩 파보겠습니다 :) 

 

Step 1

기존의 피벗 테이블 형식을 Unpivot 함수를 통해 풀어주고, sum () 윈도우 함수로 누적 세션수 값을 구해주는 테이블을 with 절로 만들어줍니다.

     

SELECT  

            PARSE_DATE('%Y-%m-%d',date)asdate,

            country,

            sessions,

            sum(sessions)over(partitionbycountryorderbydaterowsbetweenunboundedprecedingandcurrentrow)cumulated_sessions,

      FROM`lifesgood-test.lifesgood_weekly_reprot_format.organic_and_paid sessions_table`

     

      unpivot(sessions

              forcountry

 

              in(GLOBAL,KR,US,AU,DE,INDIA,SA,SAEN,SA_SAEN,AE,AEAR,AE_AEAR,VN,BR,daily_total))

 

 

Unpivot 함수를 통해 아래처럼 country 라는 컬럼에 국가코드값이 넣어지면서 피벗테이블 형식이 풀렸죠?

 

누적값을 구할때는 국가별로 partition by 해주고, 날짜 순서대로 누적할 것 이기 때문에 order by date 를 해줍니다

 

 

이 테이블을 unpivot_sessions 라고정의하고 with 절로묶어줍니다.

<+>

window 함수 sum  특성상 

 

위의 쿼리식과

 

sum(sessions)over(partitionbycountryorderbydate) 

 

아래의 식은 같은 결과를 보여줍니다. 

 

 

sum(sessions)over(partitionbycountryorderbydate rows between unbounded preceding and current row )  

 

 

 

Step 2

 

 2초 이상 체류한 세그먼트의 세션수(valid_sessions) 테이블도 위와 동일하게 unpivot 해 준 다음 누적값을 구하고,

 unpivot_sessions의  date, country 를 키 값으로 조인해줍니다.