기본적으로 설치하는 과정은 다음과 같습니다. 복잡해보이지만, 이렇게 했을 때 오류가 발생하지 않고 잘 설치됩니다! 같은 방식으로 EC2에도 똑같이 적용됩니다! 에어플로우 파이썬 모듈 설치 먼저 우분투의 소프트웨어 관리 툴인 apt-get을 업데이트 하고 파이썬 3.0 pip를 설치합니다. 원래는 apt-get update 이후에 python3-pip을 설치하면 되는데 pyopenssl 관련 충돌이 있어서 이를 먼저 해결하고 python3-pip를 설치하시면 됩니다. sudo apt-get update wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py sudo pip3 install pyopenssl --upgrade sudo apt-ge..
트랜잭션 Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법 BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용 ROLLBACK 두 가지 종류의 트랜잭션이 존재 AutoCommit False를 쓰면 트랜잭션을 사용할 필요 없으나, AutoCommit True일 때는 정합성 문제를 일으킬 수 있는 SQL을 묶어줘야한다. 레코드 변경을 바로 반영하는지 여부. autocommit이라는 파라미터로 조절가능 autocommit=True 기본적으로 모든 SQL statement가 바로 커밋됨 이를 바꾸고 싶다면 BEGIN;END; 혹은 BEGIN;COMMIT을 사용 (혹은 ROLLBACK) autocommit=False 기본적으로 모든 SQL statement..
AIRFLOW 에어플로우는 스케줄러, 데이터 파이프라인을 위한 PYTHOON 프레임워크 PYTHON3에서 프로그래밍 방식으로, 파이프라인 설계, 예약 및 모니터링 가능 웹 UI 제공 에어플로우에서의 데이터 파이프라인(ETL)을 "DIRECTED ACYLIC GRAPH(방향 비순환 그래프)", DAG라고 합니다. DAG는 TASK로 구성됩니다. 에어플로우는 하나 이상의 서버로 구성된 클러스터이고, WORKERS와 SCHEDULER로 구성됩니다. 스케줄러는 작업을 여러 WORKERS에게 분산 시킵니다. DAG 와 스케줄링 정보는 기본적으로 DB에 저장됩니다(SQLITE가 기본적으로 운영) 하지만 실제 운영환경에서는 MYSQL 또는 POSTGRESQL을 사용하는 것이 좋습니다(성능, 기능 상의 문제) AIRF..
비구조화된 데이터 처리하기 LOG 대표적으로 데이터레이크에 저장하는 데이터. 원본 상태로 데이터레이크에 넣어둔 상태에서, 이걸 정제하고 가공해서 데이터웨어하우스에 적재한다. AMZONE S3(STROAGE) 클라우드 판 하드디스크라고 생각하면 좋다. 1테라 바이트당 한달에 만원 꼴. 온갖 종료의 데이터를 별다른 비용 걱정 없이 저장할 수 있다. 이 아마존 S3 같은 것을 데이터레이크(DATA LAKE)라고 한다. 데이터레이크 보존기한이 없는 모든 데이터를 원래 형태대로 보존하는 스토리지, 보통은 데이터 웨어하우스에 비해 몇 배 더 크다 APACHE SPARK, AMAZON ATHENA ATHENA는 BIG DATA SQL로 생각하면 좋다 SPARK도 SPARK SQL 혹은 DATAFRAME으로 판다스처럼..
WINDOW FUNCTION 개요 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수가 윈도우 함수 윈도우 함수는 집계함수 뿐만 아니라, 새로운 윈도우 함수 전용 만들어진 기능도 있음 윈도우 함수는 다른 함수와 중첩 X, 서브쿼리에는 사용 가능 윈도우 함수 종류 그룹 내 순위(RANK) 관련 함수: RANK, DENSE_RANK, ROW_NUMBER 그룹 내 집계(AGGREGATE) 관련 함수 : SUM, MAX, MIN, AVG, COUNT (sql server는 OVER 절의 OREDER BY 지원 X) 그룹 내 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD (오라클에서만 지원) 그룹 내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE..
IS TRUE, IS FALSE, IS NOT TRUE, IS NOT FALSE BOOLEAN 값은 절대로 !=, =로 비교하는 것이 아니다. 반드시 IS 구문을 사용한다. SELECT COUNT(SDD) FROM TABLE WHERE a != TRUE NULL이 들어간 모든 사칙연산은 반환 값이 NULL이다. SELECT 1/NULL; NULLIF NULLIF(value, 0) -> value가 0인 경우, NULL 값을 리턴 SELECT value, 100/NULLIF(value, 0) FROM tkddnr961224.test_table; COALESCE COALESCE는 첫번째 값이 NULL 이면 대신 사용할 값을 정할 수 있다. SELECT value, COALESCE(value, 1) FROM ..
CASE WHEN 구문은 SELECT 절에 사용되며, 대표적으로 2가지 쓰임새가 있다. 1) 새로운 열을 생성하는 경우 SELECT CASE WHEN 기존열 = 조건 THEN '값1' WHEN 기존열 = 조건2 THEN '값2' ... (ELSE '값 N') END AS 새로운 열 예제 ts 열에서 7글자만 select groupby된 ts를 count한 row들이 10000이 넘으면 ">= 10,000"이라는 값 생성 SELECT LEFT(ts, 7), CASE WHEN COUNT(1) >= 10000 THEN '>= 10,000' ELSE '< 10,000' END FROM raw_data.session_timestamp GROUP BY 1; 열을 집계하는 경우 집계함수와 함께 사용하며, 집계 열에 ..
스타트업 데이터플로우 리뷰 AIRFLOW AMZON EC2 설치 데이터웨어하우스 REDSHIFT 사용 대시보드 : 구글 LOOKER (에어비앤비가 만든 SUPERSET이라는 오픈소스 대시보드로 많이 사용) POSGRESQL에 있는 데이터, 데이터웨어하우스로 옮기기 APP 내 AMPLITUDE 설치(웹,앱 내 사용자가 어떤 데이터 클릭했고~, 어떤 버튼 클릭했고 등) 여기서 EVENT STREAM, CLICK STREAM 쭉 따서 저장했다. PAYMENTS로는 STRIP이라는 서비스 위 정보들을 ELT 정보들은 30분에 한번씩 SINK SUMMARY TABLE들만 대시보드와 데이터분석에 사용 : LOOKER 사용 요즘은 DBT로 SUMMARY TABLE에 적용해서 진행 데이터 관련 팁 관계형 데이터베이스는..
REDSHIFT는 AWS의 확장 가능한 SQL 엔진(데이터 웨어하우스) 서버 클러스터에서 최대 2 페타바이트의 데이터 제공 OLAP 응답 시간은 1초 미만이 아님 고객 대면 서비스에서 사용하면 안됨 COLUMNAR STORAGE(열 기준 저장소) 테이블에서 열을 추가, 삭제하거나 이름을 변경하는 작업이 매우 빠름 열 당 압축(PER COLUMN COMPRESSION)이 사용됨 BULK-UPDATE 지원 CSV/JSON 파일을 S3에 업로드 -> S3에서 REDSHIFT로 복사 고정 용량 SQL 엔진 모든 데이터웨어하우스는 데이터의 크기, 속도 때문에 모든 PRIMARY키를 보장하지 않는다 POSTGRESQL 8.X와 호환 다음 서비스와 완벽한 통합 S3, EMR, KINESIS, DYNAMODB, RDS..
데이터 엔지니어의 역할 데이터 웨어하우스 관리 데이터 파이프라인 구축 및 관리 데이터 파이프라인 = ETL(EXTRACT, TRANSFORM, LOAD) = DATA JOB = DAG 데이터 파이프라인의 형태 배치 프로세스(BATCH PROCESSING) VS 실시간 프로세스(REALTIME PROCESSING) 요약 데이터 생성(DBT - ANALYTICS ENGINEER) 이벤트 수집(EVENT COLLECTION) 유저 행동 데이터 데이터 엔지니어가 알아야할 기술들은? SQL : HIVE, PRESTIO, SPARK SQL, ... PROGRAMMING LANGUAGE : PYTHON/SCALA/JAVA ETL/ELT SCHEDULER : AIRFLOW LARGE SCALE COMPUTING PLA..
데이터 플로우 데이터 조직의 비전 데이터 팀은 직접 매출을 발생시키는 조직이 아니다. 기본적으로 데이터 팀은 서포트 조직이다. 데이터 팀은 더 좋은 의사결정을 위해서, 높은 퀄리티의 데이터를 시의적절한 방법으로 제공해야한다. 데이터 팀은 프로덕트/서비스를 '고품질 데이터'를 통해 기능을 개선한다. 개인화를 바탕으로 한 추천(Recommendation)과 검색 기능 제공 머신러닝을 통한 운영 비용 줄이기(공정 과정 오동작 기기 예측 등) 결국 데이터팀은 끊임없이, 회사의 매출/이윤과 상관관계를 정량화하고, 데이터팀의 존재이유, 존재가치를 잘 설명해야한다. 데이터 품질 + 모두가 신뢰할 수 있을 만한 지표 설정 간단한 솔루션일 수록, 좋은 솔루션이다. 회사의 운영비용과 관련(딥러닝이 무조건 좋은 게 아니다)..
이상적인 데이터 조직 데이터 엔지니어 영입을 통한, 데이터 인프라 구축 기반 요즘 데이터팀 개발 방식 -> 애자일 솔루션은 간단히 : ex) 딥러닝을 고집할 필요가 없음(머신러닝, 혹은 CASE 별 IF문 또한 좋은 해결책) 어떤 이슈든 간에 업무의 성공여부를 결정해주는 지표를 생각하고 행동 에어플로우(AIRFLOW) ETL을 만들면 이를 주기적으로 실행해야함. 이를 위해 스케줄러가 필요한데, "에어플로우"를 기업들 대다수가 사용 중 ETL EXTRACT(추출) : 데이터를 웹, 혹은 외부 환경에서 추출하는 과정 TRANSFORM(변환) : 데이터를 특정 형식에 맞게 가공하고 변환하는 과정 LOAD(적재) : 데이터를 특정 저장소(데이터베이스, 데이터레이크, 데이터웨어하우스)에 삽입하는 과정 가장 많이 ..