묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 기본편
문제2 PayService
[질문 내용]김영한 강사님께서 영상 18분 33초쯤에 PayService에 만든 findPay메소드에서 결제 수단을 넣으면 PayService의 코드가 바뀐다는 말이 잘 이해가 안됩니다. 자세하게 설명해주실 수 있을까요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 4주차 과제] 리텐션 과제
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_date, first_date, DAY) AS diff_of_day DATE_DIFF(event_week, first_week, WEEK) AS diff_of_week FROM ( SELECT DISTINCT user_pseudo_id, -- DATE_TRUNC 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 ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_week_user_cnt), 2) AS retention_rate FROM ( SELECT diff_of_week, user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week ASC) AS first_week_user_cnt FROM user_counts )2번WITH base AS ( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul') AS event_datetime, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul')) AS event_date, FROM advanced.app_logs) , weekly_user_active AS ( SELECT user_pseudo_id, DATE_TRUNC(event_date, WEEK) AS event_week, MIN(DATE_TRUNC(event_date, WEEK)) OVER (PARTITION BY user_pseudo_id) AS first_active_week, LAG(DATE_TRUNC(event_date, WEEK)) OVER (PARTITION BY user_pseudo_id ORDER BY DATE_TRUNC(event_date, WEEK)) AS pre_active_week FROM base ) , user_group AS ( SELECT user_pseudo_id, event_week, DATE_DIFF(event_week, pre_active_week, WEEK(MONDAY)) AS diff_prior_week, DATE_DIFF(event_week, first_active_week, WEEK(MONDAY)) AS diff_first_week, CASE WHEN event_week = first_active_week THEN 'NEW' WHEN DATE_DIFF(event_week, pre_active_week, WEEK) = 1 THEN 'Current' WHEN DATE_DIFF(event_week, pre_active_week, WEEK) > 1 THEN 'Resurrected' ELSE 'Dormant ' END AS user_seg FROM weekly_user_active ) SELECT event_week, user_seg, COUNT(DISTINCT user_pseudo_id) AS user_cnt, FROM user_group GROUP BY ALL ORDER BY 1 ; 4번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" AND event_name = 'click_payment' ), 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 ) SELECT diff_of_week AS week, user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week ASC) AS first_week_user_cnt, ROUND(SAFE_DIVIDE(user_cnt, FIRST_VALUE(user_cnt) OVER(ORDER BY diff_of_week ASC)) * 100, 2) AS retention_rate FROM user_counts ORDER BY diff_of_week
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 4주차] 6-1 과제
개요Domain : 배달음식 어플리케이션Data set : app_logs 테이블데이터기간: 2022.08~2022.12목적: Foodie 현황 데이터분석 데이터분석1. 월별 활성 사용자 수목적: 월별 활성 고객 파악을 통해 서비스의 전반적인 흐름 파악1-1 지표정의MAU (Monthly Active Users)한 달 동안 앱을 사용한 순수 고유 사용자 수중복을 제거한(COUNT DISTINCT) user_id 기준으로 집계서비스의 전반적인 성장과 규모를 보여주는 핵심 지표Cart Users한 달 동안 장바구니에 상품을 담은 순수 고유 사용자 수event_name = 'click_cart'인 이벤트의 고유 사용자 수실제 구매 의도를 가진 잠재 고객의 규모를 파악할 수 있는 지표Payment Users한 달 동안 실제 결제를 진행한 순수 고유 사용자 수event_name = 'click_payment'인 이벤트의 고유 사용자 수실제 매출 발생에 기여한 고객의 규모를 나타내는 지표Cart to Payment Rate장바구니 사용자 중 실제 결제로 이어진 비율 (%)(Payment Users / Cart Users) * 100으로 계산주요 의미:구매 전환율을 나타내는 핵심 지표장바구니 단계에서의 이탈률 파악 가능높을수록 구매 전환이 잘 이루어짐을 의미쿼리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, event_params.key AS param_key, event_params.value.string_value AS string_value, event_params.value.int_value AS int_value FROM advanced.app_logs CROSS JOIN UNNEST(event_params) as event_params WHERE event_date BETWEEN "2022-01-01" AND "2022-12-31" ) # 월별 활성 사용자 분석 ,monthly_active AS ( SELECT FORMAT_DATE('%Y-%m', event_date) as year_month, COUNT(DISTINCT user_id) as MAU, COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END) as cart_users, COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) as payment_users, ROUND(COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) * 100.0 / NULLIF(COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END), 0), 2) as cart_to_payment_rate FROM base GROUP BY year_month ORDER BY year_month ) SELECT * FROM monthly_active 시각화 결론8월~10월 사이 사용자 확대특시 10월에 MAU가 증가하여 서비스의 성장사용자 수가 크게 증가했음에도 구매전환율이 안정적으로 유지MAU증가와 함께 실제 구매자 수도 증가⇒ 서비스가 8~10월 사이 급격한 성장세를 통해 사용자가 증가하였으며 일시적인 효과가 아닌 안정적으로 성장세에 맞는 고객을 확보하고 있는 중 Action ItemMAU 증가 원인 파악하기신규고객, 기존고객 중 어떤 고객이 활성화가 된건지 (신규, 기존에 따른 프로모션 등 확인하기)신규고객이라면 어떤 채널로 유입이 된건지 유입 근거 찾아보기기존고객이라면 기존고객 대상 프로모션을 한게 있는지, 특정페이지 개선이 되었거나, 변경사항이 있는지 확인해보기 2. Funnel 분석쿼리WITH base AS ( SELECT DISTINCT user_id, event_name, event_timestamp, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, user_pseudo_id FROM advanced.app_logs WHERE event_date BETWEEN "2022-01-01" AND "2022-12-31" ), user_journey AS ( SELECT user_id, event_date, event_name, event_datetime, -- 사용자별 이벤트 발생 순서 ROW_NUMBER() OVER (PARTITION BY user_id, event_date ORDER BY event_datetime) as event_sequence FROM base ), funnel_steps AS ( SELECT event_date, COUNT(DISTINCT CASE WHEN event_name = 'screen_view' THEN user_id END) as view_users, COUNT(DISTINCT CASE WHEN event_name = 'click_cart' THEN user_id END) as cart_users, COUNT(DISTINCT CASE WHEN event_name = 'click_payment' THEN user_id END) as payment_users FROM user_journey GROUP BY event_date ), funnel_rates AS ( SELECT event_date, view_users, cart_users, payment_users, ROUND(cart_users * 100.0 / NULLIF(view_users, 0), 2) as view_to_cart_rate, ROUND(payment_users * 100.0 / NULLIF(cart_users, 0), 2) as cart_to_payment_rate, ROUND(payment_users * 100.0 / NULLIF(view_users, 0), 2) as view_to_payment_rate FROM funnel_steps ) #SELECT * FROM funnel_rates #ORDER BY event_date SELECT event_date, view_users as view_users_count, cart_users as cart_users_count, payment_users as payment_users_count, ROUND((cart_users * 100.0 / view_users), 2) as view_to_cart_rate, ROUND((payment_users * 100.0 / cart_users), 2) as cart_to_payment_rate, ROUND((payment_users * 100.0 / view_users), 2) as total_conversion_rate FROM funnel_rates ORDER BY event_date시각화⇒ 공휴일 등 특정 날짜에 고객 유입 변동이 큼 8월부터 10월까지 고객이 급격하게 늘었으나 이탈율은 9월에 높게 나타났음그에 비해 10월은 고객이 크게 늘어났음에도 이탈율은 큰폭으로 보이지 않음view > cart는 20% 수준의 이탈율이나, cart > payment가 60% 수준의 큰 이탈율 발생⇒ 구간별 고객수가 전체적으로 같이 확대되어 이탈율은 월별 특이점 없음 Action Itemcart에서 payment 이탈 고객에게 쿠폰지급 프로모션 또는결제단계 최소화를 통해 이탈율 개선 방법 모색 필요
-
미해결챗 GPT를 활용한 파이썬 프로그래밍
강의 음성이 너무 작아 듣기가 불편합니다.
섹션 6 파이썬 26_Chap06 부터 동영상의 음성이 너무 작아서 불편합니다. 이썬26_Chap06_챗GPT로_생성한_이메일주소체크데모 파이파이썬26_Chap06_챗GPT로_생성한_이메일주소체크데모썬 26_Chap06_챗GPT로_생성한_이메일주소체크데모
-
미해결스프링 부트 - 핵심 원리와 활용
Tomcat EE
[TOMCAT EE는 뭔가요?]질문 내용 그대로 입니다!
-
미해결핸즈온 리액트 네이티브
ImagPickerScreen을 만드는 과정에서 문제가 발생하여 글을 남깁니다.
iOS에서 사진의 주소값을 ph://와 같은 주소를 반환하는데 해당 주소를 처리할 수 없다고 뜨는데 어떻게하면 좋을까요?오류문은 다음과 같습니다.No suitable URL request handler found for ph://17370BD6-D19B-4C06-9180-03BB64CF2AD2/L0/001-[RCTNetworking networkTaskWithRequest:completionBlock:] RCTNetworking.mm:706-[RCTImageLoader _loadURLRequest:progressBlock:completionBlock:]__139-[RCTImageLoader loadImageOrDataWithURLRequest:size:scale:resizeMode:priority:attribution:progressBlock:partialLoadBlock:completionBlock:]block_invoke.159dispatchcall_block_and_releasedispatchclient_calloutdispatchlane_serial_draindispatchlane_invokedispatchroot_queue_drain_deferred_wlhdispatchworkloop_worker_threadpthreadwqthreadstart_wqthread안드로이드 쪽에서는 사진이 정상적으로 목록이 조회되는 것을 알 수 있었습니다!
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
select값이 출력이 안돼요
input 값은 나오는데 select 값은 출력이 안돼요 ㅠ 오류 메세지도 따로 나오는 건 없고 console.log로 cities 값을 볼려고 했는데 빈 Array가 나옵니다 ㅠ import Header from "./components/Header.js"; import RegionList from "./components/RegionList.js"; import CityDetail from "./components/CityDetail.js"; import CityList from "./components/CityList.js"; import { request } from "./components/api.js"; export default function App($app){ const getSortBy = () => { if (window.location.search){ return window.location.search.split('sort=')[1].split('&')[0]; } return 'total'; }; const getSearchWorld = () => { if(window.location.search && window.location.search.includes('search=')){ return window.location.search.split('search=')[1] } //뒤에 있는 값을 반환 return ''; }; this.state={ startIdx : 0, sortBy : getSortBy(), searchWorld: getSearchWorld(), region: '', cities:'', }; const header = new Header({ $app, initialState:{ sortBy:this.state.sortBy, searchWorld:this.state.searchWorld }, handleSortChange: async(sortBy) => { const pageUrl = `/${this.state.region}?sort=${sortBy}`; history.pushState( null, null, this.state.searchWorld ? pageUrl + `&search=${this.state.searchWorld}` : pageUrl ); //변경된 정렬기준을 적용한 새로운 데이터를 불러옴 (매개변수로 전달받은 새로운 정렬기준인 sortBy 값을 넣어야함) const cities = await request(0, this.state.region, sortBy, this.state.searchWorld); console.log(cities) // 변경된 상태값을 업데이트 this.setState({ ...this.state, startIdx:0, sortBy: sortBy, cities: cities, }); }, handleSearch: async(searchWorld) => { //웹사이트 주소를 알맞게 변경 history.pushState( null, null, `/${this.state.region}?sort=${this.state.sortBy}&search=${searchWorld}` ); const cities = await request(0, this.state.region, this.state.sortBy, searchWorld); this.setState({ ...this.state, startIdx:0, searchWorld: searchWorld, cities: cities }) }, }); const regionList = new RegionList(); const cityList = new CityList({ $app, initialState:this.state.cities, // 아래는 더보기 버튼을 눌렀을 때 실행되는 것 handleLoadMore: async() => { const newStartIdx = this.state.startIdx + 40; const newCities = await request(newStartIdx, this.state.sortBy, this.state.region, this.state.searchWorld); this.setState({ ...this.state, startIdx : newStartIdx, cities:{ cities:[...this.state.cities.cities, ...newCities.cities], isEnd: newCities.isEnd, } }) } }); const cityDetail = new CityDetail(); this.setState = (newState) => { this.state = newState; cityList.setState(this.state.cities); header.setState({sortBy:this.state.sortBy, searchWorld:this.state.searchWorld}); }; const init = async() => { const cities = await request(this.state.startIdx, this.state.sortBy, this.state.region, this.state.searchWorld); this.setState({ ...this.state, cities: cities, //api 호출의 결과인 cities }); }; init(); }
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[바짝스터디 4주차] 6-1 강의최종과제
노션으로 작성하였습니다. 링크공유합니다.https://canyon-king-6a2.notion.site/4-Foodie-Express-143e4e315127805faf7de0620e6ca51a?pvs=4
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 4주차] 6-1 과제
노션에 작성하였습니다😃https://www.notion.so/4-143a36e0ca1980d48477c45cb562019d?pvs=4
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 채점방식
작업형2 채점방식이 궁금합니다.시험에서 제시한 평가지표로 예측값과 실제값을 비교 평가해서 평가지표 점수가 안좋을수록 감점을 받는 그런방식으로 채점이 된다고 이해하면 될까요??
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
답이 다른 이유
이렇게 풀었는데 왜 답이 다를까용?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
다음강의는뭐에요?
동시성준비중이신다음강의는뭐에요?
-
미해결
while 반복문 continue가 헷갈려유..
이 코드인데유... 제가 머리가 별로 안 좋은건지 강사님이 분명 while 문일 때 i = 1,2,3,4,5,6이 나오게 작동한다고 하셨는데막상 나온 값을 보니 1 2 4 5 가 전부라서유... 왜 그런지 잘 모루겠습니다...이게 막상 도출된 값이랑 i값이랑 다른건지 뭔지 넘 헷갈립니다...
-
미해결김영한의 실전 자바 - 중급 2편
안녕하세요 질문있습니다.
직접 구현하는 연결 리스트1 강의중 영상과 자료에는 문제가 없는 것 같은데 저의 IDE에서는 캐스팅을 요청하길래 코드를 보니 참조값이 Object인데 반환 값은 Node라 상관이 없는 것을 알고 있지만다운캐스팅을 하는 것이 올바른 것인지 문의드립니다.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
TCP/IP vs UDP , 멀티 스레드에서의 병목 현상에 대한 질문이 있습니다!
안녕하세요! 항상 좋은 강의 감사합니다.강의를 듣다가 궁금한 점이 있어서 질문을 드립니다!Q1.TCP/IP 의 경우 서버 입장에서 사용자가 연결되어 있다는 착각에 빠지지 말라고 알려주셨습니다. 하트비트를 어차피 보내줄 것이라면 UDP 로 설계를 해도 상관없는 건가요?연결을 신뢰할 수 없음에도 TCP/IP를 사용하는 이유가 궁금합니다.Q2.멀티 스레드 환경에서 GQCS를 할 경우, 스레드들이 공유하는 큐에 락을 걸어서 적용해봤습니다. 하지만 이 경우 큐에 접근할 때 병목 현상이 우려됩니다. 해당 세션이 특정 스레드에서만 처리되도록 하여 락을 없애는 것과 락을 걸고 여러 스레드에서 접근할 수 있도록 하는 것 중 어느 것을 선호하시나요? Q3. 어쩌면 Q2와 거의 같은 질문일 수도 있겠습니다. 멀티-스레드 환경에서 락 에 대한 대안이 있나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
코랩/시험환경
시험환경에서는 하나의 칸 안에 모든 코드를 적는 것이 좋다고 하는데 코랩에서는 칸을 나눠서 각 단계를 적는 연습을 하다보니 어느정도까지 ctrl+shift처리를 해가며 풀이를 해야할지 고민입니다!
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글
선생님 캐글 놀이터 사용법 알려주는 영상이 뭘까요~?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 3주차 과제] 리텐션 연습문제/ 코딩테스트 연습문제
노션 링크를 첨부합니다.https://reinvented-friday-e96.notion.site/BigQuery-3-13dbfe02e9e7801d94b7dd06eb5bb1cc?pvs=4
-
미해결실전! Querydsl
Query dsl 에서 QHello 생성안됨
plugins { id 'java' id 'org.springframework.boot' version '3.3.5' id 'io.spring.dependency-management' version '1.1.6' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jakarta") annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } clean { delete file('src/main/generated') } tasks.named('test') { useJUnitPlatform() }위와 같이 build.gradle 작성했고 clean 후 compile.Java ( compile.Querydsl이 없음) 했지만 아무것도 생기지 않습니다.구글링 해서 다 적용해봐도 안되는데 어떻게들 하셨나요
-
미해결
수강신청.임직원
현대캐피탈 임직원으로 제한없이 교육을들을수 있는것으로 알고 있는데요.수강신청이 안되는데 확인가능할까요?