TRINO DB 에서 매주 목요일 구하기 

 

SELECT date_add('day', -day_of_week(current_date), date_add('day', 4, current_date));

 

@set anl_dt = CAST('2024-02-29' AS DATE)

 

주의 set은 소문자로 써야함

; 붙이면 안됨

 

 

SELECT *

FROM TABLE

WHERE anl_dt = ${anl_dt}; 

 

 

pandas에서 DataFrame을 DB로 insert 시키고 싶을때 여러가지 방법이 있다.

 

원래는 파일형식의 hive DB를 사용하다가 ICEBERG로 옮기게 되었는데, ICEBERG에서는 MinIO로 parquet를 밀어넣는 방식을 사용하지 않는다. 귀찮..

 

그래서 속도가 좀 느려지지만 to_sql 방식을 사용해서 Pandas DataFrame을 그대로 insert 해보았다.

 

1. [SQL] ICEBERG DB로 테이블을 생성 

CREATE TABLE ICEBERG.schema.table (
	ANL_DT 	VARCHAR(10),
	a		VARCHAR(9),
	b		VARCHAR(18),
	c		VARCHAR(100),
	create_date  	date
)
WITH (
   format = 'parquet',
   location = 's3a://bucket/iceberg/schema/DM_PMI_MDL_OUT'
)
;

 

 

2. [Python] DB Connect / engine 만들기

import sqlalchemy

def conn():
    return connect(
        user="...",
        http_scheme="https",
        auth=BasicAuthentication("///", "///"),
        host="...",
        port= ... ,
        catalog= "iceberg",
        schema= "..." 
        )

engine = sqlalchemy.create_engine('trino://', creator=conn)

 

trino를 사용하였기 때문에 .create_engine url 부분에 trino://를 사용하였다.

 

3. [Python] to_sql 매서드 적용

 

df.to_sql('table', con=engine, schema = 'schema',if_exists='append',chunksize = 5000, method = 'multi', index = False)

 

chunksize를 적절히 설정하고 method를 multi로 설정한다.

 

 1) chuksize : 각 배치때마다 한번에 written 할 row 수, 설정 안할 경우 한번에 하나씩 written됨

 2) method 

    ① multi: mutilple하게 insert

    ② None: 설정 안할령우 한번에 하나씩 insert 

 

 

 

+ ) 속도 튜닝은 아직 안해봐서 좀 느린듯 함

 

 

 

INTERVAL '1' DAY를 활용하면 날짜 더하기가 가능하다

 

CAST('2023-07-13' AS DATE) + INTERVAL '1' DAY

 

Prophet 설치시 발생한 오류 조치 방법

 

!pip install prophet

 

prophet 패키지 install 해주고 패키지를 불러오면

 

from prophet import Prophet
Importing plotly failed. Interactive plots will not work.
 
이런 워닝이 발생한다.

 

해결방법 초간단.

!pip install plotly

 

plotly 까지 install 해주면 오류 해결

+ Recent posts