2024/07 23

[Snowflake] Stage

개요Snowflake는 여러 클라우드에 저장되어 있는 데이터를 Snowflake 시스템에 로드하여 데이터 작업을 수행할 수 있게 한다. 이번 글에서는 클라우드에 저장된 데이터에 접근할 수 있게 하는 Stage에 대해 적어둔다.  Stage파일 데이터를 테이블에 로드할 수 있도록 데이터 파일이 저장되는 위치를 지정하는 Snowflake 객체로, 내부 스테이지와 외부 스테이지로 구분된다.내부 스테이지 : Snowflake 내에서 데이터 파일을 내부적으로 저장한다.외부 스테이지 : AWS S3, GCP 버킷, Azure 컨테이너와 같이 Snowflake 외부에 저장된 데이터 파일을 참조한다Stage는 데이터가 저장되어 있는 공간이 아니라, Sowflake가 데이터에 저장되어 있는 공간에 접근할 수 있는 인터페..

Snowflake 2024.07.31

[Snowflake] FILE FORMAT

개요2024.07.04-[Snowflake] CSV 파일 로드에서 CSV 파일을 읽어 들이면서 어떤 방식으로 읽어 들일지 결정했었다. 이렇게 파일을 읽어 들일 형식을 Snowflake에서는 FILE FORMAT이라고 하는데, 이번 글에서는 FILE FORMAT과 관련된 부분은 정리해 본다.  FILE FORMATFILE FORMAT은 파일에서 테이블로 데이터를 로드할 때 파일의 형식을 설명하고 파일의 데이터를 해석하고 처리하는 방법을 지정하는 객체이다.Snowflake에서는 CSV, JSON, AVRO, ORC, PARQUET, XML 형식의 데이터에 대한 FILE FORMAT을 지정할 수 있다. 파일 확장자에 따라 지정할 수 있는 속성이 달라 속성과 관련해서는 공식 문서를 참조하는 것이 좋겠다.관련 문..

Snowflake 2024.07.30

[Snowflake] CSV 파일 로드

개요CSV 파일의 데이터를 Snowflake 상에서 다루려고 한다. 이번 글에서는 CSV 파일을 Snowflake 데이터베이스 테이블에 저장하는 방법을 적어둔다.  CSV 파일 로드예시로 아래와 같은 형식의 파일을 로드해 보자.Plant Name,Rooting DepthArtichoke,DArugula,SAsparagus,D"Beans, bush",M"Beans, lima (bush)",D"Beans, pole",MBeets,MBroccoli,SBrussel sprouts,S  1. 테이블 생성워크시트를 통해 로드할 데이터의 컬럼을 포함하는 테이블을 생성한다.create table garden_plants.veggies.vegetable_details ( plant_name varchar(25) ..

Snowflake 2024.07.29

[Tornado] RequestHandler - initialize에 값 전달하기

개요2024.06.28-[Tornado] RequestHandler - 동작 순서와 메서드 재정의에서 initialize 함수는 전달받은 매개변수를 멤버 변수로 저장하는 역할을 수행한다고 했었다.이번 글에서는 initialize에 매개변수를 전달하는 방법을 적어둔다.  RequestHandler예시로 아래의 MainHandler의 initialize는 2개의 매개변수를 전달받아 멤버 변수로 저장한다.class MainHandler(RequestHandler): def initialize(self, admin_id, admin_password): self.admin_id = admin_id self.admin_password = admin_password  Applicatio..

Python 2024.07.26

[Python] 클래스의 이름 출력하기

개요Python에서 로그를 출력할 때, 어떤 클래스에서 동작하는 함수인지를 확인하려고 한다. 그래서 클래스의 이름을 출력하고 싶다.방법을 적어둔다.   __class__.__name__Python의 모든 객체는 __class__라는 속성을 가지는데, __class__ 속성에는 객체의 데이터 타입, 즉 클래스에 대한 정보가 저장되어 있다. 그 중 클래스의 이름은 __class__.__name__ 속성에 접근하여 사용할 수 있다.class Character(): def __init__(self): self.life = 1000 def print(self): print(self.__class__.__name__)lisa = Character()lisa.print()__cla..

Python 2024.07.25

[Python] logging - 일정 주기로 로그 파일 회전하기

개요이전에 2022.02.14-[logging] Logger/Handler/Formatter 글에서 Python의 Logger를 살펴보았었다. 기존에는 여러 Log 핸들러 중에서 StreamHandler와 FileHandler를 사용했는데, 이번 글에서는 TimedRotatingFileHandler를 사용해 로그를 남겨보려고 한다.  TimedRotatingFileHandlerTimedRotatingFileHandler는 특정 시간 간격을 기준으로 로그 파일을 회전시키는 핸들러다.일반적인 FileHandler는 정해진 파일 하나에 계속해서 로그를 누적시키기 때문에 로그 파일 하나의 용량이 대단히 커질 수 있다. 하지만 TimedRotatingFileHandler는 특정 주기, 예로 들어 하루에 한 번이나..

Python 2024.07.24

[Tornado] RequestHandler - 동작 순서와 메서드 재정의

개요RequestHandler의 get, post 외의 여러 메서드는 하위 클래스에서 재정의될 수 있도록 설계되어 있다.이번 글에서는 요청 받은 RequestHandler의 동작 순서, 그리고 일반적으로 재정의되는 메서드를 적어둔다.  동작 순서RequestHandler는 모든 요청에 대해 다음과 같이 동작한다. 1. 각 요청마다 새로운 RequestHandler 객체가 생성된다.2. initialize 함수가 호출된다. initialize 함수는 Application 구성으로부터 초기화 변수를 전달받아 호출되며, 전달 받은 인수를 멤버 변수로 저장한다. 또한 send_error와 같은 함수를 호출하거나 출력을 생성하지 않는다.3. prepare 함수가 호출된다. prepare 함수는 어떤 HTTP 요청..

Python 2024.07.23

[Python] Coroutine 개념

개요2024.06.26-[Python] asyncio - 비동기 프로그래밍에서 코루틴이라는 개념이 나왔는데, 관련하여 개념적인 부분만 조금 적어둔다.  메인루틴과 서브루틴Python에서는 함수를 호출하면 기본적으로 함수가 끝나고 현재 코드로 다시 돌아온다. 예로 들어 아래와 같은 코드가 있다고 하자.def add(a, b): c = a + b # add 함수가 끝나면 변수와 계산식은 사라짐 print(c) print('add 함수')def calc(): add(1, 2) # add 함수가 끝나면 다시 calc 함수로 돌아옴 print('calc 함수')calc() calc 함수에서 add 함수를 호출하면, add 함수의 실행이 완료되고 다시 calc 함수로 돌아온다. 무엇보..

Python 2024.07.22

[Python] asyncio - 비동기 프로그래밍

개요2024.06.25-[프로그래밍] 동기(Synchronous) VS 비동기 (Asynchronous)에서 동기, 그리고 비동기에 대한 개념을 살펴보았다.Python의 경우, 기본적으로 동기 프로그래밍 언어다. 아래와 같이 def 키워드로 생성한 함수는 모두 동기 방식으로 동작한다.def do_sync(): return 'sync'하지만 Python 3.4에서 비동기 프로그래밍을 위한 asyncio 라이브러리가 표준 라이브러리로 추가되고 async/await 키워드가 문법으로 채택되며, Python에서도 외부 라이브러리 설치 없이 비동기 프로그래밍이 가능하게 되었다. 이번 글에서는 Python으로 비동기 프로그래밍을 하기 위한 asyncio 라이브러리의 기본 사용법에 대해서 적어둔다.  async..

Python 2024.07.19

[프로그래밍] 동기(Synchronous) VS 비동기 (Asynchronous)

개요최근 담당한 API 개발 업무 관련하여 공부를 하다 보니 동기, 비동기 통신 개념을 알아두어야 할 것 같다.관련하여 적어둔다.  Synchronous사전적으로 동기란 동시에 일어나다라는 의미인데, 컴퓨터 프로그래밍에서는 작업을 순차적으로, 직렬적으로 진행하는 것을 의미한다.작업이 시작되면 해당 작업이 완료될 때까지 대기하는 방식으로, 요청(Request)을 보내면 반드시 응답(Response)을 받아야 다음 동작이 이루어진다. 호출한 함수 또는 작업이 반환될 때까지 대기하는 동안에는 실행 흐름이 차단(block)된다.동기적인 방식은 간단하고 직관적인 코드를 작성할 수 있다는 장점이 있다.반면 여러 작업이 동시에 실행되어야 하는 경우에는 각 작업이 완료될 때까지 기다려야 하기 때문에 전체 프로세스를 기..

기타 2024.07.18
1 2 3