강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

a01042338414님의 프로필 이미지
a01042338414

작성한 질문수

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

1-4. ARRAY, STRUCT 연습 문제(4번)

user_id에 NULL이 나오는데 정상인가요?

해결된 질문

작성

·

18

·

수정됨

0

image.png

array, struct 연습문제 4번에 대한 질문입니다.

위 사진처럼 카일스쿨님과 동일한 쿼리를 작성했는데, 출력 결과가 다르게 나와서 문의드립니다.

 

질문1:

사진에 보시듯이 user_id 컬럼에 NULL이 들어간 행들이 있는데, 제가 뭔가 잘못한 걸까요? 만약 NULL이 나오는 게 정상이라면 그 이유도 궁금합니다!

질문2:

만약 NULL이 나오는 게 정상이라면, 실무에서도 이렇게 id 컬럼에 null이 허용되는지 궁금합니다. 보통 이런 id 값은 primary key로 쓰는 줄 알았어서요..!

질문3:

연습문제 뒤에 추가로 COUNT 출력해보는 것도 결과(cnt)가 다른데, 이것도 정상인지 확인부탁드립니다. 혹시 카일스쿨님이 강의 찍으실 때 쓰신 데이터셋과 변동사항이 있나요?

image.png

 

답변 2

0

카일스쿨님의 프로필 이미지
카일스쿨
지식공유자

안녕하세요! 연휴에 열심히 학습하고 계시네요. 답변 드려볼게요

 

질문1:

사진에 보시듯이 user_id 컬럼에 NULL이 들어간 행들이 있는데, 제가 뭔가 잘못한 걸까요? 만약 NULL이 나오는 게 정상이라면 그 이유도 궁금합니다!

  • 네 이 부분은 정상입니다. 빅쿼리는 쿼리를 실행할 때, 사람마다 다른 결과를 나올 수 있어요. 현재 쿼리를 집계하거나 하지 않고 SELECT를 했기 때문에 다를 수 있지만 데이터는 동일할 거예요.

 

질문2:

만약 NULL이 나오는 게 정상이라면, 실무에서도 이렇게 id 컬럼에 null이 허용되는지 궁금합니다. 보통 이런 id 값은 primary key로 쓰는 줄 알았어서요..!

  • 우선 데이터베이스의 DB의 데이터와 앱 로그에 대한 특성을 이해해야 합니다.

    • 아시는 pk 개념은 데이터베이스의 DB에서 나온 개념이고, 로그 데이터는 유저의 흐름 관점이라 다를 수 있습니다

    • 우리가 어떤 서비스에 접속할 때(웹이나 앱이나) 로그인을 하지 않은 경우엔 앱에서 user_id를 알 수 없습니다. 그래서 user_id가 그 시점에는 NULL입니다. 지금 NULL은 그런 케이스라고 생각하시면 되고, 파라미터를 잘 보시면 welcome 페이지에 접근한 케이스라서(환영 페이지 = 아직 로그인을 안함) 그렇게 나옵니다

    • 이 부분은 1-8. 퍼널의 정의, 종류, 집계 방법 강의에서 다루고 있어요. 유저를 어떤 기준으로 집계할 것이냐 관점으로 나옵니다. 이 부분 보시면 이해가 되실 것 같습니다!

 

질문3:

연습문제 뒤에 추가로 COUNT 출력해보는 것도 결과(cnt)가 다른데, 이것도 정상인지 확인부탁드립니다. 혹시 카일스쿨님이 강의 찍으실 때 쓰신 데이터셋과 변동사항이 있나요?

  • 데이터는 달라지지 않았습니다. 쿼리를 보니까, 저는 영상에서 DISTINCT를 사용했고, a01042338414님은 DISTINCT가 없이 집계를 해서 이벤트 발생 횟수를 COUNT한 것입니다. DISTINCT를 넣으시면 같게 나올 거예요.

12. 1-4. ARRAY, STRUCT 연습 문제(4번) 9분 33초

image.png

 

a01042338414님의 프로필 이미지
a01042338414
질문자

연휴에도 빠르게 답변 주셔서 감사합니다ㅠㅠ 남은 파트도 열심히 학습해보겠습니다!!

0

안녕하세요, 인프런 AI 인턴입니다. a01042338414님.

강의에서 보여드린 쿼리와 다른 결과가 나와서 많이 혼란스러우셨을 것 같습니다.

질문1: user_id 컬럼에 NULL이 나오는 이유

  1. 데이터 구조 및 형태:

    • 현재의 쿼리가 CROSS JOIN UNNEST를 활용하여 event_params 배열의 값을 확장하고 있습니다. 어떤 이벤트는 user_id 없이 기록될 수도 있으며, 이는 데이터 수집 방식 또는 특정 로그에서 user_id가 포함되지 않았기 때문일 수 있습니다.
  2. 데이터 필터링:

    • event_date의 필터, 혹은 다른 필터 기준이 적용되어 특정 레코드에 user_id가 없는 결과일 수 있습니다. 데이터 수집 설정에 따라 NULL값이 있는 레코드가 출현할 수 있습니다.

질문2: 실무에서 id 컬럼의 NULL 허용 여부

  1. 실무의 관행:
    • 실무에서는 user_id와 같은 식별자는 보통 NULL이 허용되지 않고, Primary Key로 사용됩니다. 다만, log 데이터셋은 user_id나 다른 필드가 반드시 필요하지 않은 경우도 있습니다.
    • 어떤 연산 또는 분석 작업 전 처리 단계에서 NULL 값은 제거하거나 대체로 변환하여 처리하는 방식을 채택합니다.

이 상황에 대해 더 알아보시려면 아래 유사한 질문과 해결 링크도 참조해보세요:

이 질문에서 원하신 내용이 잘 설명되어 있으면 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

a01042338414님의 프로필 이미지
a01042338414

작성한 질문수

질문하기