
[Airflow] 자주 쓰는 Branch Task
2022. 7. 21. 13:05
Data/Data Engineering
I. 개요 일련의 작업 진행 시 상황에 따라 다른 작업으로 이어져야 하는 경우는 굉장히 빈번하게 발생한다. Airflow 는 기본적으로 DAG 으로 작업을 구조화해서 작업을 진행하기 때문에, 자동화할 때 이러한 조건부 작업을 구현하지 못한다면 매번 실패 후 재처리하는 작업이 필요하다. 기본적이지만 자주 사용되는 Branch task 인 BranchPythonOperator 와 BranchSQLOperator 의 사용법과 예제를 기록해둔다. II. Branch Task 1. BranchPythonOperator PythonOperator 기반으로 구성되어 task_id(s) 를 output 으로 하는 Python callable 을 통해 바로 다음에 이어지는 작업 요소를 결정한다. BranchPythonO..

우리는 PK 에 왜 int 형 데이터를 고집할까
2022. 4. 21. 19:43
Data/Data Engineering
우리는 PK 에 왜 int 형 데이터를 고집할까 최근에는 분석용 DB는 Bigquery 나 Snowflake, Redshift 등을 많이 쓰는 것으로 보이나 운영용 DB(원천 DB)는 여전히 Aurora, RDS 또는 자체 서버를 구축하여 사용하는 경우가 많다고 생각한다. 데이터 인프라나 DB 관련 얘기를 나누다 보면 “Server 에서 생성하는 unique ID(nchar) 값을 PK로 잡아 저장하는 게 데이터 분석가 입장에선 훨씬 편할 텐데 굳이 운영 DB에 int type id(idx) 컬럼을 만들어 PK를 따로 잡아야 할까요?”라는 질문을 받곤 한다. 이러한 주제가 나올 때마다 int 형을 추천했지만 정작 완벽하게 이유를 설명하지는 못했던 것 같다. 차후에 이러한 대화가 다시 생길 땐 적어도 더 ..

2021년 회고
2022. 1. 9. 20:46
개인사
2021년 회고록 런던은 지금 쏘카에서 2년째 2020년은 마이크로 한 비즈니스 분석과 제품 개선의 역할을 중점으로 활약했다. 정규직 채용도 처음, 데이터 사이언티스트 업무도 처음이었기 때문에 무엇이든 배우는 게 중요하다고 생각했고 때문에 팀 동료들과 다른 직군 사람들의 일하는 방식과 센스를 배우기 위해 페어로 일하는 경우가 많았다. 그리고 그러한 노력이 빛을 발한 것인지 2021년에는 나의 Own 서비스나 Project 를 갖고 주도적으로 더 많은 결정권을 갖고 업무를 수행할 기회가 많았다. 신사업의 탄생과 임종을 지켜보며 작년까지 VCNC(타다)는 쏘카의 자회사로 쏘카 데이터 그룹 중 내가 속한 팀은 VCNC 의 데이터팀 역할을 병행하고 있었다. 2020년 후반기에 타다에서 경쟁력 재고를 위한 대리 ..

Opt in Rate 을 늘리기 위한 노력
2021. 12. 1. 12:53
Data/Data Analysis
I. Opt in rate 이란? Opt in view는 사진과 같이 어떠한 서비스를 제공하기 전에 "구독/가입"을 유도하고, 사용자의 정보를 요청하는 모든 view를 말한다. Opt in Rate 은 이러한 목적의 view 노출 유저 중 실제 동의한 유저의 비율을 나타낸다. Opt in view 는 주로 Web based 인 경우가 많은데, App based로 오는 경우 마케팅 수신 동의 , 광고성 정보 수신 동의가 이에 해당한다. 종합하여 정리하면 "서비스 가입이나 가입 유도(적극적) 또는 서비스에 관한 정보를 제공할 수 있는 동의(소극적)를 얻고자 하는 목적의 모든 화면"과 "해당 화면에서 동의한 유저의 비율"을 말한다. II. Opt in rate의 중요성 Opt in view 는 데이터 분석가에..
다양한 SQL 스타일을 활용하여 계층형(hierarchy) 쿼리를 표현하는 방법
2021. 10. 31. 21:48
Programming/SQL
Difference between bigquery sql and other sql to write hierarchy sql I. 계층형 데이터(Hierarchical data) WITH employee AS ( SELECT 40 AS id , 'london' AS name, 50 AS boss_id UNION ALL SELECT 50 AS id , 'lee' AS name, 10 AS boss_id UNION ALL SELECT 10 AS id , 'harry' AS name, 20 AS boss_id UNION ALL SELECT 20 AS id , 'leo' AS name, NULL AS boss_id UNION ALL SELECT 70 AS id , 'lucas' AS name, 10 AS boss..