공부/데이터
-
[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가 실행될 때, 실행날짜 별 파일을 만들어야 할 때, 유용하게 사용할 ..
-
[Airflow] Sensor공부/데이터 2021. 10. 31. 19:12
sensor는 1가지 작업을 수행하도록 설계된 특수한 operator입니다. 어떠한 작업(시간, 파일, 외부 이벤트 등)이 일어날 때까지 대기하다가 발생한다면 실행한 다음, 성공하여 downstream task가 실행될 수 있도록 합니다. sensor는 주로 idle 상태이기 떄문에 세 가지 다른 실행 모드가 있어 사용에 효율적입니다. poke(기본값): 전체 런타임 동안 worker 슬롯을 차지함 reschedule: 확인 중일 때만 worker 슬롯을 사용 smart sensor: 모든 실행을 일괄처리 하는 중앙 단일 버전 poke와 reschedule 모드는 sensor를 인스턴스화 할 때, 직접 구성할 수 있습니다. 둘 사이의 트레이드 오프는 대기 시간입니다. poke 모드는 매 초 확인할 때나 ..
-
[Airflow] Operator공부/데이터 2021. 10. 31. 19:12
operator는 DAG 내에서 task를 보다 쉽게 구현하도록 제공되는 템플릿입니다. with DAG("my-dag") as dag: ping = SimpleHttpOperator(endpoint="http://example.com/update/") email = EmailOperator(to="admin@example.com", subject="Update complete") ping >> email airflow 내에서 제공하는 operator 뿐만 아니라 provider에서 제공하는 operator도 존재합니다. BashOperator PythonOperator EmailOperator SimpleHttpOperator SqliteOperator MySqlOperator PostgresOperat..
-
[Airflow] Task공부/데이터 2021. 10. 31. 19:11
task는 airflow의 기본 실행 단위입니다. DAG 안에 task들을 나열한 다음, upstream, downstream으로 종속성을 정렬합니다. task는 3가지가 존재합니다. Operator: DAG를 구축하는데 자주 사용하는 작업 템플릿 클래스입니다. Sensor: 외부 이벤트가 발생할 때까지 대기하는 오퍼레이터의 하위 클래스입니다. TaskFlow: @task 데코레이터를 사용하여 사용자가 작성한 함수 코드를 task로 인식하게 만드는 기능입니다. 이 기능들은 전부 BaseOperator 클래스를 상속받아 구현되었으며 task와 operator는 기능이 유사하지만 별도로 구분하는 것이 좋습니다. operator와 sensor는 템플릿이고 task는 DAG 파일이 호출될 때 만들어 지는 개념입..
-
[Airflow] DAGs공부/데이터 2021. 10. 31. 19:08
DAG 선언 방법 context manager with DAG("my_dag_name") as dag: op = DummyOperator(task_id="task") class my_dag = DAG("my_dag_name") op = DummyOperator(task_id="task", dag=my_dag) decorator 2.0 이후 버전 @dag(start_date=days_ago(2)) def generate_dag(): op = DummyOperator(task_id="task") dag = generate_dag() @task 데코레이터와 함께 사용하면 코드가 깔끔해집니다. DAGS는 task없이 실행할 수 없습니다. task 의존성 표현 방법 task는 일반적으로 다른 task들과 의존성을..
-
Z 차트로 매출의 추이 확인하기공부/데이터 2021. 2. 28. 16:36
고객에게 제공하는 서비스, 상품, 콘텐츠 중에는 계절에 따라 매출이 변동하는 경우가 있습니다. Z 차트를 작성할 때는 월차매출, 매출누계, 이동년계 라는 3가지 지표가 필요합니다. z차트(https://kb.tableau.com/articles/howto/Create-Z-Chart-Numbers-Accumulated-Total-Numbers-Movement-Total-Numbers-Within-a-Year-in-a-View?lang=ko-kr) 월차매출 매출 합계를 월별로 집계합니다. 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월 1월 2월 3월 합계 합계 합계 매출누계 해당 월의 매출에 이전월까지의 매출 누계를 합하여 집계합니다 1월 2월 3월 4월 5월 6월 7월 8월 9월 1..
-
[Python] Numpy 배열 형태 변경하기공부/데이터 2020. 2. 19. 21:07
numpy 패키지는 배열의 형태를 손쉽게 변경해 주는 기능을 제공하고 있습니다. 1차원 배열을 2차원으로 바꿀 수 있으며 두 개의 배열을 1차원 또는 다차원 배열로 변형도 할 수 있습니다. 1. 배열의 형태 변경 reshape() 메소드를 사용하여 배열의 크기를 변경할 수 있습니다. import numpy as np np_array = np.arange(1, 10) print(np_array) reshaped = np_array.reshape((3, 3)) print(reshaped) # [1 2 3 4 5 6 7 8 9] # [[1 2 3] # [4 5 6] # [7 8 9]] 배열의 모양을 변경할 때, 베이스가 되는 배열의 크기가 딱 맞아야지만 동작하고 적거나 더 많이 변형하고자 하면 오류가 발생합니..