5강. Day 2-5

data_hamster·2023년 5월 25일
0
post-custom-banner

학습주제
Redshift COPY 실습

학습내용
외부 소스를 다운로드
s3 생성 후 외부 소스 업로드
IAM 역할 생성
클러스터에 역할 부여
구글 콜랩에서 COPY 실습

s3 콘솔로 이동
리전은 레드쉬프트를 생성한 같은 리전으로 선택 (오레곤)



기본 선택

다 기본 선택 후 버킷 생성

아무것도 없음
폴더 생성

해당 폴더로 접속

다운받은 csv 드래그해서 업로드

업로드 시간이 조금 걸린다. 리전이 멀어서 그런거 같음
파일로 들어가보면
s3 URI가 뜬다 복사해준다

접근권한 설정 IAM 권한

  • IAM 콘솔 방문

  • 역할 클릭

  • 역할 만들기

  • AWS 서비스 선택

  • 다른 AWS 사용사례로 redshift 선택

  • Redshift - Customizable

  • s3 검색 후 정책 클릭

  • 역할 생성

    ARN은 나중에 쓰임

  • 네임스페이스 이동

  • 보안 및 암호화 - IAM 역할 관리

  • 권한 목록 확인

  • IAM 역할 관리 - IAM 역할 연결

  • IAM 역할 연결

COPY 벌크 업데이트 실습

user_session_channel

CREATE TABLE raw_data.user_session_channel (
userid integer,
sessionid varchar(32) primary key,
channel varchar(32)
);

-- 아래 쿼리에서 aws_iam_role의 값은 각자 Redshift cluster에 지정한 S3 일기 권한 ROLE의 ARN을 지정
COPY raw_data.user_session_channel
FROM 's3://jongwook-redshift-bucket/test_data/user_session_channel.csv'
credentials 'aws_iam_role=arn:aws:iam::542670215238:role/redshift.read.s3'
delimiter ',' dateformat 'auto' timeformat 'auto' IGNOREHEADER 1
removequotes;

잘 들어갔나 확인

SELECT * FROM raw_data.user_session_channel LIMIT 10;

session_timestamp

CREATE TABLE raw_data.session_timestamp (
sessionid varchar(32) primary key,
ts timestamp
);

COPY raw_data.session_timestamp
FROM 's3://jongwook-redshift-bucket/test_data/session_timestamp.csv`
credentials 'aws_iam_role=arn:aws:iam::542670215238:role/redshift.read.s3'
delimiter ',' dateformat 'auto' timeformat 'auto' IGNOREHEADER 1
removequotes;

session_transaction

CREATE TABLE raw_data.session_transaction (
sessionid varchar(32) primary key,
refunded boolean,
amount int
)

COPY raw_data.session_transaction
FROM 's3://jongwook-redshift-bucket/test_data/session_transaction.csv'
credentials 'aws_iam_role=arn:aws:iam::542670215238:role/redshift.read.s3'
delimiter ',' dateformat 'auto' timeformat 'auto' IGNOREHEADER 1
removequotes;

analytics 테스트 테이블

CTAS 방법


CREATE TABLE analytics.mau_summary AS
SELECT
TO_CHAR(A.ts, 'YYYY-MM') AS month,
COUNT(DISTINCT B.userid) AS mau
FROM raw_data.session_timestamp A
JOIN raw_data.user_session_channel B ON A.sessionid = B.sessionid
GROUP BY 1
ORDER BY 1 DESC;
profile
반갑습니다 햄스터 좋아합니다
post-custom-banner

0개의 댓글