안녕하세요, 수업 잘 듣고 있습니다. 실습 하려고 데이터셋 로드 하는 도중에 문제가 발생해서 혼자 해결해 보고자 했는데 잘 되지 않아 문의 드립니다. 어떤 강의를 들으면서 발생했나요? BigQuery (활용편) 어떤 문제가 생겼나요? 강의대로 데이터 로드한 후 테이블 파티션 기준으로 나눠 새로운 테이블을 생성했지만 컬럼 명은 생성이 되었는데 테이블 내용 전체가 비어있습니다. 어떤 시도를 해보셨나요? 문제 해결을 위해 ARRAY+STRUCT형태가 아닌 다른 컬럼들만 뽑아 새로운 테이블을 생성했을 때는 제대로 새 테이블이 생성 됐는데 event_params 컬럼을 포함시키면 데이터 전체가 딸려오지 않았습니다. 위 그림처럼요, 어떤 쿼리를 사용했나요? 환경이 어떻게 되나요?(윈도우, 맥 중 택1, 크롬 같은 웹브라우저 환경) 맥입니다. 혼자 해결해보려고 했지만 강의 속도가 너무 지연되는 것 같아 문의 드립니다!
WITH base AS( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ), first_week_and_diff AS( SELECT *, DATE_DIFF(event_week, first_week, WEEK) AS diff_of_week FROM ( SELECT DISTINCT user_pseudo_id, DATE_TRUNC(MIN(event_date) OVER(PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week FROM base ) ), user_count AS( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week ORDER BY diff_of_week ), division_before AS( SELECT *, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week) AS first FROM user_count ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first),2) AS retention_rate FROM division_before
강의 다 듣고, 마지막에 주신 계산하기 좋은 형태로 만드는 피벗테이블을 만들어 보았습니다. 코드에 대한 피드백이 있으시다면 알려주세요! 감사합니다. WITH base AS( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, platform, 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 WHERE event_date between "2022-08-01" and "2022-08-18" GROUP BY ALL ), filter_event_and_concat_event_and_screen AS ( SELECT * EXCEPT(event_name, firebase_screen, event_timestamp), CONCAT(event_name, "-", firebase_screen) AS event_name_with_screen, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM base WHERE event_name IN ("screen_view", "click_payment") ), pivot1 AS( SELECT event_date, event_name_with_screen, 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 user_pseudo_id) AS cnt FROM filter_event_and_concat_event_and_screen GROUP BY ALL HAVING step_number IS NOT NULL ORDER BY event_date, step_number ASC ) # 피벗 한번 더 돌려서 계산 쉽게 할 수 있는 테이블 형태 만들기 SELECT event_date, MAX(IF(event_name_with_screen = 'screen_view-welcome', cnt, NULL)) AS `screen_view-welcome`, MAX(IF(event_name_with_screen = 'screen_view-home', cnt, NULL)) AS `screen_view-home`, MAX(IF(event_name_with_screen = 'screen_view-food_category', cnt, NULL)) AS `screen_view-food_category`, MAX(IF(event_name_with_screen = 'screen_view-restaurant', cnt, NULL)) AS `screen_view-restaurant`, MAX(IF(event_name_with_screen = 'screen_view-cart', cnt, NULL)) AS `screen_view-cart`, MAX(IF(event_name_with_screen = 'click_payment-cart', cnt, NULL)) AS `click_payment-cart` FROM pivot1 GROUP BY event_date ORDER BY 1;
안녕하세요, 수업을 듣다가 세그먼트 중복 분석관련하여 궁금한 점이 생겨 질문드려요! 위 화면에서 세그먼트 간 교집합이 생기는 이유가 뭘까요~? 세그먼트1(장바구니 이탈자)은 add_to_cart한 사용자 중 purchase를 하지 않은 사용자이고, 세그먼트2(장바구니 전환자)는 add_to_cart한 사용자 중 purchase를 한 사용자이기 때문에 논리상으로는 교집합이 발생되면 안된다고 생각이 들어서요! 두 세그먼트 모두 사용자 세그먼트로 생성했기 때문에 설정된 기간 내 purchase의 유무에 따라 세그먼트가 결정된다고 이해했습니다!
# WEEKLY Retention 쿼리 WITH base AS( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ),first_week_and_diff AS ( SELECT *, DATE_DIFF(event_week, first_week, WEEK) AS diff_of_week FROM ( SELECT DISTINCT user_pseudo_id, DATE_TRUNC(MIN(event_date) OVER(PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week FROM base ) ), user_counts AS ( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week ORDER BY diff_of_week ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_week_user_cnt),3) AS retention_rate FROM( SELECT diff_of_week, user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week) AS first_week_user_cnt FROM user_counts ) # Monthly Retention 쿼리 WITH base AS( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ),first_month_and_diff AS ( SELECT *, DATE_DIFF(event_month, first_month, MONTH) AS diff_of_month FROM ( SELECT DISTINCT user_pseudo_id, DATE_TRUNC(MIN(event_date) OVER(PARTITION BY user_pseudo_id), MONTH) AS first_month, DATE_TRUNC(event_date, MONTH) AS event_month FROM base ) ), user_counts AS ( SELECT diff_of_month, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_month_and_diff GROUP BY diff_of_month ORDER BY diff_of_month ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_month_user_cnt),3) AS retention_rate FROM( SELECT diff_of_month, user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_month) AS first_month_user_cnt FROM user_counts )
카일스쿨님 안녕하세요, 사용자 VoC 나 SNS 등의 정성 데이터를 모아서 분석하는 방법이 있을까요? 데이터 분석 관련해서는 아직 기초적인 지식도 없다보니 정성 데이터는 어떤 방법으로 분석하는지, 어떤 방법이 가장 효과적일지 궁금합니다! (정성 데이터를 분석해서 문제 정의의 근거로 사용하려는 목적입니다. SQL 초급 강의는 아직 수강 전입니다 🥹)
트래픽 획득 리포트에서 referral이 너무 많이 나와서 문의드립니다! paid나 direct는 해석에 문제가 없는데, 리퍼러가 많이 나오는건 저희 사이트를 어떤 경로로 유입하는게 많다고 보면 되는걸까요? 이곳 저곳 알 수 없는 곳에서 노출된 저희 사이트 링크를 통해 들어오는 유입이라고 보면될까요? 탐색보고서에서 사용자세그먼트를 통해 utm캠페인명으로 봐도 referral가 많이 나와서 질문드립니다!
안녕하세요! 현재도 최종과제 피드백을 해주시는지 잘 모르겠으나,, 피드백 받아보고 싶어서, 최종 과제 제출해보겠습니다! 3번 문제에서는 특히 생각처럼 인사이트가 안나와서 어려웠습니다.. ㅎㅎ https://www.notion.so/Foodie-express-SQL-223249eb444480eca214ed420d3699a4?source=copy_link
안녕하세요. 강의 잘 보고 있습니다. 제가 서비스하고 싶은 사이트는 지금 예시로 만든 mbti 서비스처럼 정적웹으로는 조금 운영이 어려운 사이트입니다. 그래서 db 연결이 필수인데, rdbms 든, noSQL 기반 db 이든 클라우드 db를 써서 연결을하자니 용량에 따라 과금이 돼서 사실 부담이 좀 됩니다. 코배투님도 결국 사이트를 키우시면서 db는 선택이 아니라 필수로 연결하셨을것 같은데 어떤걸 선택하셨나요? 만약 추천하신다면 어떤걸 추천하시나요?
전에 워드프레스 sitekit으로 등록된게 애널리틱스랑 연동이 된거 같아요. 이번에 신규로 만든게 네모 빨강색 테두리로 만들었는데, 해당 GTM계정으로 태그를 만들어서, 미리보기까지 잘 동작이 되는데, GA4에서 실시간에서 이벤트가 나오지 않습니다. 혹시몰라 동일한 이벤트로 다른 사이트했는데 잘 되더라구요. 저 연동 때문에 안되는것 같은데 어떻게 해야 3번째 빨강색 테두리가 값이 GA4에 잘 전달이 될까요?