강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của hsh6223885815
hsh6223885815

câu hỏi đã được viết

Phân tích dữ liệu SQL được học qua nhiều ví dụ khác nhau

Thông báo về những thay đổi đối với bảng dựa trên DAU daily_acquisition

쿼리 질문있습니다!!

Viết

·

38

0

selectgenerate_series('2016-08-02'::date, '2016-11-01'::date, '1 day'::interval)::dateascurrent_date

)

위의 쿼리로 series를 생성하신 이유가


selectdate_trunc('day', visit_stime)::dateascurr_date

fromga_sess

groupbydate_trunc('day', visit_stime)

)

이 쿼리로 temp_00을 생성하면 11-01 일자의 dau를 구할수 없어서 인지 궁금합니다!

sqlpostgresqldbms/rdbms데이터-엔지니어링data-analysis

Câu trả lời 2

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Người chia sẻ kiến thức

안녕하십니까, 아래와 같은 이유로 generate_series()를 사용했습니다.

  1. 연속된 날짜 데이터를 얻기 위해서 굳이 ga_sess 테이블에 group by까지 적용한 부하가 큰 SQL을 사용할 필요는 없습니다. generate_series()를 이용하면 빠르게 해당 집합을 만들 수 있습니다.

select date_trunc('day', visit_stime)::dateascurr_date

from ga_sess

group by date_trunc('day', visit_stime)

)

  1. 데이터의 특성 상 아주 희박하지만, 혹시나 ga_sess에 visit_stime group by visit_stime 시 빠지는 날짜가 발생할 가능성이 있습니다(시스템이 다운되어서 사용자가 아예 안들어오는 기간이라던가)

감사합니다

0

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

하하하하히님, 질문 주신 내용에 대해 답변 드리겠습니다.

질문하신 쿼리는 generate_series를 사용하여 특정 날짜 범위 내 각 날짜를 생성하는 것입니다. 이는 주로 데이터가 존재하지 않는 날짜에 대한 DAU(일일 활성 사용자)를 계산할 때 유용합니다. generate_series 함수는 지정된 범위 내의 모든 날짜를 생성하기 때문에 결과에서 해당 날짜의 DAU 데이터가 없더라도 날짜가 포함됩니다.

반면, 두 번째로 제시된 방법은 date_trunc 함수를 사용하여 실제 visit_stime이 존재하는 날짜에 대해서만 그룹핑합니다. 이 경우, 데이터가 없는 날짜에 대한 정보는 포함되지 않기 때문에 분석 시 해당 날짜가 누락되는 문제가 발생할 수 있습니다.

따라서, generate_series를 사용한 방법은 누락된 날짜에도 기본 값을 포함시켜 전체 범위에 대한 일관된 분석을 가능하게 합니다. 이는 특정 날짜에 데이터가 없는 경우에도 그 날짜의 DAU를 계산할 수 있게 도와줍니다.

혹시 더 깊이 있게 알고 싶으시거나 다른 관련된 예제를 찾고 싶으시다면, DAU 계산에 대한 DAU, WAU, MAU를 SQL로 구하기-02 관련 질문드립니다. 이 질문을 참고하실 수 있습니다. 원래 강의에서 다루고 있는 내용을 참고하시면 좀 더 많은 인사이트를 얻으실 수 있을 것입니다.

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

Hình ảnh hồ sơ của hsh6223885815
hsh6223885815

câu hỏi đã được viết

Đặt câu hỏi