데이터 팀의 역할데이터 조직의 비전데이터 조직의 비전(목표)은 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성하는 것이다. 다시 말해, 직접적으로 매출을 내는 것이 아니라 매출을 더 높이는 부가 가치를 만들어낸다. 중요한 것은 매출을 내는 것이기 때문에 데이터 조직에서 크게 인정을 받기는 힘들 수 있다.데이터 조직이 하는 일데이터 조직이 하는 일 (1)고품질 데이터를 기반으로 의사 결정권자에게 입력을 제공하며, 이를 결정 과학(Decision Science)이라고 부르기도 한다. 예를 들어 데이터 기반 지표 정리, 대시보드와 리포트 생성 등을 수행하여 지금 맞는 방향으로 가고 있는지, 어떻게 움직여야 하는지 등을 제공한다.데이터를 고려한 결정(Data Informed Decisions) vs 데이터 ..
트랜잭션과 기타 고급 SQL 문법트랜잭션이란?트랜잭션이란 Atomic하게 실행되어야 하는 SQL을 묶어서 하나의 작업처럼 처리하는 방법이다. 이는 DDL이나 DML 중 레코드를 수정/추가/삭제한 것에만 의미가 있다. BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용한다. 만약 조회만 진행할 경우 트랜잭션으로 묶일 이유가 없다.예시 (은행 계좌 이체)계좌 이체는 인출과 입금의 두 과정으로 이루어진다. 인출은 성공했는데, 입금이 실패하는 경우가 생기는 상황이 생기면 안 되며, 두 과정은 동시에 성공하거나 실패해야 한다. 이를 Atomic하다고 하며, 이런 과정들은 트랜잭션으로 묶어주어야 한다.아래의 코드에서는 마치 하나의 명령어처럼 처리된다. 즉 모두 성공하거나 실패하는 두 경우..
JOIN 소개JOIN이란?두 개 이상의 테이블을 공통 필드를 가지고 merge하는 데 사용된다. 이는 스타 스키마로 구성된 테이블로 분산돼 있던 정보를 통합하는 데 사용된다. 6개의 JOIN 방법이 존재하지만, 대부분은 LEFT JOIN과 INNER JOIN으로 충분하다.JOIN 문법JOIN 방식에 따라 ____에는 INNER, FULL, LEFT, RIGHT, CROSS가 들어갈 수 있다.SELECT A.*, B.*FROM raw_data.table1 A____ JOIN raw_data.table2 B ON A.key1 = B.key1 and A.key2 = B.key2WHERE A.ts >= '2019-01-01';JOIN 시 고려할 점중복 레코드가 없고, Primary Key Uniqueness가 ..
GROUP BYGROUP BY 절 & Aggregate함수GROUP BY를 활용하여 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산할 수 있다. 계산 과정은 두 단계로 이루어지며, 다음과 같다.그룹핑할 필드를 GROUP BY로 결정(하나 이상의 필드가 될 수 있음)그룹별로 계산을 위한 Aggregate 함수 사용(COUNT, SUM, AVG, MIN, MAX, LISTAGG, ...)예제 (1)아래의 SQL 구문은 월별 세션 수를 카운트한다. timestamp의 형식은 "yyyy-mm-dd ~"이므로 LEFT(ts, 7)은 "yyyy-mm"이 되며, mon으로 그룹핑하여 월별 세션 수의 개수를 계산한다.SELECT LEFT(ts, 7) AS mon, COUNT(1) AS session_cou..