공부
-
[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들과 의존성을..
-
마케팅 기본 용어 모음공부 2021. 10. 30. 19:49
마케팅에서 사용하는 기본 용어를 매일 찾기 힘들어서 정리한 페이지 Key Performance Indicator (KPI) - 핵심 목표 지표 기업이 달성해야 할 목표를 나타내는 수치 Return On Investment (ROI) - 투자 대비 수익률 투자 대비 수익률 Return On Advertising Spend (ROAS) - 광고비 대비 수익률 광고비 대비 수익률 Contents Marketing - 콘텐츠 마케팅 특정 고객에게 가치있고 일관되면서 연관성 높은 콘텐츠를 만들어 확산시키는 방법. 고객들에게 도움이 될 만한 정보를 제공하거나 공감을 이끌어내는 콘텐츠를 통해 자발적으로 공유하도록 유도 Performance Marketing - 퍼포먼스 마케팅 온라인에서 다양한 경로로 노출한 커뮤니케..
-
[SOLID] 의존 관계 역전 원칙이란 (Dependency Inversion Principle, DIP)공부 2021. 8. 29. 19:48
의존 관계 역전 원칙에선 고수준의 모듈은 저수준 모듈의 구현에 의존해선 안됩니다. 다시 말해 의존 관계를 맺을 때, 변하기가 어려운 것에 의존해야 합니다. 즉, 구체화된 클래스에 직접적인 의존 관계를 맺지 않고 인터페이스나 추상 클래스에 의존관계를 맺는 것입니다. 사용자가 티켓을 예매한다고 가정합니다. 해당 원칙을 적용하지 않고 구현을 한다면 사용자 → 티켓 이라는 관계를 맺어 고수준 모듈인 사용자가 저수준 모듈 티켓을 의존하는 형태가 나옵니다. from dataclasses import dataclass class Ticket: def book(self): print('티켓을 예약한다.') @dataclass class User: ticket: Ticket def buy(self): self.ticke..
-
[SOLID] 인터페이스 분리 원칙이란 (Interface Segregation Principle, ISP)공부 2021. 8. 29. 18:21
인터페이스 분리 원칙은 인터페이스를 사용하는 클라이언트 기준으로 분리해야 되는 원칙입니다. 다시 말해서, 클라이언트(자신)이 사용하지 않는 메소드와는 의존 관계를 가지면 안됩니다. 사용하지 않는 인터페이스의 메소드 때문에 영향을 받아 구현을 하면 안되고 영향을 받는다면 인터페이스를 나눠야 하는 원칙입니다. 아래와 같은 예시 코드가 있다고 가정합니다. from abc import ABCMeta, abstractmethod class Vehicle(metaclass=ABCMeta): @abstractmethod def drive(self): pass @abstractmethod def fly(self): pass @abstractmethod def ride(self): pass class Car(Vehicl..