โ . Redshift์ ํน์ง
1. ๊ณ ์ ๋น์ฉ ์ต์
160GB~2PB๊น์ง ๊ฐ๋ฅ
HDD๋์ SSD๋ฅผ ์ฌ์ฉํ์ฌ ์๋๊ฐ ๋น ๋ฅธ ํธ(๊ทธ๋๋ ํ๋ก๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋นํด์๋ ์๋๊ฐ ๋๋ฆผ)
์ปฌ๋ผ๊ธฐ๋ฐ ์คํ ๋ฆฌ์ง์ด๊ธฐ ๋๋ฌธ์ ์ปฌ๋ผ๋ณ ์์ถ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ์์ถ๋ฅ ์ด ๋๊ณ ์ฑ๋ฅ์ด ์ข์ ํธ
๋ฒํฌ ์ ๋ฐ์ดํธ ๊ฐ๋ฅ(๋ ์ฝ๋๋ฅผ S3์ ์ ์ฅ ํ COPY ์ต์ ์ผ๋ก ์ผ๊ด ์ ์ฌ)
๋ฐ์ดํฐ ๊ณต์ ๊ธฐ๋ฅ(AWS ํน์ ๊ณ์ ๊ณผ ํน์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์๋ค.) Snowflake๋ ๊ฐ๋ฅ
๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ด๊ธฐ ๋๋ฌธ์ primary key uniqueness๋ฅผ ๋ณด์ฅํ์ง ์์
Postgresql๊ณผ ํธํ์ด ๊ฐ๋ฅ(JDBC/ODBC)์ผ๋ก ์ก์ธ์ค ๊ฐ๋ฅ
2. ๊ฐ๋ณ ๋น์ฉ ์ต์
(serverless)๋ ์กด์ฌํ๋ค.
3. ๋น์ฉ
1) Dense Storage (HDD)
์ ์ฅ์ ์ง์ค
2) Dense Compute(SSD)
๊ณ์ฐ์ ์ง์ค
3) Managed Storage(SSD)
์ ์ฅ+๊ณ์ฐ์ ๋ชจ๋ ์ง์ค
cf) ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ฑ๋ฅ์ ๋์ด๋ ์ต์ (Auto-scaling)
Scale-up : ๋ ์ข์ ์ฌ์์ ์๋ฒ๋ก ์ ๊ทธ๋ ์ด๋
Scale-out : ์๋ฒ๋ฅผ ํ๋ ๋ ์ถ๊ฐํ๋ ๊ฒ(๋ณดํธ์ ์ผ๋ก ํด๋น ๋ฐฉ์์ ๋ ๋ง์ด ์ฌ์ฉ)
4. ๋จ์
์ต์ ํ๊ฐ ์ด๋ ค์(<->BigQuery, Snowflake๋ ์ ์ฅ๊ณผ์ ์ ์๋์ ์ผ๋ก ์ฒ๋ฆฌ)
๋ ์ฝ๋ ๋ถํฌ์ SKEW ๋ฐ์ : ์ด๋ ๋ ธ๋์ ์ ์ฅํด์ผ ํ๋์ง ์ฌ์ฉ์๊ฐ ์ง์ ํ๋ค. ํ์ชฝ ๋ ธ๋๋ก ๋ฐ์ดํฐ๊ฐ ๋ชฐ๋ฆฌ๋ฉด, ํด๋น ๋ ธ๋๋ง ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ ค์ ธ ๋ถ์ฐ ์ฒ๋ฆฌ์ ํจ์จ์ฑ์ด ์ฌ๋ผ์ง๋ค.
5. ๋ถ๋ฐฐ ์ต์
Diststyle
๋ ์ฝ๋ ๋ถ๋ฐฐ๊ฐ ์ด๋ป๊ฒ ๋๋์ง๋ฅผ ์ ํํ๋ ์ต์
- all : ๋ชจ๋ ๋ ธ๋์ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ ์ฌ(ํ๋์ ๋ ์ฝ๋๊ฐ ๋ชจ๋ ๋ ธ๋์ ์ ์ฅ)
- even : round-robin ๋ฐฉ์์ผ๋ก ํ๋์ฉ ๋์๊ฐ๋ฉฐ ๋ ์ฝ๋์ ์ ์ฌ(ํ๋์ ๋ ์ฝ๋๊ฐ ํ๋์ ๋ ธ๋์ ์ ์ฅ)
- key : ํน์ ์ปฌ๋ผ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ์ฌ(๋ณดํต, unique column ๊ธฐ์ค)
- distkey
Sortkey
๋ ธ๋ ๋ด์์ ์ด๋ค ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋์ง
๋ณดํต TIMESTAMP์ ์ปฌ๋ผ์ ์ฌ์ฉ
์ ์ฉ
Create Table(
...
)DISTSTYLE ์คํ์ผ์ด๋ฆ DISTKEY(์ปฌ๋ผ๋ช
) SORTKEY(์ปฌ๋ผ๋ช
);
๋ณดํต DISTKEY์๋ ์์ฃผ ์กฐํํ๋ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ํ๋๋ฐ, ๋ ์ฝ๋ ๋ถํฌ์ SKEW๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ,
โ ก. ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ๋ฒํฌ ์ ๋ฐ์ดํธ ๋ฐฉ์
1. ๋์ฉ๋์ ๋ฐ์ดํฐ(csv, json, sql)๋ฅผ ์์ถ๋ฅ ์ด ๋์ parquet ํ์ผ๋ก ๋ง๋ ๋ค.
cf) Parquet์ ๋ถ์ฐํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์ ์ํ ์ด ์งํฅ ํ์์ ํ์ผ ํฌ๋งท ์ค ํ๋์ด๋ค.
2. A Cron job or Schedular(ex. Airflow)๋ฅผ ํ์ฉํด์ ๋์ฉ๋ ์คํ ๋ฆฌ์ง(S3)์ ์ ๋ก๋ํ๋ค.
3. ๋ฒํฌ ์ ๋ฐ์ดํธ : ๋์ฉ๋ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ํ์ผ์ COPY SQL๋ก Redshift๋ก ํ ๋ฒ์ ๋ณต์ฌํ๋ค.
โ ข. ์ง์ํ๋ ๋ฐ์ดํฐ ํ์
๋ค๋ฅธ ๊ฑด Postgresql๊ณผ ๋์ผ(char, varchar, text, json์ ๋ค๋ฆ)
Postgresql์ ๊ฒฝ์ฐ char, varchar, text๋ utf-8 ๊ธฐ์ค(ํ ๊ธ์๋ ํ char)
Redshift์ ๊ฒฝ์ฐ byte๋จ์(์ธ์ด์ ๋ฐ๋ผ ๋ค๋ฆ. ํ์ค์ผ=3byte, ์๋ฌธ=1byte). ์ธ์ด์ ๋ฐ๋ผ ์ ์ฅํ ์ ์๋ ํ์์ด ๋ค๋ฆ
Json์ ๊ฒฝ์ฐ Redshift์์ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ Char๋ก ๋ฐ์์์ ์ดํ์ ํจ์๋ก Parsing์ ์ํํด์ผ ํ๋ค.
๊ณ ๊ธ ๋ฐ์ดํฐ ํ์
- GEOMETRY:๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ. ์ง๋ฆฌ์ ์ธ ํ์์ด๋ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๊ฒ์ผ๋ก, ํฌ์ธํธ, ๋ผ์ธ, ํด๋ฆฌ๊ณค ๋ฑ์ ๋ค์ํ ์ง์ค๋ฉํธ๋ฆฌ ํ์ ์ ๋ค๋ฃฐ ์ ์๊ณ , ์ง๋์์ ์์น๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ง๋ฆฌ์ ์ธ ์์ญ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ.
- GEOGRAPHY: GEOMETRY๋ณด๋ค, ๋ ๋์ ์ง๋ฆฌ์ ์์ญ์ ๋ค๋ฃฌ๋ค. ์ง๊ตฌ์์ ์์น๋ก ํํํ๋ฉฐ, ๊ฒฝ์๋ ์ขํ๋ฅผ ์ฌ์ฉ.
- HLLSKETCH: HyperLogLog(ํ์ดํผ๋ก๊ทธ๋ก๊ทธ) ์ค์ผ์น๋ฅผ ๋ํ๋ด๋ ๊ฒ์ผ๋ก ๋๋์ ๊ณ ์ ํ ๊ฐ์ ์นด์ดํธํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๋ฅ ์ ์ธ ์๊ณ ๋ฆฌ์ฆ. ๋์ฉ๋์ ๋ฐ์ดํฐ ์ธํธ์์ ๊ณ ์ ํ ๊ฐ์ ์ถ์ ํ๋ ๋ฐ ํจ๊ณผ์ ์ด๋ฉฐ, ์ฃผ๋ก ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์ง๊ณ ์์ ์์ ์ฌ์ฉ.
- SUPER: ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐํ์ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ์ผ์ข ์ placeholder(์๋ฆฌ ํ์์)
โ ฃ. Redshift ์์ฑํ๊ธฐ
free trial๋ฅผ ์ง์ํ๋ Redshift serverless(๊ฐ๋ณ์ต์ )์ ์ด์ฉํ์.
(use default settings๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐํธํ๊ฒ ์ธํ ํ์๋ค.)
์ด์ AWS redshift์ colab์ ์ฐ๊ฒฐํด ๋ณด์.
๋ ๊ฐ์ง ์์ ์ด ํ์ํ๋ฐ, AWS์ ์๋ํฌ์ธํธ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ (Hostname, port, DBname) Access ๊ถํ์ ์ค์ ํด์ผ ํ๋ค.
1. AWS ์๋ํฌ์ธํธ
- ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ค์
Serverless ๋์๋ณด๋> ์์ ๊ทธ๋ฃน> ๋คํธ์ํฌ ๋ฐ ๋ณด์>ํธ์ง>ํผ๋ธ๋ฆญ์ก์ธ์ค๊ฐ๋ฅ ์ฒดํฌ
- VPC ๋ณด์ ๊ทธ๋ฃน ์ค์ ๋ณ๊ฒฝ
ํ์ฌ๋ ๊ฐ์ VPC ๋ด์ ์๋น์ค์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฐ, ์ธ๋ถ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฒ ์ค์ ํด ๋ณด์.
Serverless ๋์๋ณด๋>์์ ๊ทธ๋ฃน>๋คํฌ์ํฌ ๋ฐ ๋ณด์> VPC ๋ณด์ ๊ทธ๋ฃน> ์ธ๋ฐ์ด๋ ๊ท์น> ์ธ๋ฐ์ด๋ ๊ท์น ํธ์ง
๋ค์๊ณผ ๊ฐ์ ์ธ๋ฐ์ด๋ ๊ท์น์ ์ถ๊ฐํ๋ค.
- ์ค๋ํฌ์ธํธ ๋ณต์ฌ
Serverless ๋์๋ณด๋> ์์ ๊ทธ๋ฃน> ์ค๋ ํฌ์ธํธ ๋ณต์ฌ
2. Access ๊ถํ ์ค์
admin ๊ณ์ ์ผ๋ก ์ ๊ทผํ๊ฑฐ๋, IAM์ ๊ถํ์ ์ค์ ํ ์ ๊ณ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ค.
ํด๋น ์ค์ต์์๋ admin๊ณ์ ์ผ๋ก ์ ๊ทผํ๋๋ก ํ๋ค.
1) Admin Userid/password
Serverless ๋์๋ณด๋ > ๋ค์์คํ์ด์ค > ์์ > Edit admin credential ์ ํ
์ฌ์ฉ์๊ฐ ์ง์ ์ํธ๋ฅผ ์ค์ ํ ์ ์๋๋ก ๋ค์์ ๊ณผ์ ์ ์ ํํ๋ค.
2) Admin + IAM์ ํตํด ๋ค๋ฅธ Account ๊ณ์ ๋ง๋ค๊ธฐ
โ ค. Colab์ ์ฐ๊ฒฐํ๊ธฐ
!pip install ipython-sql==0.4.1
!pip install SQLAlchemy==1.4.49
%load_ext sql
%sql postgresql://์ด๋๋ฏผ๊ณ์ ๋ช
:๋น๋ฐ๋ฒํธ@endpoint๋ถ์ฌ๋ฃ๊ธฐ
%%sql
SQL๋ฌธ์ฅ์คํ
โ ฅ. Redshift ์ด๊ธฐ ์ค์ ํ๊ธฐ
0. db์ค์ , ์ ๋ณด ํ์ธ
โ ฃ ๊ณผ์ ์์ dev ์ด๋ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ์๋ค.
๋ค์์ ์์ฑํ ๊ฒ๋ค์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ ํน์ ํ ์ด๋ธ์ ๊ธฐ๋ก๋์ด ์๋ค.
pg_namespace | ์์ฑ๋ ์คํค๋ง์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ํ
์ด๋ธ (schema์ด๋ฆ, ํด๋น ์คํค๋ง๋ฅผ ์์ ํ ์ฌ๋, ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์์ id, ์ฌ์ฉ์์ ๊ถํ ์ ๋ณด) |
pg_user | ์์ฑ๋ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ํ ์ด๋ธ |
pg_group | ์์ฑ๋ ๊ทธ๋ฃน์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ํ ์ด๋ธ |
SVV_ROLES | ์์ฑ๋ ์ญํ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ํ ์ด๋ธ |
๋ณดํต ์ฌ์ฉ์, ํ ์ด๋ธ์ด ๊ต์ฅํ ๋ง์์ง๋ฏ๋ก ๊ทธ๋ฃน-์คํค๋ง ๋ณ๋ก ์ ๊ทผ๊ถํ์ ์ ์ดํ๋ค.
1. Schema
ํ ์ด๋ธ์ ์ ์ฅํ๋ ํด๋์ ์ญํ ๋ก, ๋ณดํต ๋ค์์ 4๊ฐ์ ์คํค๋ง๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์๋ค.
- row_data : ETL ๊ณผ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ ์ฅ
- analytics : row_data์์ ๋ฐ์ดํฐ ํ์ฉ์ ํ์ํ ํ ์ด๋ธ, ํ ์ด๋ธ ์กฐ์ธ ๋ฑ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
- adhoc : ๊ฐ๋ฐ/ํ ์คํธ์ฉ ํ ์ด๋ธ์ด ์ ์ฅ
- pii : ๊ฐ์ธ์ ๋ณด ๊ด๋ จ ํ ์ด๋ธ์ด ์ ์ฅ (์ก์ธ์ค ํ ์ ์๋ ์ฌ๋์ ์ต์ํ + ์ ๊ทผํ ์ฌ๋ ๋ก๊น =์ถ์ ๊ฐ๋ฅํ๊ฒ)
- ์คํค๋ง ์์ฑ
CREATE SCHEMA raw_data;
CREATE SCHEMA analytics;
CREATE SCHEMA adhoc;
CREATE SCHEMA pii;
2. ๊ทธ๋ฃน/์ฌ์ฉ์ ์์ฑ
- ์ฌ์ฉ์ ์์ฑ
CREATE USER ์ฌ์ฉ์์ด๋ฆ PASSWORD '๋น๋ฐ๋ฒํธ';
- ๊ทธ๋ฃน ์์ฑ(์์ ๋ถ๊ฐ)
๋ณดํต ๋ค์๊ณผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๊ทธ๋ฃน์ ์์ฑํ๊ณ ๊ถํ์ ๋ถ์ฌํ๋ค.
XXX_users : read
XXX_authors : read/write
pii_users: admin(๊ฐ์ธ์ ๋ณด ์ ๊ทผ)
CREATE GROUP ๊ทธ๋ฃน์ด๋ฆ;
- ๊ทธ๋ฃน์ ์ฌ์ฉ์ ์ถ๊ฐ
ALTER GROUP ๊ทธ๋ฃน์ด๋ฆ ADD USER ์ฌ์ฉ์์ด๋ฆ;
- ๊ทธ๋ฃน์ ์คํค๋ง/ํ ์ด๋ธ ์ ๊ทผ ๊ถํ ์ง์
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA ์คํค๋ง์ด๋ฆ TO ๊ทธ๋ฃน์ด๋ฆ;
or
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE ํ
์ด๋ธ์ด๋ฆ TO ๊ทธ๋ฃน์ด๋ฆ;
3. ์ญํ
๊ทธ๋ฃน์ ๊ฒฝ์ฐ, ๊ณ์น์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ถํ์ ์ง์ ํด์ผ ํ๋ค.
์ญํ ์ ๊ฒฝ์ฐ ์์(๊ณ์น)์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํ ์ญํ ์ ์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์๋ก์ด ์ญํ ์ ๋ถ์ฌํ์ฌ ํ์ํ ์ญํ ๋ง ์ถ๊ฐ๋ก ์ง์ ํ๋ฉด ๋๋ค.
- ์ญํ ์์ฑ
CREATE ROLE ์ญํ ์ด๋ฆ;
- ์ญํ ๋ถ์ฌ(์ฌ์ฉ์, ๊ทธ๋ฃน, ์ญํ )
GRANT ROLE ์ญํ TO ์ฌ์ฉ์ or ๊ทธ๋ฃน or ์ญํ ;
โ ฆ. ๋ฒํฌ ์ ๋ฐ์ดํธ ํ๊ธฐ( at raw_data ์คํค๋ง )
๐raw_data ์คํค๋ง์ COPY๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ 3๊ฐ์ ํ ์ด๋ธ์ ํต์งธ๋ก ๋ณต์ฌํด ๋ณด์.
1. CSV ํ์ผ์ AWS S3 ๋ฒํท์ ์ ๋ก๋
1) S3 ๋ฒํท ์์ฑ
AmazonS3> ๋ฒํท> ๋ฒํท ๋ง๋ค๊ธฐ์์ Redshift์ ๋์ผํ ์ง์ญ์ ๋ฒํท์ ํ๋ ์์ฑํ๋ค.(๋๋จธ์ง ๊ตฌ์ฑ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ ํํ์๋ค.)
2) ํ์ผ ์ ๋ก๋
๐งบtest_s3bucket
๐test
๐channel.csv
๐session_timestamp.csv
๐session_transaction.csv
๐user_session_channel.csv
์ ๋ก๋๋ ํ์ผ์ ์ ๊ทผํ๋ฉด, S3 URL์ ํ์ธํ ์ ์๋๋ฐ ํด๋น ์ฃผ์๋ก ์ ๊ทผํ ์ ์๋ค.
2. ๊ถํ ์ค์
1) Redshift๊ฐ S3์ ์ ๊ทผํ ์ ์๋ IAM ์์ฑ
IAM> ์ญํ > ์ญํ ์์ฑ
์ ๋ขฐํ ์ ์๋ ์ํฐํฐ ์ ํ - AWS ์๋น์ค, ์ฌ์ฉํ๋ก - Redshift(Customizable) ์ ํ
AmazonS3FullAccess๊ณผ ๊ฐ์ ๊ถํ์ ์ถ๊ฐํ๋ค.
์ญํ ์ด๋ฆ์ redshift.read.s3๋ก ๋ช ๋ช ํ๋ค.
2) Redshift์ ์ญํ ๋ถ์ฌ
Serverless๋์๋ณด๋> ๋ค์์คํ์ด์ค ์ ํ> ๋ณด์ ๋ฐ ์ํธํ> IAM ์ญํ ๊ด๋ฆฌ
ํด๋น ํ์ด์ง์์ IAM ์ญํ ์ฐ๊ฒฐ์ ์ ํํ๋ค(์๊น ์์ฑํ redshift.read.s3 ์ญํ ์ ์ฐ๊ฒฐ)
3. COPY ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ row_data ์คํค๋ง์ ํ ์ด๋ธ์ ๋ณต์ฌ
๋ค์ ์ฃผ์์์ Redshift์์ ์ฌ์ฉ๋๋ ๊ตฌ๋ฌธ๋ค์ ์ฐธ๊ณ ํด ๋ณด์.
1) ํ ์ด๋ธ ์์ฑ
์ฐ์ , COPY ํ ํ ์ด๋ธ์ ์์ฑํ๋ค.(์นผ๋ผ ๋ฑ์ ์ง์ )
2) ๋ฒํฌ ์ ๋ฐ์ดํธ
COPY ์คํค๋ง.ํ
์ด๋ธ์ด๋ฆ
[ ์ปฌ๋ผ๋ชฉ๋ก ]
FROM 'S3์
๋ก๋๋ํ์ผ S3 URI'
credentials 'aws_iam_role=IAM ARN ๋ถ์ฌ๋ฃ๊ธฐ'
delimiter ',' dateformat 'auto' timeformat 'auto' IGNOREHEADER 1 removequotes;
- S3์ ๋ก๋๋ ํ์ผ S3 URI
S3๋ฒํท์ ํ์ผ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ค.
- IAM ARN๋ถ๋ถ
IAM> ์ญํ > redshift.read.s3์ ํ> ARN ๋ณต์ฌ ํ ๋ถ์ฌ ๋ฃ๊ธฐ๋ฅผ ์ํํ๋ค.
- ๋ง์ง๋ง ๋ฌธ์ฅ
delimiter ', ' : csv ํ์ผ์ด๋ฏ๋ก ์ฝค๋ง๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ
IGNOREHEADER 1 : ์ฒซ ๋ฒ์งธ ์ค์ ํค๋์ด๋ฏ๋ก ๋ฌด์ํ๋ค.
dateformat 'auto' timeformat 'auto' : date, time ํ์์ ์ฌ๋ฌ ํ์ ์ค redshift๊ฐ ์๋ ์ง์ ํ๋๋ก ํ๋ค.
removequotes : ๋ฐ์ดํ ์ ๊ฑฐ
4. COPY ์๋ฌ
COPY ๊ณผ์ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด,
stl_load_errors ํ ์ด๋ธ์ ์ ์ผ ์ต๊ทผ ๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์ด๋ค ์ปฌ๋ผ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํด ๋ณด์.
SELECT *
FROM stl_load_errors
ORDER BY starttime DESC;
โ ง. (at analytics ์คํค๋ง ) CTAS ์ฌ์ฉํ๊ธฐ
CREATE TABLE analytics.mau_summary AS
SELECT ~
FROM ~