학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @Getter @AllArgsConstructor public class MemberOrderStatDto { private Long memberId; private String memberName; private long orderCount; // 주문 수 (distinct) private BigDecimal totalAmount; // 총 매출 private Double avgItemPrice; // 아이템 평균 가격 private Long last7dOrderCount; // 최근 7일 주문 수 (서브쿼리) } 위와 같은 통계치를 여러 테이블을 조인하여 추출해내야 하는데, 이 경우에는 querysql로 쿼리를 작성하는 것보다 mybatis xml에 직접 쿼리를 작성하는게 더 효율적일까요?
섹션 3 퀴즈에서 헷갈리는 부분이 생겨서 질문드립니다. 문제의 일부는 아래와 같습니다. (정답은 B) 1. 배열과 링크드 리스트의 주요 성능 차이점 중 하나는 무엇일까요? A 배열은 요소 탐색 시 O(1)이 걸리지만, 링크드 리스트는 O(N)이 걸립니다. B 링크드 리스트는 중간에 요소를 삽입/삭제 시 O(1)이 걸리지만, 배열은 O(N)이 걸립니다. 제가 헷갈리는 부분 A도 정답이 될 수 있지 않을까요? (A를 선택한 경우 오답으로 처리됨) 수업과 수업 자료를 통해 이렇게 이해 했습니다. "특정 원소 조회시 배열은 O(1), 링크드 리스트는 O(N)의 시간 복잡도를 가진다" 요소 탐색과 요소 조회는 다른 개념일까요?
안녕하세요 한기용 지식공유자님. 좋은 강의 잘 듣고 있습니다. ELT를 구현할 때 SWAP 명령어를 사용한 정확한 이유가 궁금합니다. 제가 찾아본 바로는 SWAP 명령어는 포인터 교체 방식으로 '즉시' 데이터와 메타데이터가 교체되므로, 무중단 배포가 가능하다는 것이 장점인 것 같습니다. 사실, 트랜잭션을 활용해도 같은 기능을 구현할 수 있을 것 같은데 메타데이터 복제를 빠뜨리는 것을 예방하고, 트랜잭션을 활용하였을 때보다 성능이 우수하고, lock을 예방하기 때문에 SWAP 문법을 활용하는 걸까요?
카일스쿨님 매번 친절한 답변 감사드립니다 정말 많이 배웁니다!! 🙇 N day 리텐션 쿼리에 관한 질문이 3가지 있습니다. 1. 맨 처음에 base 테이블 만들 때 DISTINCT를 왜 써야하는 건지 궁금합니다. (B방법 기준) first_date_and_diff 임시테이블을 만들 때 DISTINCT를 쓰는 것은, '동일 유저가 하루에 여러번 접속한 것을 중복 제거하기 위해' 사용하는 것으로 이해했습니다. 그런데 맨 처음에 base 테이블은 timestamp 컬럼이 있는데 어떻게 중복이 있을 수 있는 건지 헷갈립니다. 완전히 동일한 마이크로초에 여러번의 행동 로그가 기록될 수 있는 건지, 아니면 전산오류로 로그가 중복 기록이 될 수 있다는 건지,, 이해가 잘 안 됩니다 😢 2. 강의에서 보여주신 결과 테이블(diff_of_day | user_cnt)은 교안 330p와 다른 것이라고 이해했는데, 제가 이해한 것이 맞는지 확인 부탁드립니다! a) 강의 결과 테이블: 유저마다 시작일은 다를 수 있지만, 어쨌든 궁금한 건 각 유저들이 첫 접속 이후에 계속 쓰는지가 궁금한 것 → 가입일 코호트별로 그룹화하지 않아도 그자체로 의미가 있음 b) 교안 330p 테이블 : 강의 결과에서 한 단계 더 나아가서, 가입일에 따라 리텐션 추이에 차이가 있는지 더 쪼개보는 것 c) 만약 교안 330p 테이블처럼 결과를 출력하고 싶으면 , COUNT 집계할 때 GROUP BY와 SELECT에 first_date만 추가로 넣어주면 된다. (아래 쿼리 및 사진 참고) -- a) 강의 결과 SELECT diff_of_day, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_date_and_diff GROUP BY diff_of_day ORDER BY diff_of_day -- c) 교안처럼 출력하고 싶을 경우 SELECT first_date, diff_of_day, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_date_and_diff GROUP BY first_date, diff_of_day ORDER BY first_date, diff_of_day 3. Weekly 리텐션 파트에서 설명해주신 WEEK 함수는 어떻게 쓰는 걸까요? 아래 쿼리처럼 썼더니 WEEK 함수가 없다고 오류가 나던데, EXTRACT를 말씀하시려던 걸까요? EXTRACT는 제대로 나오는 거 같긴 합니다..! SELECT user_pseudo_id, event_name, event_date, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week, EXTRACT(WEEK FROM event_date) AS event_week2, WEEK(event_date) AS event_week3 FROM( SELECT DISTINCT -- event_timestamp 기반으로 중복 제거 user_id, event_name, -- event_date, -- Firebase의 형태(ex. '20220813')와 다르니까, 아래처럼 직접 추출 DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, user_pseudo_id FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03") 항상 감사드립니다!! 완강까지 달려보겠습니다!
from google.colab import files upload = files.upload() 위 명령어 실행없이 바로 데이터 불러올수없나요? 퇴근후딴짓님처럼 바로 df=pd.read_csv("members.csv") 로 불러오고싶은데 에러가 나네요 No such file or directory:members.csv
코드 5줄의 마법, 5줄 머신러닝 PyCaret: 데이터 분석 프로젝트에 AutoML 날개 달기
# --- [핫픽스] dask ↔ sktime 호환 패치 --- import types try: import dask.dataframe as dd # 최신 라이브러리 구조 변화에 대응하여 호환성을 맞춰주는 코드 # 상세한 내용을 이해할 필요는 없으며, 안정적인 실행을 위한 장치로 이해하세요. if not hasattr(dd, "core"): dd.core = types.SimpleNamespace() if not hasattr(dd.core, "DataFrame"): try: from dask.dataframe import frame as _frame dd.core.DataFrame = _frame.DataFrame except ImportError: class _DummyDF: pass dd.core.DataFrame = _DummyDF except ImportError: pass # dask가 설치되지 않은 환경에서는 무시합니다. 들여쓰기가 제대로 되어있지 않아 노션의 코드를 복사하여 붙여넣을 시 에러납니다.
질문1. 계정을 만들고 몇 가지 기능을 만들어 달라고 하니 크레디트가 종료되었습니다. 그래서 다계정을 만들어라라고 1주차에서 하셔서요. 그런데 제가 계정을 만들고 동일 프로젝트를 다시 이어서 하고 싶은데 초대를 해서 완성하려고 하는데 방법이 없더라구요. 어떻게 해야 하나요?
1) 해당 부분에서 비교연산자가 이상/이하가 아니고 초과/미만을 사용하고 있는데 분위수값에 해당하는 값이 있으면 그 결과가 다를꺼 같아서요. 25% 데이터 구하세요 하는 문제는 정의자체가 분위수값 미만의 값 이런식으로 정해진건가요? 2) 하위 25% 데이터를 구하는 함수가 있다면, 상위 25%는 ~ 를 이용해서도 함수를 쓸 수 있을까요? 3) 가장 큰 값이 두개 이상인경우 더 앞선것을 불러오던데, 해결방법이 있을까요? (가장 큰 값이 동일한경우 모든 인덱스를 불러오게끔)
윈도우 함수 연습문제 6번 질문입니다. 카일스쿨님 쿼리와 다른 건 다 동일하게 작성했었는데, OVER() 안에 order by를 모르고 깜빡했었습니다. 그런데도 결과가 정답( moving_avg2 )과 같게 정상 출력이 되었습니다. (QUALIFY로 검증해봤는데 moving_avg 와 전부 같다고 나오더라구요) 원래 ORDER BY를 안 써줘도 프레임 설정이 자동으로 가능한 걸까요? ORDER BY에도 기본값 같은 게 있는지 궁금합니다. -- 윗부분은 생략 SELECT date, number_of_orders, AVG(num2) OVER(ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg, AVG(num2) OVER(ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg2 FROM filled_data -- QUALIFY moving_avg != moving_avg2 ORDER BY date
안녕하세요. 10강에서 TaskMaster에서 복잡도를 사용하기 위해서 Perplexity API 를 입력해서 쓰셨는데, Cluade Code를 사용하면 자체 Provider를 사용하는 거 같은데 다른 이유가 있으신가요? https://github.com/eyaltoledano/claude-task-master/blob/main/docs/examples/claude-code-usage.md
실행 결과는 동일하게 나왔는데, COUNT를 다르게 쓴 것이 괜찮은지 궁금해서 질문 남깁니다! 상황 같은 날짜에 여러 번 쿼리 실행한 사용자들이 있어서 COUNT(*) 을 해야겠다고 판단했습니다. (어차피 Distinct가 없으면 같은 날짜라도 각각 카운트한다는 것을 깜빡했었습니다ㅠ) 카일스쿨님은 COUNT(query_date) 를 쓰셨고, 결과만 보면 제 쿼리와 동일하긴 합니다. 궁금한 점 제 쿼리처럼 COUNT(*)을 쓰는 경우에 문제가 될까요? 혹시 실무적으로 COUNT(*)은 잘 쓰지 않는지 궁금합니다! (Ex. 어떤 컬럼의 개수를 세는 것인지 가독성이 좋지 않다든가..) 제 쿼리는 아래와 같습니다. SELECT *, COUNT(*) OVER(PARTITION BY user) AS total_query_cnt FROM advanced.query_logs ORDER BY query_date, user
다른 강의들이나 교재들 보면 prior 자식 = 부모 는 순방향 이라고 설명해 주시는데 이 강의에서만 역방향이라고 설명해 주시네요. 특히 노랭이 63번도 정답이 4번인 이유가 "connect by 절에만 사용 가능하다" 이 부분이 틀렸기 때문이라고 나오는데.. 보충 설명이 가능하실까요?