묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
biquery 테이블 생성 오류 이슈
안녕하세요. 빅쿼리에서 테이블 생성을 하려고 했으나 계속 실패하여 문의 남깁니다. 파싱 문제가 있는 것 같고, 결제 수단 등록 같은 어드민 문제는 아닌 것 같습니다. 윈도우이고 반디집으로 압축 해제한 뒤 파일 업로드했고 아래와같이 파일 형식도 지정했는데 못 읽는 이유가 있을까요? 감사합니다.오류 메시지: 테이블을 만들 수 없음: Error while reading data, error message: The Apache Orc library failed to parse file metadata from file tail with error: Not an ORC file File: bigstore/bigquery-prod-upload-us/prod-scotty-455134432611-bde32926-0829-41cc-80fa-43f553dc0a93
-
미해결14년차 마케터에게 배우는 데이터드리븐 디지털/퍼포먼스마케팅의 모든것
광고 입찰가 관련 질문
안녕하세요, 광고 마케팅 공부하고 있는 학생입니다. 디지털 마케팅 매체별 설명 부분에서 광고 입찰가 라는 개념이 많이 나오는데요. 말그대로 광고 지면 자리를 두고 경매하는 것이라고 생각하면 될까요?만약 광고 입찰가를 너무 낮게 책정한다면 광고 게재 경쟁에서 밀려 아예 광고가 노출되지 않을 수도 있나요? 이 경우 실제 광고비 결제는 이루어지지 않는 것일까요? 그렇다면 적정 광고 입찰가는 어떤 기준으로 책정하는지, 경쟁사의 입찰가 혹은 평균 입찰가를 확인할 수 있는 방법이 있는지 궁금합니다.혼자 meta 광고를 연습해보며 1일 광고비만 정해서 집행해본 적은 있는데 광고 입찰가라는 게 실무에서 어떻게 책정되는지 상상이 잘 안되어 여쭙습니다.
-
미해결14년차 마케터에게 배우는 데이터드리븐 디지털/퍼포먼스마케팅의 모든것
입찰전략과 과금방식의 차이
구글 애즈 동영상 광고에서 광고 형식이 인스트림이나 인피드 광고는 과금 방식이 CPV인데,입찰 전략은 타겟 CPM이더라고요.만약 타겟 CPM을 1,000원으로 잡으면 1,000회 노출당 1,000원이 나간다는 의미인데,과금 방식은 CPV라고 해서 그럼 예산은 어디서 빠져나가는지,이 둘의 의미와 차이가 헷갈립니다.
-
미해결14년차 마케터에게 배우는 데이터드리븐 디지털/퍼포먼스마케팅의 모든것
구글애즈 타겟팅 제외설정
잠재고객이랑 콘텐츠(주제,게재위치,키워드) 제외 설정을 하려고하는데 광고세팅중에는 안보이던데 세팅과정에서는 설정을 못하는건가요?만약 못하면 어디서 하는건가요?
-
미해결14년차 마케터에게 배우는 데이터드리븐 디지털/퍼포먼스마케팅의 모든것
구글애즈 검색광고
구글애즈 검색광고 입찰 전략을 찾아보니,향상된 CPC 입찰 전략은 현재 대부분의 계정에서 사라진 것으로 보입니다.그렇다면 수동 CPC 입찰 전략도 함께 사라진 것인지,현재는 클릭수 최대화 입찰 전략만 남아 있는 상태인지 궁금합니다.또 혹시 전화수 최대화, 전환가치 극대화,클릭수 최대화가 전환,전환가치,클릭수에서 비용한도를 체크안했을 때 자동으로 되는건가요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
동일하게 쿼리를 작성했는데 화면과 다른 값이 나옵니다
SELECT user_id , event_date , event_name , event_timestamp , user_pseudo_id , MAX(IF(par.key='firebase_screen', par.value.string_value, NULL)) AS firebase_screen , MAX(IF(par.key='food_id', par.value.int_value, NULL)) AS food_id , MAX(IF(par.key='session_id', par.value.string_value, NULL)) AS session_id FROM `advanced.app_logs` CROSS JOIN UNNEST(event_params) AS par WHERE event_date = '2022-08-01' GROUP BY ALL LIMIT 100; app_logs 피벗하는 문제인데 food_id가 null 밖에 없는 건 아니지만 보여주신 화면과 그 값이 많이 상이한 거 같아서요.. 이유가 뭔지를 알 수 있을까요 ㅜㅜ
-
미해결14년차 마케터에게 배우는 데이터드리븐 디지털/퍼포먼스마케팅의 모든것
utm ga4 실시간 반영
스프레드시트에서 utm를 설정한 후 사이트에 들어갔는데 ga에 실시간으로 이벤트에 안뜨네요게시하고 제출까지 한 상태입니다.
-
미해결14년차 마케터에게 배우는 데이터드리븐 디지털/퍼포먼스마케팅의 모든것
트리거유형
ga4 버튼클릭태그 설치할 때 클릭트리거유형에서링크만, 모든요소 이렇게 두개가 있던데 링크만을 설정했을 때는 미리보기에서 작동을 안하고 모든요소를 선택했을 때만 작동하던데 왜 그런가요?그리고 이 두 설정차이가 궁금합니다
-
미해결일잘러의 구글 스프레드시트 활용법
실습파일
공유해주신 https://abit.ly/mqOqao을 입력했는데 오류가 발생하고 열리지 않아요
-
미해결3시간 완성, 비개발자를 위한 최소한의 SQL
구글 시트 링크
구글 시트 링크가 혹시 잘못되었을까요? 알려주신 링크를 입력하였는데 시트가 안나옵니다.
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
array 등
안녕하세요 데이터분석가로 근무하고 있는 수강생입니다.array 등과 같은 기능이 저는 다소 생소한데 자주 쓰는 문법인지 궁금합니다ㅣ
-
미해결스마트요원에게 배우는 구글 스프레드시트
스프레드시트 협업 시 효율적인 관리 노하우가 있을까요?
스프레드시트는 혼자 쓸 수도 있지만, 협업과 공유가 핵심인것 같습니다.혹시 팀이나 조직 단위에서 시트를 관리하실 때 도움이 되는 운영 노하우나 베스트 프랙티스가 있을까요?기능 설명 외에도, 실제 업무에서 시트를 체계적으로 관리하는 방법이 궁금해져서 혹시 해주실 말씀이 있으신지 문의드립니다.
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
N day 리텐션 쿼리 관련 질문
카일스쿨님 매번 친절한 답변 감사드립니다 정말 많이 배웁니다!!🙇N day 리텐션 쿼리에 관한 질문이 3가지 있습니다. 1. 맨 처음에 base 테이블 만들 때 DISTINCT를 왜 써야하는 건지 궁금합니다.(B방법 기준) first_date_and_diff 임시테이블을 만들 때 DISTINCT를 쓰는 것은, '동일 유저가 하루에 여러번 접속한 것을 중복 제거하기 위해' 사용하는 것으로 이해했습니다.그런데 맨 처음에 base 테이블은 timestamp 컬럼이 있는데 어떻게 중복이 있을 수 있는 건지 헷갈립니다. 완전히 동일한 마이크로초에 여러번의 행동 로그가 기록될 수 있는 건지, 아니면 전산오류로 로그가 중복 기록이 될 수 있다는 건지,, 이해가 잘 안 됩니다😢2. 강의에서 보여주신 결과 테이블(diff_of_day | user_cnt)은 교안 330p와 다른 것이라고 이해했는데, 제가 이해한 것이 맞는지 확인 부탁드립니다!a) 강의 결과 테이블: 유저마다 시작일은 다를 수 있지만, 어쨌든 궁금한 건 각 유저들이 첫 접속 이후에 계속 쓰는지가 궁금한 것 → 가입일 코호트별로 그룹화하지 않아도 그자체로 의미가 있음b) 교안 330p 테이블: 강의 결과에서 한 단계 더 나아가서, 가입일에 따라 리텐션 추이에 차이가 있는지 더 쪼개보는 것c) 만약 교안 330p 테이블처럼 결과를 출력하고 싶으면, COUNT 집계할 때 GROUP BY와 SELECT에 first_date만 추가로 넣어주면 된다. (아래 쿼리 및 사진 참고)-- a) 강의 결과 SELECT diff_of_day, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_date_and_diff GROUP BY diff_of_day ORDER BY diff_of_day -- c) 교안처럼 출력하고 싶을 경우 SELECT first_date, diff_of_day, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_date_and_diff GROUP BY first_date, diff_of_day ORDER BY first_date, diff_of_day 3. Weekly 리텐션 파트에서 설명해주신 WEEK 함수는 어떻게 쓰는 걸까요?아래 쿼리처럼 썼더니 WEEK 함수가 없다고 오류가 나던데, EXTRACT를 말씀하시려던 걸까요? EXTRACT는 제대로 나오는 거 같긴 합니다..! SELECT user_pseudo_id, event_name, event_date, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week, EXTRACT(WEEK FROM event_date) AS event_week2, WEEK(event_date) AS event_week3 FROM( SELECT DISTINCT -- event_timestamp 기반으로 중복 제거 user_id, event_name, -- event_date, -- Firebase의 형태(ex. '20220813')와 다르니까, 아래처럼 직접 추출 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") 항상 감사드립니다!! 완강까지 달려보겠습니다!
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
이동평균 계산 시 order by 기본값은 뭔가요?
윈도우 함수 연습문제 6번 질문입니다.카일스쿨님 쿼리와 다른 건 다 동일하게 작성했었는데, OVER() 안에 order by를 모르고 깜빡했었습니다.그런데도 결과가 정답(moving_avg2)과 같게 정상 출력이 되었습니다. (QUALIFY로 검증해봤는데 moving_avg와 전부 같다고 나오더라구요)원래 ORDER BY를 안 써줘도 프레임 설정이 자동으로 가능한 걸까요? ORDER BY에도 기본값 같은 게 있는지 궁금합니다.-- 윗부분은 생략 SELECT date, number_of_orders, AVG(num2) OVER(ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg, AVG(num2) OVER(ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg2 FROM filled_data -- QUALIFY moving_avg != moving_avg2 ORDER BY date
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
윈도우 연습문제 1번 질문
실행 결과는 동일하게 나왔는데, COUNT를 다르게 쓴 것이 괜찮은지 궁금해서 질문 남깁니다!상황같은 날짜에 여러 번 쿼리 실행한 사용자들이 있어서 COUNT(*)을 해야겠다고 판단했습니다. (어차피 Distinct가 없으면 같은 날짜라도 각각 카운트한다는 것을 깜빡했었습니다ㅠ)카일스쿨님은 COUNT(query_date)를 쓰셨고, 결과만 보면 제 쿼리와 동일하긴 합니다.궁금한 점제 쿼리처럼 COUNT(*)을 쓰는 경우에 문제가 될까요? 혹시 실무적으로 COUNT(*)은 잘 쓰지 않는지 궁금합니다!(Ex. 어떤 컬럼의 개수를 세는 것인지 가독성이 좋지 않다든가..)제 쿼리는 아래와 같습니다. SELECT *, COUNT(*) OVER(PARTITION BY user) AS total_query_cnt FROM advanced.query_logs ORDER BY query_date, user
-
미해결스마트요원에게 배우는 구글 스프레드시트
예제 및 실습 시트가 일치하지 않습니다
예지 및 실습 시트와 강의에서 나오는 예시들이 일치하지 않습니다.
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
user_id에 NULL이 나오는데 정상인가요?
array, struct 연습문제 4번에 대한 질문입니다.위 사진처럼 카일스쿨님과 동일한 쿼리를 작성했는데, 출력 결과가 다르게 나와서 문의드립니다. 질문1:사진에 보시듯이 user_id 컬럼에 NULL이 들어간 행들이 있는데, 제가 뭔가 잘못한 걸까요? 만약 NULL이 나오는 게 정상이라면 그 이유도 궁금합니다!질문2:만약 NULL이 나오는 게 정상이라면, 실무에서도 이렇게 id 컬럼에 null이 허용되는지 궁금합니다. 보통 이런 id 값은 primary key로 쓰는 줄 알았어서요..!질문3:연습문제 뒤에 추가로 COUNT 출력해보는 것도 결과(cnt)가 다른데, 이것도 정상인지 확인부탁드립니다. 혹시 카일스쿨님이 강의 찍으실 때 쓰신 데이터셋과 변동사항이 있나요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
3-13 리텐션 과제 제출
3-13 리텐션 과제 제출합니다!https://www.notion.so/13-22f60e878b2580c097eaf0e1eb15d73c?source=copy_link 혼자 쿼리를 쓰다가 고객 정의를 내리고 나니 너무 어려워 AI의 도움도 받고, 여러 방법으로 좀 접근을 해봤습니다만.. 정의를 너무 어렵게 내린 것 같아 시간이 오래 걸렸네요ㅠㅠ 서비스나 업종마다 다르겠지만, 일반적으로 신규, 활성, 복귀, 휴면 유저에 대한 정의는 어떻게 내리고, 분석을 어떤 식으로 진행하는 건가요? 과제를 진행하긴 했으나 쿼리가 제대로 작성된 게 맞는지 분석을 올바르게 한 게 맞는지 너무 어렵군여ㅠ
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
최종 과제 제출
안녕하세요, 로그를 분석해서 글로 작성해보았습니다.혹시 가능하시다면 한번 보시고 개선하면 좋을 점을 알려주시면 공부를 이어가는 데 많은 도움이 될 것 같습니다!🙇♂노션 페이지 링크 남깁니다.https://www.notion.so/inflearn-app_logs-24eceb39ae70805f81abfee9aa86ebc2?source=copy_link고민되었던 부분장황하게 이것저것 설명은 했지만, 결국 도출한 결론은 '결제 경험이 있는 사용자의 재방문을 발생시켜서 결제 건수를 높여보자 ' 입니다. 재방문 사용자가 유입되도록 하고 행동을 지켜보자는 것인데,, 이러한 액션이 특별히 효과적일 것이라는 것을 로그로부터 미리 확인할 수 있는 방법이 있을까요..?구체적으로 어떤 집단에 액션을 수행하자는 결론을 도출하고 싶었는데 잘 되지 않은 것 같습니다
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
weekly retention 구하기 과제
weekly retention 구하기 과제 해 봤습니다. 처음에 알려주신대로 두 가지 방법 1) EXTRACT 과 2) DATA_TRUNC 을 써서 각각 해 봤는데 일을 자르는 기준이 달라서 그런지 첫 데이터는 값이 같은데 1주가 차이나는 시점부터 데이터들의 값이 미세하게 차이가 나더라구요.그리고 차이를 계산할 때도 INT 타입이라 DIFF_DATE 대신 그냥 컬럼끼리 빼는 방법으로 계산해야 됐습니다. 만약 이게 동일 년도 내에서만 해야하는 분석이라면 어떤 방법이 더 좋은지 궁금합니다. 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 `advance.app_logs` WHERE event_date BETWEEN '2022-08-01' AND '2022-11-03' ) , first_week_data AS( SELECT *, MIN(week_date) OVER(PARTITION BY user_pseudo_id) AS first_week FROM ( SELECT user_pseudo_id, event_date, -- DATETIME_TRUNC(DATE(event_date), WEEK(MONDAY)) AS week_date, EXTRACT(WEEK FROM event_date) AS week_date FROM base ) ), week_diff_data AS ( SELECT *, -- DATE_DIFF(week_date, first_week, WEEK) AS week_diff (week_date-first_week) AS week_diff FROM first_week_data ), first_week_value_data AS( SELECT *, FIRST_VALUE(user_cnt) OVER (ORDER BY week_diff) AS first_week_value FROM( SELECT week_diff, COUNT(DISTINCT user_pseudo_id) AS user_cnt, FROM week_diff_data GROUP BY ALL) ORDER BY week_diff ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_week_value),3) AS retention FROM first_week_value_data