JOIN이란? SQL 조인은 두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 머지하는데 사용된다. 이는 스타 스키마로 구성된 테이블들로 분산되어 있는 정보를 통합하는데 사용된다. 왼쪽 테이블을 LEFT라고 하고 오른쪽 테이블을 RIGHT라고 하자. JOIN의 결과는 방식에 상관없이 양쪽의 필드를 모두 가진 새로운 테이블을 만들어내게 된다. 조인의 방식에 따라 다음 두가지가 달라진다. 어떤 레코드들이 선택되는지? 어떤 필드들이 채워지는지? → 거의 LEFT JOIN과 INNER JOIN이 사용 된다. JOIN 문법 SELECT A.*, B.* FROM raw_data.table1 A ____ JOIN raw_data.table2 B on A.key1 = B.key1 and A.key2 = B.key2..
가장 많이 사용된 채널은 무엇인가? 가장 많이 사용되었다는 정의는? 사용자 기반 아니면 세션 기반? 필요한 정보 - 채널 정보, 사용자 정보 혹은 세션 정보 먼저 어느 테이블을 사용해야 하는지 생각! user_session_channel? session_timestamp? 혹은 이 2개의 테이블을 조인해야 하나? SELECT channel, COUNT(1) AS session_count, COUNT(DISTINCT userid) AS user_count FROM raw_data.user_session_channel GROUP BY 1-- GROUP BY channel ORDER BY 2 DESC;-- ORDER BY session_count DESC 가장 많은 세션을 만들어낸 사용자 ID는 무엇인가? S..
SQL의 기본 먼저 다수의 SQL 문을 실행한다면 세미콜론으로 분리 필요 SQL1문; SQL2문; SQL3문; SQL 주석 --: 인라인 한줄짜리 주석, 자바에서 //에 해당 /* -- */: 여러 줄에 걸쳐 사용 가능한 주석 SQL 키워드는 대문자를 사용한다던지 하는 나름대로의 포맷팅이 필요 팀 프로젝트라면 팀에서 사용하는 공통 포맷이 필요 테이블/필드 이름의 명명규칙을 정하는 것이 중요 단수형 vs 복수형 _ vs CamelCasing DDL: 테이블 구조 정의 언어 1. CREATE TABLE Primary key 속성을 지정할 수 있으나 무시됨 Primary key uniqueness BigData 데이터 웨어하우스에서는 지켜지지 않음 (Redshift, Snowflake, BigQuery) CT..
데이터 관련 직군 데이터 엔지니어 파이썬, 자바/스칼라 SQL, database ETL/ELT (Airflow, DBT) Spark, Hadoop 데이터 분석가 SQL, 비즈니스 도메인에 대한 지식 통계 (AB 테스트 분석) 데이터 과학자 머신러닝 SQL, 파이썬 통계 데이터 관련 직군에서 SQL 사용되는 방향 큰 데이터를 프로세싱해서 작은 데이터로 변환 주어진 문제를 답하기 위해서 데이터 분석을 하기 위한 관점 다양한 종류의 데이터 분석을 하기 위한 목적 → SQL은 필수다 ! 데이터가 아무리 커져도 데이터가 구조화만 되어 있다면 SQL은 검증된 기술이기 때문에 가장 쓰이기 좋다. 빅데이터 세상에서도 구조화된 데이터에 대해 SQL만큼 사용하기 쉬운 언어가 없다. 즉, 데이터 일을 하는 사람이면 SQL은..
프로젝트 시작한 지 3일차, 중간점검으로 회의를 진행했다. 내가 앞서 진행했던 사이트는 한달에 7~8개 밖에 올라오지 않아 구글 뉴스 사이트를 크롤링하기로 했다. 사이트가 바껴서 로직은 조금 수정됐지만 html이 꼬여있지 않아서 수월했다. 셀레니움 사용할 때는 세팅 환경이 거의 고정이다. from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By #크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import..
오늘은 어제 해결하지 못 했던 부분을 해결하고 코드를 리팩토링했다. 먼저, Features지만 뉴스 기사가 아닌 카테고리에 해당하는 Features가 있어 이를 크롤링에서 제외하는 코드를 추가했다. features = driver.find_elements(By.PARTIAL_LINK_TEXT, "Features") for feature in features: # 기사가 아닌 카테고리 features는 제외 if feature.text == 'Features': print(feature.text) continue Features에 해당하는 elements를 전부 읽으면서 text가 Features인지 확인한다. 뉴스 기사일 경우, Features.text에 제목이 포함되어 있고 카테고리면 Features로..