semester1,2 관련 질문입니다 ㅎㅎ
미해결
[PY 0201] 인공지능을 위한 파이썬 레벨1
혹시 총 커리큘럼의 semester1,2에 대한 강의는 인프런에 탑재하실 생각은 없는지 여쭤보고 싶네요~
- python
- 인공지능(ai)
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
[PY 0201] 인공지능을 위한 파이썬 레벨1
혹시 총 커리큘럼의 semester1,2에 대한 강의는 인프런에 탑재하실 생각은 없는지 여쭤보고 싶네요~
해결됨
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
(사진)
미해결
BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
연습 문제 (1) 윈도우 함수 -- 1) user들의 다음 접속 월과 다다음 접속 월을 구하는 쿼리를 작성해주세요. SELECT user_id, visit_month, LEAD(visit_month, 1) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month_1, LEAD(visit_month, 2) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month_2, FROM `advanced.analytics_function_01` ORDER BY user_id LEAD 함수와 적절한 수를 이용해 작성 LEAD 함수에 들어가는 인자에 따라 다음인지 다다음인지 정할 수 있음 따로 정해주지 않을 경우 1로 인식 OVER 의 뒷 내용이 생각보다 조금 복잡해 한번에 떠오르지는 않았음 OVER 의 ORDER BY 의 기본은 오름차순 -- 2) user들의 다음 접속 월과 다다음 접속 월, 이전 접속 월을 구하는 쿼리를 작성해주세요. SELECT user_id, visit_month, LEAD(visit_month, 1) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month_1, LEAD(visit_month, 2) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month_2, LAG(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) AS previous_visit_month_1, FROM `advanced.analytics_function_01` ORDER BY user_id LAG 사용해 이전 값 구해봄 LAG 안에 특별한 숫자를 주지않으니 1로 인식하는 것을 확인함 LEAD 값이 NULL → 해당 값이 마지막 값 LAG 값이 NULL → 해당 값이 첫번째 값 -- 3) user의 다음 접속까지의 간격을 구하시오 SELECT user_id, visit_month, LEAD(visit_month, 1) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month_1, (LEAD(visit_month, 1) OVER (PARTITION BY user_id ORDER BY visit_month) - visit_month) AS diff_month, FROM `advanced.analytics_function_01` ORDER BY user_id SELECT 절에서 만들어진 컬럼은 그대로 사용할 수는 없음 하지만 위와 같이 할 경우 너무 길어지고 복잡해짐(중복됨) → 서브쿼리 사용 SELECT *, (after_visit_month_1 - visit_month) AS diff_month FROM ( SELECT user_id, visit_month, LEAD(visit_month, 1) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month_1, FROM `advanced.analytics_function_01` ORDER BY user_id ) 쿼리를 최대한 덜 수정하는 방향으로 작성해 볼 것 (2) QUALIFY -- amount_total : 전체 SUM -- cumulative_sum : row 시점에 누적 SUM -- cumulative_sum_by_user : row 시점에 유저별 누적 SUM -- last_5_orders_avg_amount : order_id 기준으로 정렬하고, 직전 5개 주문의 평균 amount SELECT *, SUM(amount) OVER() AS amount_total, SUM(amount) OVER(ORDER BY order_id) AS cumulative_sum, SUM(amount) OVER(PARTITION BY user_id ORDER BY order_id) AS cumulative_sum_by_user, AVG(amount) OVER(ORDER BY order_id ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS last_5_orders_avg_amount FROM advanced.orders ORDER BY order_id BETWEEN 앞에 ROWS 를 빼먹어서 계속 오류를 냈음 -- 1) 사용자별 쿼리를 실행한 총 횟수를 구하는 쿼리를 작성해주세요. -- 단, GROUP BY를 사용해서 집계하는 것이 아닌 query_logs의 데이터의 우측에 새로운 컬럼을 만들어주세요. SELECT *, COUNT(query_date) OVER(PARTITION BY user) AS cnt_by_user FROM advanced.query_logs 데이터에 NULL 값이 없으므로 어떤 열을 세던지 상관 없음 -- 2) 주차별로 팀 내에서 쿼리를 많이 실행한 수를 구한 후, 실행한 수를 활용해 랭킹을 구해주세요. -- 단, 랭킹이 1등인 사람만 결과가 보이도록 해주세요 SELECT *, RANK() OVER(PARTITION BY team, week_key ORDER BY cnt_by_user DESC) AS rnk FROM ( SELECT user, team, IF(query_date < '2024-05-01', 1, 2) AS week_key, COUNT(user) AS cnt_by_user FROM advanced.query_logs GROUP BY ALL ) QUALIFY rnk = 1 ORDER BY team, week_key '주차별’에 대한 아이디어가 잘 떠오르지 않았음 → 데이터의 범위가 좁기 때문에 일단은 IF를 통해 주차를 구분해줌 → 날짜 범위가 넓어지면 어떻게 할지 아직은 모르겠음 서브 쿼리 사용해봄 PARTITION 이 2개임(주차별, 팀별) QUALIFY 사용할 것(생각 못하고 LIMIT 쓰려다 막힘) -- 강의 코드 WITH query_cnt_by_team AS( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(user) AS query_cnt FROM advanced.query_logs GROUP BY ALL ) SELECT *, RANK() OVER(PARTITION BY week_number, team ORDER BY query_cnt DESC) AS rk FROM query_cnt_by_team QUALIFY rk = 1 ORDER BY week_number, team, query_cnt EXTRACT 함수 통해 ‘주차’ 추출 GROUP BY 후 윈도우 함수 사용 → 유연하게 사용할 것 -- 3) (2번 문제에서 사용한 주차별 쿼리 사용) 쿼리를 실행한 시점 기준 1주 전에 쿼리 실행 수를 별도의 컬럼으로 확인할 수 있는 쿼리를 작성해주세요 SELECT *, LAG(query_cnt) OVER(PARTITION BY user ORDER BY week_number) AS previous_week_cnt FROM query_cnt_by_team ORDER BY user WITH AS 로 만든 테이블 그대로 사용 -- 4) 시간의 흐름에 따라, 일자별로 유저가 실행한 누적 쿼리 수를 작성해주세요 SELECT *, SUM(query_cnt) OVER(PARTITION BY user ORDER BY query_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumul_cnt FROM ( SELECT user, team, query_date, COUNT(*) AS query_cnt FROM advanced.query_logs GROUP BY ALL ) ORDER BY user, query_date GROUP BY 한 서브쿼리 사용 FRAME 사용이 그렇게 까다롭진 않았음 FRAME 의 defalut 값 → UNBOUNDED PRECEDING ~ CURRENT ROW -- 5) 다음 데이터는 주문 횟수를 나타낸 데이터입니다. 만약 주문 횟수가 없으면 NULL로 기록됩니다. -- 이런 데이터에서 NULL 값이라고 되어있는 부분을 바로 이전 날짜의 값으로 채워주는 쿼리를 작성해주세요 SELECT date, IF(number_of_orders IS NULL, LAG(raw_data.number_of_orders, 1) OVER(ORDER BY date), number_of_orders) AS number_of_orders FROM raw_data 조건문 사용해서 IS NULL 인 값들만 LAG 사용 기존의 number_of_orders가 사라지는 문제가 있음 마지막 날짜는 안채워짐(연속으로 NULL 이라) -- 강의 코드 SELECT *, LAST_VALUE(number_of_orders IGNORE NULLS) OVER(ORDER BY date) AS last_value_orders FROM raw_data LAST_VALUE + IGNORE NULLS 사용 -- 6) 5번 문제에서 NULL을 채운 후, 2일 전 ~ 현재 데이터의 평균을 구하는 쿼리를 작성해주세요(이동 평균) SELECT *, AVG(last_value_orders) OVER(ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_average FROM ( SELECT *, LAST_VALUE(number_of_orders IGNORE NULLS) OVER(ORDER BY date) AS last_value_orders FROM raw_data 서브쿼리 사용했지만 WITH 로 정의해도 됨 → 문제에서는 WITH 가 연속 두번 나오는데, WITH 는 한번만 작성해도 됨(, 로 구분) -- 7) app_logs 테이블에서 Custom Session을 만들어 주세요. 이전 이벤트 로그와 20초가 지나면 새로운 Session을 만들어 주세요. -- Session은 숫자로 (1, 2, 3 ...) 표시해도 됩니다 WITH base AS( SELECT event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), "Asia/Seoul") AS event_datetime, event_name, user_id, user_pseudo_id, FROM advanced.app_logs WHERE (event_date = "2022-08-18") AND (user_pseudo_id = "1997494153.8491999091") ORDER BY event_timestamp ) SELECT *, SUM(diff_classification) OVER(ORDER BY event_datetime) + 1 AS session_id FROM ( SELECT *, IF(DATETIME_DIFF(event_datetime, before_datetime, second) > 20, 1, 0) AS diff_classification FROM ( SELECT *, LAG(event_datetime) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS before_datetime, FROM base ) ) ORDER BY event_datetime timestamp와 1초의 관계 : timestamp 1당 1초 아닌가? → 그렇다면 굳이 datetime으로 바꿀 필요가 있나 서브쿼리 2번 중첩해서 사용 IF 문 사용해 20초 차이남 → 1 차이 안남 → 0 으로 파생해 누적합 + 1로 session_id 도출 첫 행 before_datetime에 예외처리 해줄 것 그런데 PARTITION BY 를 매 OVER 안에 무조건 써야 하나? EDA(2) 요일별 접속자 수 + 기간 내 이벤트날 요일별 접속자 평균을 내보자 일 > 토 > 수 > 금 > 목 > 화 > 월 → 역시 쉬는날이 더 배달 수요가 많은건가? → 수요일은 왜 일까? 2022-08-01(월) ~ 2023-01-20(금) 의 데이터 주말(토, 일)이 아닌 공휴일 목록 → 네이버 캘린더 참조 2022-08-15 월 : 광복절 2022-09-09 금 : 추석연휴 2022-09-12 월 : 추석연휴 2022-10-03 월 : 개천절 2023-01-23 월 : 설 연휴 2023-01-24 화 : 설 연휴(대체공휴일) 주요 이벤트 → 특정 사건이 있을 경우 배달 수요가 늘거나 줄지 않을까? / 위키 사이트 참조 2022-08-02 화 : 코로나19 누적 감염자 2천만 명 돌파 2022-08-08 월 : 수도권 기록적인 폭우 및 홍수 2022-10-31 월 : 할로윈데이 / 2022-10-29 토에 이태원 압사 사고 발생 2022-11-08 화 : 한국시리즈 2022-11-17 목 : 2023학년도 대학수학능력시험 2022-11-24 목 : 카타르 월드컵 vs 우루과이 2022-11-28 월 : 카타르 월드컵 vs 가나 2022-12-03 토 : 카타르 월드컵 vs 포르투갈 2022-12-19 월 : 카타르 월드컵 결승 2022-12-25 일 : 크리스마스 등등… “특정 사건”의 중요도를 정성적으로 평가하기에는 어렵다고 느낌 → 오히려 반대로 갑자기 이용자 수의 변화가 급격하게 나타나는 날짜를 위주로 봐야하나? → 그런데 앱 이용자 수 성장 시기에는 항상 상승만해서 보기 애매할 듯 → 요일별 경향을 따져야 할 수도 일요일 < 월요일(개천절) < 화요일 → 앱 이용자 수 상승 예시 월드컵에 따른 이용자 수 변화는 뚜렷하지 않음 수요일에 딱히 뭔가 보이진 않음 → 평일의 절반이 지남에 따른 보상 심리가 원인일수도? 시간대에 따른 이용자 수 마찬가지로 시간대별 평균 이용자 수 구해봄 저녁 시간대(19시 ~ 22시)가 가장 이용자 수 많음 점심 시간대(12시 ~ 14시)가 그 다음 당연하게도 식사 시간에 배달 앱 수요가 많음 시간대 별로 food_id 에 따른 수요가 다른지 확인해볼 것 → 시간대 별 이용자에게 추천해주는 음식 다르게 설정할 수 있음 하루의 기준을 0시로 잡아도 되나?에 대한 의문이 생김(야식 수요) → 이거에 대한 기준을 다시 잡고 일별 이용자 수 다시 구해야 할수도
해결됨
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
부록 따라가고 있는데 그대로 소스 코드를 작성해서 실행하면 localhost에 아래와 같이 오류가 뜹니다. 오류 메시지가 [id].tsx 파일에 아래와 같이 뜨긴 하는데 강의 중 강사님 화면에도 그렇고 강의 자료에도 똑같이 오류 메시지(빨간 줄)가 있더라구요. next13부터 라우팅 방식이 달라졌다고 하던데 버전 문제인건지... 아래 params 오류 제외하고는 모두 동일한 소스 코드를 작성했고 오류도 없습니다. 해결 방법이 궁금합니다. **혹시 몰라서 [id].tsx 랑 post.ts 코드 전체 첨부합니다. <id.tsx> import React from 'react' import Head from 'next/head' import { GetStaticPaths, GetStaticProps } from 'next' import { getAllPostIds, getPostData, getSortedPostsData } from '../../lib/post' const Post = ({postData}: { postData: { title: string date: string contentHtml: string } }) => { return ( <div> <Head> <title>{postData.title}</title> </Head> <article> <h1>{postData.title}</h1> <div> {postData.date} </div> <div dangerouslySetInnerHTML={{__html: postData.contentHtml}} /> </article> </div> ) } export default Post export const getStaticPath: GetStaticPaths =async () => { const paths = getAllPostIds(); return{ paths, fallback: false } } export const getStaticProps: GetStaticProps =async ({params}) => { const postData = await getPostData(params.id as string) return { props: { postData } } } <post.ts> import fs from 'fs' import path from 'path' import matter from 'gray-matter' import { remark } from 'remark'; import remarkHtml from 'remark-html/lib'; const postsDirectory = path.join(process.cwd(), 'posts') console.log('process.cwd()', process.cwd()); console.log('postsDirectory.cwd()', postsDirectory); export function getSortedPostsData(){ //Get file names under /posts const fileNames = fs.readdirSync(postsDirectory) console.log('fileNames', fileNames); //fileNames ['pre-rendering.md', 'ssg-ssr.md'] const allPostsData = fileNames.map(fileName => { //Remove ".md" from file name to get id const id = fileName.replace(/\.md$/, '') //Read markdown file as string const fullPath = path.join(postsDirectory, fileName) const fileContents = fs.readFileSync(fullPath, 'utf8') //Use gray-matter to parse the post metadata section const matterResult = matter(fileContents) //Combine the data with the id return{ id, ...(matterResult.data as {date: string; title: string}) } }) //Sort posts by date return allPostsData.sort((a,b) => { if(a.date<b.date){ return 1 } else{ return -1 } }) } export function getAllPostIds(){ const fileNames = fs.readdirSync(postsDirectory); return fileNames.map(fileName => { return { params: { id: fileName.replace(/\.md$/, '') } } }) } export async function getPostData(id: string){ const fullPath = path.join(postsDirectory, `${id}.md`) const fileContents = fs.readFileSync(fullPath, 'utf-8') const matterResult = matter(fileContents); const processedContent = await remark().use(remarkHtml).process(matterResult.content); const contentHtml = processedContent.toString(); return { id, contentHtml, ...(matterResult.data as {date: string; title: string}) } }
해결됨
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
코랩 작성 시 회색 문자로 힌트 같은게 계속 뜨더라구요.. 이거 없앨 수 있는 방법 있나요? 제가 생각한 것으로 하고 싶은데, 자꾸 보이네요..
미해결
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
안녕하세요 강사님. post 모델과 코멘트, 즉, post 테이블과 코멘트는 외래키 관계라고 설명해주셨는데, 제가 db용어를 잘 모르고, 찾아봐도 와닿지 않아서 이해가 잘 되지 않았습니다. 감사합니다.
해결됨
Next + React Query로 SNS 서비스 만들기
안녕하세요, app router에 대해 계속 공부하다가 route handlers 에 대한 궁금증이 해결되지 않아 질문하게 됐습니다. Next app router에서 정확히 route handlers를 사용해야 하는 이유가 무엇인가요? 제가 생각했을 땐 서버 데이터 캐싱이나 API 엔드포인트를 숨길 수 있다는 장점이 있는데 이건 서버 컴포넌트에서 fetch하는 것으로도 대체가 되는데 route handlers를 사용해야 하는 특별한 이유가 따로 있는 것인가요? 모든 API를 route handlers로 하면 Next서버에 부하가 걸릴텐데 어떻게 해결할 수 있을까요? 이 부분은 공식문서에서 제가 못 찾은 것 같은데, 만약 외부 백엔드 API가 있고 여기에 데이터 요청을 할 때 클라이언트 컴포넌트에서의 모든 API 요청을 1차로 route handler에 하고 여기서 외부 백엔드 API로 요청하게되면 route handlers에 요청이 몰리게 되는데 이때 Next 서버에 걸리는 부하를 어떻게 해소할 수 있을까요?
해결됨
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
# XGBoost from xgboost import XGBClassifier xgb = XGBClassifier() xgb.fit(X_tr[cols], y_tr) pred = xgb.predict_proba(X_val[cols]) pred[:10] array([[8.8499719e-01, 1.1500280e-01], [9.5693278e-01, 4.3067228e-02], [5.9604776e-01, 4.0395224e-01], [9.1923535e-01, 8.0764659e-02], [7.2003794e-01, 2.7996209e-01], [9.8670012e-01, 1.3299899e-02], [9.9945015e-01, 5.4984458e-04], [9.1459018e-01, 8.5409813e-02], [1.7607212e-03, 9.9823928e-01], [9.4050205e-01, 5.9497967e-02]], dtype=float32) XGB의 결과값이 이렇게 나와도 되나요..?
해결됨
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
y = (y_train['income'] == '>50K').astype(int) 이렇게 하면 50k 보다 큰 값에서는 1이 나오는데, 만약 3개의 값으로 나오게 하려면 어떻게 해야하나요? (0, 1, 2) 등등 그리고 윗 코딩대로 진행하면 <=50k 는 자동적으로 0이 되는건가요? 이유가 있을까요?
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요. [id].tsx 소스인데요 .. fetch를 2씩 호출되는 걸까요? ㅠ 2번째 호출될때는 id 값에 undefinded 로 되어서 페이지 오류가 발생됩니다 ㅠㅠ 뭐가 잘못 된것일까요? 캡쳐 보내드립니다.
미해결
BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
🔐 이번주차 중요 키워드 : 윈도우 함수, FRAME, QUALIFY ✅ 윈도우 함수 연습문제 1번 1) 사용자별 쿼리를 실행한 총 횟수를 구하는 쿼리 작성 단, group by를 사용해서 집계하는 것이 아닌 query_logs의 데이터 우측에 새로운 컬럼을 만들어주세요. select *, count(query_date) over (partition by user) as query_cnt from advanced.query_logs order by query_cnt desc ✅ 윈도우 함수 연습문제 2번 2) 주차별로 팀 내에서 쿼리를 많이 실행한 수 구하기 2-1) 실행한 수를 활용해 랭킹 구하기 -- 단, 랭킹이 1등인 사람만 결과가 보이도록 해주세요. week_number | team | user | query_cnt | team_rank select * , rank() over(partition by week_number, team order by query_cnt) as team_rank from ( select EXTRACT(week FROM query_date) as week_number, team, user, count(query_date) as query_cnt from advanced.query_logs group by all ) qualify team_rank = 1 order by week_number, team, query_cnt DESC ❗ 새롭게 알게된 함수 : EXTRACT(week FROM query_date) as week_number → 기존의 알고 있던 함수와 같은 결과값 : DATE_TRUNC(query_date, WEEK) AS week_number ❗ qualify team_rank = 1 : QUALIFY 덕분에 서브쿼리 없이 바로 조건에 사용가능함! ✅ 윈도우 함수 연습문제 3번 3) (2번 문제에서 사용한 주차별 쿼리 사용) 쿼리를 실행한 시점 기준 1주전에 쿼리 실행 수를 별도의 컬럼으로 확인할 수 있는 쿼리 작성 select * , LAG(query_cnt, 1) over (partition by user order by week_number) as pre_week_query_cnt from ( select EXTRACT(week FROM query_date) as week_number, team, user, count(query_date) as query_cnt from advanced.query_logs group by all ) ✅ 윈도우 함수 연습문제 4번 4) 시간의 흐름에 따라, 일자별로 유저가 실행한 누적 쿼리수 작성 ## FRAME의 default값은 UNBOUNDED PRECEDING AND CURRENT ROW with query_cnt_by_team as ( select EXTRACT(week FROM query_date) as week_number, team, user, query_date, count(query_date) as query_cnt from advanced.query_logs group by all ) select *, sum(query_cnt) over (partition by user order by query_date ASC) as cumulative_SUM1, sum(query_cnt) over (partition by user order by query_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as cumulative_SUM2, from query_cnt_by_team ❗ FRAME의 default값은 UNBOUNDED PRECEDING AND CURRENT ROW ✅ 윈도우 함수 연습문제 5번 ) 주무횟수 데이터에서 주문횟수가 없으면 NULL로 기록됨. 이런 데이터에서 NULL값이라고 되어있는 부분을 바로 이전 날짜의 값으로 채워주는 쿼리 WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07', 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL ) select * , ifnull(number_of_orders, LAST_VALUE(number_of_orders IGNORE NULLS) over(order by date)) as filled_orders from raw_data -- 조건절 ifnull 사용할 수 있음. -- LAG()를 사용하면 마지막 NULL값인 경우 채우는 값도 NULL! -- 그렇기 떄문에, LAST_VALUE()인데, NULL은 무시하라는 IGNORE NULLS! ❗️LAST_VALUE에서 IGNORE NULLS 안하면 값은 NULL ✅ 윈도우 함수 연습문제 6번 6) NULL을 채운후, 2일전 ~ 현재 데이터의 평균 (이동평균) WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07', 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL ) select * , AVG(filled_orders) over (order by date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS avg_orders from ( select * , ifnull(number_of_orders, LAST_VALUE(number_of_orders IGNORE NULLS) over(order by date)) as filled_orders from raw_data ) ✅ 윈도우 함수 연습문제 7번 7) app_logs 테이블에서 custom_session을 만들어 주세요:) 이전 이벤트 로그와 20초가 지나면 새로운 session을 만들어 주세요. event_date | event_timestamp | event_datetime | evnet_name | user_id | user_pseudo_id | before_event_datetime | second_diff | session_start | session_id with base as ( select event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') as event_time, event_name, user_id, user_pseudo_id, from advanced.app_logs where event_date = "2022-08-18" and user_pseudo_id = "1997494153.8491999091" order by event_timestamp ) select *, sum(session_start) over (partition by user_pseudo_id order by event_time) as session_num from ( select *, CASE WHEN before_event_datetime IS NULL THEN 1 WHEN second_diff >=20 THEN 1 ELSE 0 END AS session_start from ( select *, DATETIME_DIFF(event_time, before_event_datetime, SECOND) AS second_diff from ( select *, LAG(event_time,1) over (partition by user_pseudo_id order by event_time) as before_event_datetime from base order by event_time ) ) ) ❗ 새롭게 알게 된 함수 DATETIME_DIFF : 처음에 날짜-시간 차이를 단순히 (-)로만 생각했다가 잘못된 결과 도출 → DATETIME_DIFF 함수로 정답도출!
해결됨
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
7회 기출유형(작업형3)에서 상관계수 구하는 문제, ERP와 각 변수 사이의 상관계수 계산이면 ERP 자기자신(상관계수 1)은 빼고 다른 변수들하고만을 말하는걸까요?
미해결
손에 익는 Next.js - 공식 문서 훑어보기
// [country]/layout.tsx const SUPPORTED_LANGS = ['kr', 'us']; interface LangMap { [key: string]: string; } const LANG_MAP: LangMap = { kr: 'ko', us: 'en' }; export function generateStaticParams() { return SUPPORTED_LANGS.map(country => ({country})); } export const metadata: Metadata = { title: "Create Next App", description: "Generated by create next app", }; export default function RootLayout({ children, params, }: { children: React.ReactNode; params: { country: string }; }) { return ( <html lang={LANG_MAP[params.country]}> <body> <TanstackQueryProvider> <div className='container'> <BannerWrap/> <Header/> <main>{children}</main> <Footer/> </div> </TanstackQueryProvider> </body> </html> ); } import Banner from "@/component/Banner"; import { getQueryClient } from "@/component/TanstackQueryOption"; import { fetchBanner } from "@/fetch/getReviews"; import { dehydrate, HydrationBoundary } from "@tanstack/react-query"; export default function BannerWrap () { const queryClient = getQueryClient(); queryClient.prefetchQuery({ queryKey:['banners'], queryFn: fetchBanner, }) return ( <HydrationBoundary state={dehydrate(queryClient)}> <Banner /> </HydrationBoundary> ) } 빌드 후 next start로 테스트 중 의문점이 들어서 질문드립니다! generateStaticParams 와 fetch의 revalidate 10초, tanstackQuery staleTime 10초 로 설정후 RootLayout 에서 BannerWrap에 prefetchQuery와 HydrationBoundary 를 통하여 data를 prefetch하고있는데 이게 layout이 전역에서 실행되서 그런지 생성된 페이지 개수만큼 요청을 날리는데 next에서는 같은 요청이 중복되지 않도록 요청을 캐시하고 중복 요청을 제거 한다고 배웠는데 이렇게 중복으로 요청하는 이유는 뭘까요?
미해결
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
itmes 에 여러글이 담긴거 확인하고 밑에서 for문 돌리는데 맨위에 있는 글 하나만 뜨네요 뭔가 잘못했나 해서 확인했는데 어떤게 문제인거죵..
해결됨
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
0 안녕하세요,, 저는 필기 유효기간 마지막 실기시험을 2과목 40점, 3과목 10점으로 탈락했어요,, 빅분기실기 강의 유효기간이 11월 10일까지라서,, 급하게 다시 필기취득하고, 또다시 실기접수를 하였습니다. 유효기간이 며칠안남아서,, 혹시 일주일만 더 연장해주실 수 있나요? 아니면 추가 비용납부해서 연장이 가능할까요?
미해결
[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
제 기기에는 강의처럼 밑에 버튼이 안나오는데 왜 그런걸까요?
미해결
프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
회사 내 환경 자원에서 수강중인데 아나콘다 유료로 회사내에서는 설치가 되지 않습니다. 아나콘다 설치가 불가능할경우 주피터 노트북 환경 설정 가이드를 알수는 없을까요?
해결됨
[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
안녕하세요? 강사님이 저술하신 빅데이터분석기사 실기관련해서 로지스틱회귀 419쪽 문제 중에 p-value가 0.05보다 작은 유의한 변수만 사용한 ~~~~ 여기서 교재는 독립변수로 age , service, booked가 되었는데. service도 0.05 넘는 독립변수가 아닌지요? 이 것도 제외 해야 하는것이 아닌지요?
해결됨
세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
나중에 강의를 복습 할 때 제가 어떤식으로 문제에 접근하고 이해하고 강의를 들었는지 회고 하기 위해서 기록 해둡니다. 또한 제가 이해한 부분이 다른 분들에게 도움이 되면 더 좋겠습니다. 목표 문자열 길이가 주어지면 길이가 1이 될때까지 - - 형태로 바꾸는 문제 제약조건 1 <= N <= 12 어떻게 해결? 입출력 결과를 보면 아래와 같이 추론이 가능하다. ans[0] = 3⁰ = 1 => - ans[1] = 3¹ = 3 => - - ans[2] = 3² = 9 => - - - - => ans[2-1] + 3²⁻¹ + ans[2-1] 결론적으로 => ans[i-1] + 3ⁱ ⁻ ¹ + ans[i-1] 이러한 규칙을 찾을 수 있다. 시간 복잡도 칸토어 집합은 0부터 N까지 각 단계별로 3⁰ + 3¹ + 3² + ... 3¹² 만큼의 문자열을 처리해야 하므로 모든 합이 전체 연상량이다. 0 <= N <= 12 ans[0] ~ ans[12] ans[i]의 길이 : 3ⁱ ans[0] : 1 ans[1] : 3 ans[2] : 9 - 위에 0,1,2일때 공백 - 합쳐서의 길이 등비수열
해결됨
한 입 크기로 잘라먹는 Next.js
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢 ) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. npx prisma db push 명령어를 입력했을 때 위와 같은 에러가 나고있습니다. 같은 에러 발생하신경우 있나요?