해결된 질문
작성
·
35
·
수정됨
0
질문을 남겨주실 때 아래 부분을 같이 남겨주시면 더 빠르게 상황을 파악하고 답변드릴 수 있어요 🙂
어떤 강의를 들으면서 발생했나요? 1-6 PIVOT 예시 문제 풀이
어떤 문제가 생겼나요?
강의에서 사용하신 쿼리 그대로 입력했는데 추출되는 결과가 다릅니다. 왜 인지 이유를 모르겠습니다ㅠ
어떤 시도를 해보셨나요?
잘못입력한 쿼리가 있는지 확인해봤는데 어떤 것이 문제인지 잘 모르겠습니다.
어떤 쿼리를 사용했나요?
#앱 로그 데이터 PIVOT
SELECT
event_date,
event_timestamp,
event_name,
user_id,
user_pseudo_id,
MAX(IF(param.key = "firebase_screen", param.value.string_value, NULL)) AS firebase_screen,
--MAX(IF(param.key = "food_id", param.value.string_value, NULL)) AS food_id,
MAX(IF(param.key = "food_id", param.value.int_value, NULL)) AS food_id2,
MAX(IF(param.key = "session_id", param.value.string_value, NULL)) AS session_id
FROM advanced.app_logs
CROSS JOIN UNNEST(event_params) AS param
WHERE event_date = "2022-08-01"
GROUP BY ALL
LIMIT 100
환경이 어떻게 되나요?(윈도우, 맥 중 택1, 크롬 같은 웹브라우저 환경) 크롬
결과값
선생님께서 입력하신 쿼리와 무슨 차이가 있는건가요?
데이터가 표출되는 정렬이 달라서 이렇게 나오는 것인지 강의 영상 내 결과에서는 food_id2 컬럼의 값이 모두 채워져있는데 저는 NULL로 나옵니다. 왜인지 모르겠습니다 ㅠ
답변 2
0
안녕하세요. food_id라는 값은 click_food 이벤트만 가지고 있는 이벤트 파라미터입니다. 그래서 다른 이벤트에서는 food_id가 NULL이 나오는 것이 맞습니다.
SELECT를 할 때 어떤 값이 나올지는 항상 같진 않습니다. 그래서 지금 쿼리를 작성하신 것도 잘 하신거라고 생각하시면 됩니다. 지금 상황에선 WHERE문에 event_name IN ('click_cart', 'click_food')를 추가해서 확인하시면 됩니다. food_id가 모두 다 채워져 있을 거예요. 이 이벤트들은 food_id란 이벤트 파라미터가 있거든요.
0
안녕하세요, 인프런 AI 인턴입니다. 김재현님.
강의에서 사용하신 쿼리와 결과의 차이 때문에 혼란스러워하셨던 것 같습니다. 현재 질문 주신 쿼리에서 문제를 확인해보면 데이터 추출이 예상처럼 되지 않는 이유는 여러 가지일 수 있습니다. 특히 food_id2
열이 모두 NULL로 나오는 이유를 알아보겠습니다.
데이터 필터링 조건:
event_date = "2022-08-01"
조건을 사용하고 있습니다. 이 조건이 실제 데이터에서는 food_id2
값이 비어 있을 날짜에 데이터를 필터링한 것인지 확인이 필요합니다. 가끔 데이터셋이 작동하거나 업데이트되면서 특정 날짜에 데이터가 차이날 수 있습니다.잘못된 키 사용 확인:
MAX(IF(param.key = "food_id", param.value.int_value, NULL)) AS food_id2
부분에서 사용된 키가 정확한지 다시 확인해보세요. 키가 잘못 설정되면 원하는 데이터를 가져오지 못할 수 있습니다.쿼리 논리 구조:
GROUP BY ALL
은 모든 열을 그룹화하는 구문으로 사용하는 것이 아니라, 필요한 필드만 그룹화하여 필요한 집계를 만드십시오. 예를 들어, 이벤트를 하나의 트랜잭션으로 보고자 하면 event_date
, event_name
등 핵심 필드만 그룹화하는 방식으로 변경할 수 있습니다.데이터셋 확인:
이해를 돕기 위해 유사한 질문과 그에 대한 해결 방법을 소개한 링크를 공유하겠습니다:
이 링크에는 PIVOT 및 쿼리 작성 시 자주 접하게 되는 문제 및 해결 방법이 잘 나와 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
혹시 그럼 주어진 문제처럼 USER_ID가 32888이면서 CLICK_CART 이벤트가 발생한 FOOD_ID를 추출하기 위해서는 아래 쿼리를 사용해도 될까요?