공부/데이터
-
[Airflow] BigQueryExecuteQueryOperator 파티션 테이블 생성공부/데이터 2022. 5. 4. 21:04
아래와 같이 데이터가 있다고 가정합니다. select * from ( select date('2022-05-04') as dt, 1 as num union all select date('2022-05-04') as dt, 2 as num ) as t 위 쿼리 결과를 기준으로 dt를 day기준으로 파티션을 잡는다면 아래와 같이 진행할 수 있습니다. BigQueryExecuteQueryOperator( task_id="task_id", sql="test.sql", use_legacy_sql=False, time_partitioning={'type': 'DAY', 'field': 'dt'}, destination_dataset_table='프로젝트.데이터셋.테이블', write_disposition=Write..
-
퍼널 분석(Funnel Analysis)이란?공부/데이터 2022. 4. 24. 23:46
퍼널 분석(Funnel Analysis)이란? 퍼널 분석이란 퍼널은 깔때기라는 의미를 가지고 있습니다. 사용자들이 다양한 경로로 사이트에 들어오고 나가는 시점까지 특정 구간에 대한 데이터를 분석하여 나가는 시점과 이유를 밝힐 때 사용하는 분석 기법입니다. 깔때기 입구에서 아래로 내려갈수록 사용자가 진입하여 사이트를 보는 시간이 늘어난다고 볼 수 있는데 시간이 늘수록 이탈하는 사용자들은 많아집니다. 여기서 사용자들이 나가는 시점은 동일하지 않고 일정 부분에 몰려있을 수도 있는데 이러한 부분이 어디인지 집중적으로 관찰한다면 왜 사용자들이 거기서 나가는지에 대한 단서를 찾을 수 있습니다. 위에서 언급한 것과 같이 사용자들이 나가는 행위, 이탈하는 비율을 이탈률이라 하고 이 이탈률이 높은 시점을 찾고 분석하는 ..
-
[Airflow] TriggerDagRunOperator execution_delta, execution_date_fn 사용하기공부/데이터 2022. 2. 20. 01:14
TriggerDagRunOperator는 여기에서 설명이 되어 있습니다. TriggerDagRunOperator를 사용하기 위해선 참조할 dag의 schedule interval과 동일해야 합니다. 만약 참조할 dag와 다른 schedule interval을 사용할 경우 execution_delta 와 execution_date_fn 둘 중 1개를 사용해야 합니다. execution_delta 옵션은 datetime 모듈의 timedelta 클래스를 사용하는 옵션이고 execution_date_fn 은 함수를 입력하여 함수식을 작성하는 옵션입니다. 예시 참조할 dag의 속성이 아래와 같이 설정되어 있다고 가정합니다. DAG( schedule_interval="0 * * * *", dag_id="paren..
-
코호트 분석 (Cohort Analysis)이란?공부/데이터 2022. 1. 29. 18:04
데이터 분석에서 자주 사용되는 분석 기법 중에 코호트(동질 집단) 분석이 있습니다. 코호트란? 특정 기간 동안 공통된 특성이나 경험을 갖는 사용자 집단을 의미합니다. 코호트 분석? 위의 코호트 개념을 분석하는 것으로 특정 기간 동안 사용자 행동을 그룹으로 나눠 지표 별로 수치화한 뒤 분석하는 기법입니다. 예를 들어, 서울에 사는 30대 초반 남성이 네이버 검색을 통해 29CM 방문을 해서 A 상품을 구매했다고 가정하면 아래와 같은 코호트 그룹에 속할 수 있습니다. 인천 (지역) 코호트 25 ~ 34세 (연령) 코호트 남성 (성별) 코호트 네이버 트래픽 코호트 자연검색 트래픽 코호트 29CM 방문 페이지 코호트 A제품 (구매) 코호트 코호트 분석에서는 주로 시간의 흐름에 따른 사용자 유지와 이탈 패턴이나 ..
-
[Airflow] DAG에서 다른 DAG 호출하기 (DAG 종속성)공부/데이터 2021. 11. 20. 20:43
dag를 설계할 때 dag끼리 종속성을 갖지 않는 것이 가장 좋지만 어쩔 수 없이 종속성을 만들어야 하는 경우가 있습니다. 아래와 같은 상황일 때, dag의 종속성을 갖는 것이 유용하게 사용됩니다. 두 dag는 종속되지만 일정이 다름 두 dag는 종속되지만 서로 다른 팀에서 소유 task는 다른 task에 종속되지만 execution_date가 다름 여기서는 dag에서 다른 dag를 호출하는 방법을 설명합니다. SubDAG를 사용하여 DAG 종속성을 처리할 수도 있지만 SubDAG가 성능 문제를 일으킬 수도 있으므로 dag 종속성으로 처리하는 것을 권장합니다. TriggerDagRunOperator TriggerDagRunOperator는 dag의 종속성을 구현하는 쉬운 방법입니다. 해당 operator..
-
[Airflow] custom operator, hook, sensor, util 등록하기공부/데이터 2021. 11. 14. 20:02
plugins 분리하기 실제 동작하는 dag와 custom으로 생성한 operator, hook, alert 등의 작업물을 분리하여 관리하는 방법입니다. https://airflow.apache.org/docs/apache-airflow/stable/modules_management.html 문서에 나와있는 것처럼 plugins 폴더 하위에 작성하면 airflow가 자동으로 경로를 인식합니다. /plugins/operators/custom_operator.py 폴더와 파일을 만들고 아래 코드를 추가합니다. from airflow.operators.bash import BashOperator class EvenNumberCheckOperator(BashOperator): def __init__(self, ..
-
[Airflow] Taskflow API공부/데이터 2021. 11. 13. 19:45
버전 2.X대에서 도입된 Taskflow API를 사용하여 데이터 파이프라인 튜토리얼을 설명하면서 기존 1.X대 버전과 비교를 해봅니다. Taskflow API taskflow는 간단하게 데코레이터를 사용해 DAG와 Task를 구성하는 방식입니다. 전체 코드 import json from airflow.decorators import dag, task from airflow.utils.dates import days_ago default_args = { 'owner': 'airflow', } @dag(default_args=default_args, description='Taskflow API ETL DAG tutorial', schedule_interval=None, start_date=days_ago..
-
[Airflow] Test공부/데이터 2021. 11. 13. 18:03
스크립트 실행 만든 스크립트에 문법적 오류가 없는지 확인을 하기 위해 스크립트를 실행해 봅니다. 만약 예외가 발생하지 않았다면 어느 정도 문법적인 오류가 없다라고 볼 수 있지만 스크립트 특성 상, 호출되지 않은 함수 내의 문법적 오류는 존재할 수 있습니다. 명령어를 통한 메타데이터 유효성 검사 아래 명령어를 통해 DAG 및 task가 의도한대로 등록되었는지, 구조가 잘 잡혔는지 확인할 수 있습니다. # 등록된 dag 목록 출력 $ airflow dags list dag_id | filepath | owner | paused ======================+==========================+===========+======= dag_decorator_test | temp.py | a..
-
Embulk 사용하기공부/데이터 2021. 11. 13. 01:25
Embulk는 플러그인을 사용해 여러 형태의 데이터 소스에서 데이터를 가져와 병렬로 로딩 할 수 있습니다. 여러개의 파일을 동시에 로딩하거나 하나의 큰 파일을 여러 파일로 쪼개서 로딩할 수 있어서 속도적인 측면에 장점이 있습니다. 인풋 파일의 데이터 타입을 자동으로 추측하여 스키마를 예측하므로 스키마 작업을 줄일 수 있습니다. Embulk는 자바 위에서 실행이 되므로 자바가 설치가 되어 있어야 합니다. 현재 버전인 v0.9와 v0.10은 자바8을 지원하고 자바9는 공식적으로는 지원하지 않으므로 유의해야 합니다. 설치 아래 명령어를 차례대로 입력하면 됩니다. $ curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-lates..
-
[Airflow] Templates공부/데이터 2021. 11. 8. 00:37
Airflow에서는 변수, macro, filter를 템플릿에서 사용할 수 있습니다. 이러한 템플릿은 런타임에 task 인스턴스에 동적으로 정보를 전달하는 Airflow의 강력한 개념입니다. 아래는 작업을 실행할 때마다 요일을 인쇄하는 예시입니다. BashOperator( task_id="print_day_of_week", bash_command="echo Today is {{ execution_date.format('dddd') }}", ) 여기서 {{ execution_date.format('dddd') }} 가 템플릿 코드이고 위 코드를 수요일에 실행하면 "Today is Wednesday" 가 출력됩니다. 이러한 템플릿은 dag가 실행될 때, 실행날짜 별 파일을 만들어야 할 때, 유용하게 사용할 ..