본문 바로가기
반응형

전체 글147

[Airflow] task에서 return한 값 사용하기 (XCom) 이전 글에서 task 1개로 이루어진 DAG를 실행해봤다. 이 task는 extract라는 파이썬 함수를 호출한다. 여기에다가 task 1개를 추가해보자. 이 task는 transform이라는 파이썬 함수를 호출한다. transform은 extract함수가 return한 값을 처리하는 함수이다. 이런 경우, Airflow DAG를 어떻게 짜야할까? Airflow XCom를 사용하면 된다. Task간 데이터를 주고 받을때 사용됨 Airflow 웹UI에서 task instance 로그에서도 XCom으로 어떤 데이터를 주고받는지 확인 가능 python task의 경우, python_callable로 호출한 함수에서 return하는 값이 있을 경우 자동으로 xcom_push() 가 실행됨. 즉 return 값이.. 2021. 2. 19.
[Airflow] python 함수 호출시 argument 넘기기 간단한 Airflow DAG를 살펴보자. extract라는 파이썬 함수를 호출하는 task 1개로 이루어져 있다. extract 함수를 호출할 때 argument를 같이 전달해야 한다. 그러면 Airflow DAG에서 python 함수를 호출할 때 어떻게 argument를 전달할까? 1) context 사용하는 방법 DAG를 먼저 작성하자. (/var/lib/airflow/dags/params_test.py) ############## #DAG Setting ############## from airflow import DAG from airflow.operators import PythonOperator from datetime import datetime dag = DAG( dag_id = "sunn.. 2021. 2. 19.
[python] for문에서 index 값 수정하기 for i in range(1,n+1): if arr[x[i]][y[i]] == 0 : arr[x[i]][y[i]] = i #해당 자리에 아무도 없는 경우 else: if age[arr[x[i]][y[i]]] < age[i] : age[arr[x[i]][y[i]]] = age[i] #나중에 들어온 사람 나이가 더 많은 경우 remove(i) i -= 1 #i번째 사람 다시 한 번 확인 i가 3일때 else문에 들어왔다고 해보자. 그러면 i -= 1을 통해 i값이 1 감소되어 2가 된다. 그러면 그 다음 반복문에서 i값이 1 증가하니 3이 될 줄 알았다. 그러나 python에서는 원래 반복문대로 i가 4가 된다. 즉 i -= 1 의 효과가 없는 것이다. c++에서는 우리가 생각하는대로 i가 3이 된다. i.. 2021. 2. 17.
Airflow 스케쥴시간 설정 (execution_date, start_date) Airflow 스케쥴링 컨셉 일배치면 하루 전 기준으로 돌고, 시간배치면 시간 전 기준으로 도는 컨셉이다. 하루에 한 번 도는 스케쥴 (0 15 * * * *) 일 때 2021-03-08 15:00 에 2021-03-07 15:00 기준으로 실행된다. 2021-03-09 15:00 에 2021-03-08 15:00 기준으로 실행된다. ... 매 1시간마다 도는 스케쥴 (* */1 * * * *) 일 때 2021-03-08 15:00에 2021-03-08 14:00 기준으로 실행된다. 2021-03-08 16:00에 2021-03-08 15:00 기준으로 실행된다. ... 그럼 DAG를 보면서 Airflow 스케쥴 시간을 좀 더 자세히 알아보자. 예제 DAG from airflow import DAG fr.. 2021. 1. 31.
Airflow 설치 및 DAG 실행하기 테스트환경 ec2 서버 (ubuntu) airflow 싱글노드로 구성 Airflow 설치하기 1) ec2 서버 접속 pem 파일 다운로드 Windows Power shell 실행 pem 파일 있는 디렉토리로 이동 cd C:\Users\GRAM14\Desktop\study\programmers_de ssh 접속 ssh -i ubuntu@ 2) python 업데이트 및 설치 sudo apt-get update sudo apt-get install -y python3-pip 3) airflow 및 python 모듈 설치 sudo pip3 install apache-airflow==1.10.13 sudo pip3 install cryptography psycopg2-binary boto3 botocore 4) .. 2021. 1. 30.
[SQL] LEFT/RIGHT JOIN 이해하기 ANIMAL_OUTS 테이블엔 데이터가 있지만, AMNIMAL_INS 테이블엔 데이터가 없는 경우가 있다. 이 경우를 LEFT/RIGHT 조인을 사용하여 조회해본다. LEFT JOIN A left join B on (a.id = b.id) A(왼쪽) 테이블을 기준으로 B(오른쪽) 테이블을 조인 거는 경우다. A테이블 값은 전부 출력이 된다. A테이블 값과 매칭되지 않는 B테이블 값은 빈값으로 출력될 것이다. SELECT * FROM ANIMAL_OUTS outs LEFT JOIN ANIMAL_INS ins ON ins.ANIMAL_ID = outs.ANIMAL_ID ; (A) : 파랑색으로 표시한 부분은 ANIMAL_OUTS 테이블이다. (B) : 빨간색으로 표시한 부분은 ANIMAL_INS 테이블이다... 2021. 1. 21.
[펌] MySQL 쓰면서 하지 말하야 할 것 17가지 MySQL 쓰면서 하지 말아야 할 것 17가지 *MySQL 쓰면서 하지 말아야 할 것 17가지* 권장사항이다. 이것을 이해하면 당신의 어플리케이션이 더 나은 성능을 발휘할 것이다. 다만 이것이 사람의 실력을 판단하는 척도로 사용되서는 안 될 것 blog.lael.be 2021. 1. 20.
[SQL] SELECT의 alias는 GROUP BY, HAVING, ORDER BY에서만 사용가능 쿼리실행순서 FROM -> WHERE -> GROUP BY -> (HAVING) -> SELECT -> ORDER BY GROUP BY가 SELECT 보다 먼저 실행 되지만, SELECT의 alias를 사용할 수 있다. (DBMS가 알아서 해줌. mysql 기준) GROUP BY, HAVING, ORDER BY에서 SELECT의 alias를 사용할 수 있다. WHERE절에서는 SELECT의 alias를 사용할 수 없다.실제 컬럼명만 사용가능하다. 간접적인 방법은 있다. (서브쿼리 등) stackoverflow.com/questions/942571/using-column-alias-in-where-clause-of-mysql-query-produces-an-error SELECT HOUR(DATETIME).. 2021. 1. 20.
[SQL] ORDER BY 컬럼 여러 개 ORDER BY로 여러 개 컬럼을 정렬하는 법을 정리한다. 이 때 컬럼 순서를 주의한다. 맨 처음 컬럼부터 정렬된다. 샘플 테이블 ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE A349996 Cat 2018-01-22 14:32:00 Normal Sugar Neutered Male A350276 Cat 2017-08-13 13:50:00 Normal Jewel Spayed Female A396810 Dog 2016-08-22 16:13:00 Injured Raven Spayed Female A410668 Cat 2015-11-19 13:41:00 Normal Raven Spayed Female 쿼리 SELECT ANIMAL_ID.. 2021. 1. 20.
반응형