inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

3-13. 리텐션 분석 과제

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

"3-13. 리텐션 과제 : 꼭 풀어보시고 제출해주세요" 강의 과제 완료하여 제출 합니다. 링크 : 리텐션 분석 과제 "쿼리 검토 요청"이라고 기재되어 있는 부분 쿼리에 이상이 없는지 확인해주시면 감사하겠습니다! 그리고 과제하다가 궁금한 점이 있어 "문의사항"도 남겨두었습니다. 해당 부분도 답변 부탁드립니다! 전반적으로 리텐션 분석을 진행하는 과정이 올바른지에 대해서도 피드백을 주시면 많은 도움이 될 것 같습니다! 강의를 통해 정말 많이 배울 수 있었습니다! 감사합니다.

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
sddyyy1004 댓글 3 좋아요 0 조회수 204

1-9. 퍼널 SQL 쿼리 작성하기

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

강의 보면서 '퍼널별 유저 수 집계' 쿼리 작성했는데 결과값이 올바르게 나오지 않아요... 어디서 잘못 되었을까요? WITH base AS( SELECT event_date, event_name, DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul') as event_timestamp, event_param, user_id, user_pseudo_id, platform, -- event_parma.key PIVOT MAX(IF(event_param.key='firebase_screen',event_param.value.string_value,null)) AS firebase_screen, -- MAX(IF(event_param.key='food_id',event_param.value.int_value,null)) AS food_id, MAX(IF(event_param.key='session_id',event_param.value.string_value,null)) AS session_id FROM advanced.app_logs CROSS JOIN UNNEST(event_params) as event_param GROUP BY ALL) -- event_name + screen (필요한 이벤트만 where 조건에 걸어서 사용) ,filter_event as( SELECT * except(event_name,firebase_screen), concat(event_name,'-',firebase_screen) AS event_name_with_screen FROM base WHERE event_name in ('screen_view','click_payment')) SELECT event_name_with_screen, -- step_number case when event_name_with_screen='screen_view-welcome' then 1 when event_name_with_screen='screen_view-home' then 2 when event_name_with_screen='screen_view-food_category' then 3 when event_name_with_screen='screen_view-restaurant' then 4 when event_name_with_screen='screen_view-cart' then 5 when event_name_with_screen='click_pavement-cart' then 6 else null end AS Step_number, count(DISTINCT user_pseudo_id) as cnt FROM filter_event GROUP BY ALL HAVING step_number IS NOT NULL

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
jenna 댓글 1 좋아요 0 조회수 298

[과제] 퍼널 쿼리(피벗테이블 적용) 작성

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

# base 쿼리 작성 전 생각 흐름 ---------------------------------------------------- ## 1. 테이블 내 데이터 구조 파악 -- select -- * -- from advanced.app_logs -- where -- event_date = '2022-08-01' -- 목적에 맞는 쿼리를 기존 데이터로 구현할 수 있는지 여부 확인 -- 연습문제 결과물 컬럼인 'event_name_with_screen', 'step_number', 'cnt'는 기존 컬럼에 없음. -- 기존 컬럼에 없기 때문에 해당 컬럼을 어떻게 구현해내야 할 지 생각해보기 ## 2. event_name_with_screen 컬럼 구현 순서 및 방법 -- event_name_with_screen는 다음과 같은 value를 가짐 -- 1. screen_view-welcome -- 2. screen_view-home -- 3. screen_view-food_vategory -- 4. screen_view-restaurant -- 5. screen_view-cart -- 6. click_payment-cart -- 위 6가지 value가 기존 컬럼에 있는지 확인해보기 -- 있는 경우 -- 기존 컬럼 활용 -- 없는 경우 -- concat 등으로 새롭게 구현 -- 연습문제에서는 event_name과 event_params.key에 있는 value를 concat 했음. -- event_params.key는 데이터타입이 struct이기 때문에 unnest 필요. -- select -- event_name, -- unnest_event_params -- from advanced.app_logs -- cross join unnest(event_params) as unnest_event_params -- where -- event_date = '2022-08-01' -- unnest 결과물에 피봇테이블 적용하기 -- 피봇테이블로 만들면 직관적으로 event_name과 concat 하기가 용이해서. -- select -- event_name, -- event_date, -- event_timestamp, -- user_pseudo_id, -- max(if(unnest_event_params.key = 'firebase_screen', unnest_event_params.value.string_value, null)) as firebase_screen, -- max(if(unnest_event_params.key = 'food_id', unnest_event_params.value.int_value, null)) as food_id, -- max(if(unnest_event_params.key = 'session_id', unnest_event_params.value.string_value, null)) as session_id -- from advanced.app_logs -- cross join unnest(event_params) as unnest_event_params -- where event_date between '2022-08-01' and '2022-08-18' -- group by 1, 2, 3, 4 ---------------------------------------------------- with base as ( select event_name, event_date, event_timestamp, user_pseudo_id, max(if(unnest_event_params.key = 'firebase_screen', unnest_event_params.value.string_value, null)) as firebase_screen, max(if(unnest_event_params.key = 'food_id', unnest_event_params.value.int_value, null)) as food_id, max(if(unnest_event_params.key = 'session_id', unnest_event_params.value.string_value, null)) as session_id from advanced.app_logs cross join unnest(event_params) as unnest_event_params where event_date between '2022-08-01' and '2022-08-18' group by 1, 2, 3, 4 ), base2 as ( select *, concat(event_name, '-', firebase_screen) as event_name_with_screen from base ) ## 일자별 퍼널 쿼리 , base3 as (select event_date, event_name_with_screen, # 2개 이상 조건을 한 개 컬럼에 적용해야 하기 때문에 case when 사용 case when event_name_with_screen = 'screen_view-welcome' then 1 when event_name_with_screen = 'screen_view-home' then 2 when event_name_with_screen = 'screen_view-food_category' then 3 when event_name_with_screen = 'screen_view-restaurant' then 4 when event_name_with_screen = 'screen_view-cart' then 5 when event_name_with_screen = 'click_payment-cart' then 6 else null end as step_number, # 중복되지 않은 사용자수(비로그인 이용자까지)를 파악하기 위해서 count(distinct 컬럼명) 사용 count(distinct user_pseudo_id) as cnt from base2 group by all # null 값 제외하기 위해서 그룹에 필터링 거는 having 사용 having step_number is not null # 1일부터 보고 싶기 때문에 오름차순(asc) 적용 order by 1 asc) ## 일자별 쿼리 (피벗테이블 적용) select event_date, max(if(event_name_with_screen = 'screen_view-welcome', cnt, 0)) as screen_view_welcome, max(if(event_name_with_screen = 'screen_view-home', cnt, 0)) as screen_view_home, max(if(event_name_with_screen = 'screen_view-food_category', cnt, 0)) as screen_view_food_category, max(if(event_name_with_screen = 'screen_view-restaurant', cnt, 0)) as screen_view_restaurant, from base3 group by all order by 1 asc

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
레스 댓글 1 좋아요 0 조회수 264

1-6. 데이터 PIVOT 연습문제

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

빅쿼리 날짜 타입 입력할때 큰따옴표, 작은 따옴표 둘 중에 아무거나 입력해도 상관없을까요?

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
jenna 댓글 1 좋아요 0 조회수 144

1-4 ARRY ,STRUCT 연습문제

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

어느 부분에서 오류 났는지 모르겠어요!

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
jenna 댓글 2 좋아요 0 조회수 153

1-2. 데이터 불러오기 질문

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

app_logs_temp 테이블 생성할 때 바로 event_date로 파티션 설정할 수 없을까요? app_logs 테이블 생성할 때 쿼리 이해가 잘 되지 않아요, 설정에서 테이블 만들기와의 차이점이 무엇인가요?

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
jenna 댓글 2 좋아요 0 조회수 176

4-5 시간데이터 연습문제 1~2번 질문

해결됨

초보자를 위한 BigQuery(SQL) 입문

마지막 부분에 시간별 데이터 추출할때 서브쿼리 사용하지 않고 다이렉트로 추출할 수 없나요? group by에 extract( hour from battle_datetime)은 인식을 못하는 건가요?

  • sql
  • bigquery
  • 데이터-리터러시
yoonji 댓글 2 좋아요 0 조회수 128

대시보드 페이지 세팅 방법

미해결

이커머스 데이터로 시작하는 스토리형 SQL – BigQuery & Looker Studio 실습

섹션11에서 1강과 2강 사이에 강의가 혹시 생략된게 있나요? 2강 들어보면 저번 시간에 테마까지 변경해봤다고 말씀하시는데 1강 보면 그 부분 강의가 없어서요. 구글 클라우드 사이트에서 대시보드 작성하는 부분을 어떻게 들어가는지, 어떻게 2강 화면처럼 세팅해놓는지 갑자기 뛰어넘어진 것 같아 여쭤봅니다.

  • sql
  • data-visualization
  • looker-studio
  • bigquery
  • 데이터-리터러시
JE 댓글 2 좋아요 0 조회수 252

빅쿼리 예약어 출력 형식

해결됨

이커머스 데이터로 시작하는 스토리형 SQL – BigQuery & Looker Studio 실습

안녕하세요 수업 잘 듣고 있습니다. 혹시 빅쿼리 프로그램에서 예약어는 자동으로 대문자로 출력되게끔 하는 설정이 따로 있나요?

  • sql
  • data-visualization
  • looker-studio
  • bigquery
  • 데이터-리터러시
JE 댓글 1 좋아요 1 조회수 173

3-8. Google Sheets로 Retention Curve 시각화하기 질문

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

안녕하세요 강사님 ctrl + A를 해도 전체 화면이 선택이 안되는 것 같습니다. 삽입 목록도 클릭이 안되게 막혀있습니다! 해결 방법이 궁금합니다 :)

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
song 댓글 2 좋아요 0 조회수 155

최종 과제 제출

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

안녕하세요. 최종 과제 노션으로 작성해서 링크 공유드립니다. 감사합니다! https://staticstic.notion.site/9c91ee729d734edeb5a85cc8fa6bf2b6?pvs=4

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
Jaeyun Choi 댓글 2 좋아요 0 조회수 215

퍼널 분석

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

강사님 안녕하세요, 섹션4 리텐션 분석 들어가기 전에 app_logs 데이터 가지고 퍼널분석을 진행해 보았습니다! https://www.notion.so/de12e9d1d9fd4e9595cee4ddd5f5c6cf?pvs=4

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
joonhee7838 댓글 2 좋아요 0 조회수 225

2-6 연습문제 15번 질문있습니다!

해결됨

초보자를 위한 BigQuery(SQL) 입문

15.트레이너가 보유한 포켓몬(trainer_pokemon)이 제일 많은 트레이너는 누구일까요? 문제에서 SELECT trainer_id, COUNT(id) AS cnt FROM basic.trainer_pokemon WHERE status != "Released" GROUP BY trainer_id ORDER BY cnt DESC; 이렇게 풀어봤는데 풀어준 포켓몬이 제외되어서 카일님과 다른 답이 도출되더라구요. 풀어준 것은 보유중이 아닐거라 생각해서 쿼리를 작성했었는데 이렇게 풀이한 것도 괜찮은 풀이방법인지 질문드립니다!

  • sql
  • bigquery
  • 데이터-리터러시
박준우 댓글 1 좋아요 0 조회수 114

총 정리 5번 문제 질문

해결됨

초보자를 위한 BigQuery(SQL) 입문

안녕하세요 카일님, 카일님이 푼 결과와 제가 푼 결과가 달라서 질문드립니다. 저는 5번 문제에서 트레이너가 '잡았던'이라고 해서 다음과 같은 쿼리를 작성했습니다. WHERE tp.status IN ('Active', 'Training') 그런데 카일님 해설 영상을 보니깐 WHERE을 따로 작성 안 하셨더라고요! 혹시 제가 문제를 잘못 해석한걸까요?? 제가 작성한 쿼리 및 결과는 이미지에 첨부해 뒀습니다

  • sql
  • bigquery
  • 데이터-리터러시
레스 댓글 1 좋아요 0 조회수 129

섹션 8 문제 풀이 1번 질문 있습니다!

해결됨

초보자를 위한 BigQuery(SQL) 입문

안녕하세요 카일님, 질문이 있습니다! trainer_pokemon 테이블에서 '트레이너가 보유한 포켓몬의 수'를 구하실 때 '포켓몬 수'를 COUNT(pokemon_id)가 아닌, COUNT(id)를 사용한 이유를 구체적으로 알 수 있을까요..? 아직 각 테이블 내에 있는 id에 대한 개념이 잘 안 잡혀서 질문 드립니다 ㅠ..

  • sql
  • bigquery
  • 데이터-리터러시
레스 댓글 1 좋아요 0 조회수 127

JOIN 4번 문제

해결됨

초보자를 위한 BigQuery(SQL) 입문

4번 문제 같은 경우, 쿼리 효율화를 위해서는 trainer_pokemon테이블에서 status로 행을 줄여주기 보단, Trainer에 master 조건으로 행을 줄여주고 trainer_pokemon을 inner join하는게 더 좋은 방법 아닌가요?? 궁금합니다!

  • sql
  • bigquery
  • 데이터-리터러시
JunYeob Lee 댓글 1 좋아요 0 조회수 123

리텐션 과제 작성

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

안녕하세요. 리텐션 과제 작성하여 노션 링크 첨부하였습니다. 제가 다른 분야에서 업무를 하다가 앱 로그 데이터를 처음 다뤄보게 되었는데 어려운 점이 많네요.. ㅠ 과제를 진행하면서 모르겠는 점도 있고 해서 먼저 피드백을 받고 다시 진행해보려고 합니다. 좋은 강의 만들어주셔서 감사합니다! https://www.notion.so/staticstic/880f80adb2d7414e8cfa417512b263d4?pvs=4

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
Jaeyun Choi 댓글 2 좋아요 0 조회수 289

3-7. Weekly 리텐션 쿼리 작성 및 질문

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

안녕하세요. Weekly로 리텐션 쿼리 아래와 같이 작성해 보았습니다. 한가지 질문할 점은 event_week 기간 동안 한번 이상 접속을 한다고 하더라도 user_psuedo_id는 한번으로 집계되는지 궁금합니다! 그리고 작성한 쿼리문을 좀 더 나은 방향으로 수정하면 좋은 방향이 있다면 언제든 말씀 부탁드릴께요! 강의 정말 잘 듣고 있습니다 :) ===작성한 쿼리문=== WITH base AS ( SELECT DISTINCT user_id, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), "Asia/Seoul")) AS event_date, user_pseudo_id FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ), diff_of_week_data AS ( SELECT *, DATE_DIFF(event_week, first_week, week) AS diff_of_week FROM( SELECT DISTINCT user_pseudo_id, MIN (DATE_TRUNC(event_date,WEEK(MONDAY))) OVER (PARTITION BY user_pseudo_id) AS first_week, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week FROM base ) ) SELECT *, SAFE_DIVIDE(cnt, first_value_cnt) AS retention_ratio FROM( SELECT *, FIRST_VALUE(cnt) OVER (ORDER BY diff_of_week) AS first_value_cnt FROM( SELECT diff_of_week, COUNT(user_pseudo_id) AS cnt FROM diff_of_week_data GROUP BY diff_of_week ) ) ORDER BY diff_of_week

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
rlafkgh01 댓글 1 좋아요 0 조회수 225

리텐션 분석 과제

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

리텐션 분석 과제 노션 문서에 정리해서 공유드립니다~ 문서 링크

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
서영은 댓글 1 좋아요 0 조회수 283

인기 태그

인프런 TOP Writers

주간 인기글