Python
-
airflow의 새로운 경쟁자 오케스트레이션 플랫폼 dagsterProgramming/python 2021. 12. 23. 23:42
Open Source Data Stack Conference 아래 내용은 위 동영상의 내용을 번안하고 정리한 내용입니다. 위 사진의 기술들은 다양한 방식들로 서로 의존성이 존재한다. 예를들어 스노우플로우나 다른 데이터 웨어하우스에서 데이터가 만들어지기 전까지 dbt를 실행할 수 없다. 그리고 dbt가 그것의 모델을 업데이트하기 전까지 Grouparoo같은 리버스 ETL은 새로운 정보를 적재할 수 없다. 이런 의존성들간에 Ordering과 Excute를 조율하는 것이 오케스트레이션의 목적이다. 왜 dagster여야 하는가? 전통적인 오케스트레이션은 스케줄링과 실행을 통합하는 시스템과 가시적이고 알림을 운영할 수 있어야 한다. 여기에 더해져서 덱스터는 유용한 metadata를 생성하는 과정에서 데이터가 어디..
-
[에러로그]parquet파일 변환 fastparquet v.s pyarrowProgramming/python 2021. 11. 19. 16:06
에러 내용 parquet로 변환한 파일을 read해서 확인했을 때 일부 컬럼의 로우 값이 제대로 인코딩되지 않은 문제가 있다. 다른 컬럼의 값들은 정상적으로 표출되었지만 특정 컬럼에서만 이상이 생기는 것을 확인했다. to_parquet 메소드 pandas 라이브러리에서 to_parquet 메소드를 사용해서 데이터프레임을 parquet 포맷으로 변경할 때, 사용할 수 있는 엔진의 옵션은 두 가지가 있다. pyarrow와 fastparquet이 바로 그것인데, pandas 내부적으로 이 두 라이브러리들을 가져와서 parquet파일로 변환하게 된다. 라이브러리를 선택하는 방법은 engine 파라미터에 해당하는 라이브러리명을 적어주면 된다. df.to_parquet("test.parquet", engine="p..
-
파이썬 데코레이터에서 wraps를 사용해야 하는 이유Programming/python 2021. 6. 27. 22:48
파이썬에는 함수를 파라미터로 받아서 함수를 반환하기 위해서 데코레이터를 사용한다. 말하자면 함수의 함수인 셈인데, 파라미터 변환이나 코드 추적(로깅), 유효성 검사 및 재시도 로직 등 이 데코레이터를 사용하면 다양한 작업들을 손쉽게 처리해줄 수가 있다. 이 데코레이터를 사용할 때에는 주의해야할 점이 몇가지 있는데 오늘은 그 주의할 점에 대해서 이야기 하려고 한다. import logging as logger def trace_decorator(function): def wrapped(*args, **kwargs): """ decorator docstring """ logger.info("%s 실행", function.__qualname__) return function(*args, **kwargs) re..
-
[python]str을 dict로 바꾸는 두 가지 방법Programming/python 2021. 1. 24. 18:23
dict는 string으로 변경할 수 있는 데, string은 dict로 변경할 수 없다 dict1 = {"a":"b", "c":"d"} str1 = str(dict1) print(str1) # 실행 결과 {"a":"b", "c":"d"} 딕셔너리 타입을 str로 형 변환을 하면 원하는 것처럼 알맞게 잘 출력한다. 하지만 이 str을 다시 딕셔너리 타입을 변경하려고 하면 에러가 발생한다. dict1 = '{"a":1, "b":2}' print(dict(dict1)) # 실행 결과 dictionary update sequence element #0 has length 1; 2 is required str을 dict로 바꾸는 방법 1. string으로 형 변환된 것을 eval을 사용해서 코드화 한다. str..
-
파이썬 제너레이터(Generator)Programming/python 2020. 6. 6. 22:26
제너레이터를 설명하기 앞서 이터레이터에 대한 이해가 살짝 필요하다. 제너레이터랑 이 이터레이터에 yield 구문을 추가해 호출될 때마다 이터레이터와는 다르게 모든 값을 포함한 배열을 리턴해주는게 아니라 하나의 값만을 리턴하기 때문이다. 이터레이터란? 이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체(object)이다 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식을 사용함 데이터 생성을 뒤로 미루는 것인데 이런 방식을 지연 평가(lazy evaluation)라고 함 이터레이터는 반복자라고 부르기도 함 반복 가능한 객체(iterable)와 이터레이터(iterator)는 별개의 객체이므로 둘은 구분해야 한다. 이터레이터와 제너레이터의 차이점 이터레이터는 __n..
-
(python)'is None'과 '==None'의 차이점Programming/python 2020. 2. 27. 16:25
특정한 값이 있는지를 검사할 때 자주 사용하게 되는 문법인 is None과 ==None. 값이 넘어오고나 전처리 과정에서 이 값이 존재하는지를 확인하고 싶을 때 주로 사용하게 된다. http://jaredgrubb.blogspot.com/2009/04/python-is-none-vs-none.html 간단하게 요약해서 설명하자면 True로 받을지 그 자체를 받을지의 문제다. class Noo: def __eq__(self,other): return True Noo=Noo() print(Noo==None) # True print(Noo is None) # False Noo는 None 오브젝트를 상속받는다. 비교 연산자는 Noo를 None으로 받아서 True로 처리하지만 is None 은 오브젝트 그 자체로..
-
(python)날짜로 파일 제목 만들기Programming/python 2019. 12. 9. 10:00
import datetime nowDate = datetime.datetime.now() f = open(nowDate.strftime("%Y-%m-%d_%H%M") + ".txt", "w") f.write(nowDate.strftime("%Y-%m-%d %H:%M") + "\n") line = "텍스트 파일에 들어갈 내용" f.write(line) # 종료 f.close datetime으로 현재 시간을 받아온다. datetime은 기본적으로 2019-12-09 12:11:32.669083 이런 형태를 띄고 있다. 표기법을 바꾸고 싶다면 strftime을 이용해서 %Y-%m-%d %H%M%S 년도, 월, 날, 시,분,초를 표현할 수 있다. 예를들어 위의 코드에 %Y-%m-%d_%H%M은 2019-12-0..