학습주제
학습내용
태블로
전처리 기능 구현
데스크탑에서 뭔가 데이터 연결이 계속 실패하는 현상 발생.
인터넷에서 새 프로젝틀 만들어서 하니 성공.
연별, 분기별, 월별로 나눌 수 있음
이런식으로 서브쿼리 생성함.
SELECT year, sum_lesiure,sum_vacationtour,sum_family_friend,sum_educational,sum_etc,
(sum_lesiure+sum_vacationtour+sum_family_friend+sum_educational+sum_etc) AS total_sum
FROM (
SELECT SUBSTRING(year, 1, 4) AS year,
SUM(purpose_lesiure) AS sum_lesiure,
SUM(purpose_vacationtour) AS sum_vacationtour,
SUM(purpose_family_friend) AS sum_family_friend,
SUM(purpose_educational) AS sum_educational,
SUM(purpose_etc) AS sum_etc
FROM raw_data.dataconcat
GROUP BY SUBSTRING(year, 1, 4)
) subquery
ORDER BY year
근데 파이차트는 만들어지지 않음.
우석님
쿼리를 짜지 않아도 바로 차트가 만들어짐.
표형방식 선택
저번에 스노우 플레이크 s3 연결때 썼던 계정으로
import pandas as pd
from io import StringIO
# AWS credentials.
ACCESS_KEY = 'AKIA'
SECRET_KEY = '4'
# S3 bucket 및 파일 이름
bucket_name = 'team05' # 변경 필요
file_name = 'DataConcat.csv' # 변경 필요
# S3 객체 생성
s3 = boto3.client('s3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
# S3에서 파일 내용을 가져옴
obj = s3.get_object(Bucket=bucket_name, Key=file_name)
# 파일 내용을 DataFrame으로 변환
df = pd.read_csv(StringIO(obj['Body'].read().decode('utf-8')))
# 'Year' 열과 'Purpose' 열만 선택.
df_selected = df[['Year', 'Purpose_Lesiure', 'Purpose_Work', 'Purpose_VacationTour', 'Purpose_Family_Friend', 'Purpose_Educational', 'Purpose_ETC']]
# 'Year' 열을 고정하고 나머지 열을 'long format'으로 바꿉니다.
df_long = df_selected.melt(id_vars='Year', var_name='Purpose', value_name='Value')
# 새로 저장할 파일 이름 설정
new_file_name = 'year_purpose.csv'
# 데이터프레임을 CSV 파일로 변환
csv_buffer = StringIO()
df_long.to_csv(csv_buffer, index=False)
# CSV 파일을 S3 버킷에 업로드
s3.put_object(Body=csv_buffer.getvalue(), Bucket=bucket_name, Key=new_file_name)
s3에 업로드함.
그리고 COPY 준비를 위해
redshift에서 테이블 생성.
에러남
'stl_load_errors' 시스템 테이블의 결과를 보면 데이터를 로드하는 동안 오류가 발생했습니다. 에러 메시지에는 "Error converting text to date"라고 나와 있습니다. 이는 날짜 형식이 잘못되었거나 변환할 수 없는 형식의 데이터가 있음을 나타냅니다.
분명히 값은 2023-01-01 이런식인데 시각적으로 JAN-02 이렇게 나온다고 해서 값이 왜 안맞나 생각.
셀 서식에서 'YYYY-MM-DD'로 서식 변경
저장 후, S3 파일과 교체
업로드 시도.
성공.
(중요) 년-월 방식이면 자동 서식을 무시하고 'yyyy-mm-dd'로 설정해줘야 SQL에서 DATE 타입으로 인식함.
이런식임
파이로 구현한 방법
계산편집에 들어가 테이블 구성비율로 하니 퍼센테이지가 나옴
문제.
각자의 작업공간에서 생성한 시트를 하나의 작업공간으로 모을 수 있나?
어려울 것 같음.
시트마다 데이터베이스 연결이 달리 설정될 수도 있고, 옮긴다면 같이 딸려와야함.
-> 우석님 작업공간에서 시트 같이 생성해서. 스토리로 구현