| analytics_authors | analayics_users | pii_users | admin | |
|---|---|---|---|---|
| raw_data Tables | Read | Read | X | Read, Write |
| analytics Tables | Read, Write | Read | X | Read, Write |
| adhoc Tables | Read, Write | Read, Write | X | Read, Write |
| pii Tables | X | X | Read | Read, Write |
์ ํ ์ฒ๋ผ ๊ถํ์ ์ค์ ํด ๋ณด์.
GRANT ALL ON SCHEMA analytics TO GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_authors;
GRANT ALL ON SCHEMA adhoc to GROUP analytics_authors;
GRANT ALL ON ALL TABLES IN SCHEMA adhoc TO GROUP analytics_authors;
GRANT USAGE ON SCHEMA raw_data TO GROUP analytics_authors;
GRANT SELECT ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_authors;
GRANT USAGE ON SCHEMA analytics TO GROUP analytics_users;
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO GROUP analytics_users;
GRANT ALL ON SCHEMA adhoc to GROUP analytics_users;
GRANT ALL ON ALL TABLES IN SCHEMA adhoc TO GROUP analytics_users;
GRANT USAGE ON SCHEMA raw_data TO GROUP analytics_users;
GRANT SELECT ON ALL TABLES IN SCHEMA raw_data TO GROUP analytics_users;
GRANT USAGE ON SCHEMA pii TO GROUP pii_users;
GRANT SELECT ON ALL TABLES IN SCHEMA pii TO GROUP pii_users;
- Fact Table : ๋ถ์์ ์ด์ ์ด ๋๋ ์์ ์ ๋ณด๋ฅผ ํฌํจํ๋ ์ค์ ํ ์ด๋ธ
- ์ผ๋ฐ์ ์ผ๋ก ๋งค์ถ ์์ต, ํ๋งค๋ ๋๋ ์ด์ต๊ณผ ๊ฐ์ ์ฌ์ค ๋๋ ์ธก์ ํญ๋ชฉ์ ํฌํจํ๋ฉฐ ๋น์ฆ๋์ค ๊ฒฐ์ ์ ์ฌ์ฉํ๋ค.
- Fact Table์ ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ ํค๋ฅผ ํตํ์ฌ ์ฌ๋ฌ Dimension Table๊ณผ ์ฐ๊ฒฐ๋๋ค.
- ๋ณดํต Fact Table์ ํฌ๊ธฐ๊ฐ ํจ์ฌ ํฌ๋ค.
- Dimension Table : Fact Table์ ๋ํ ์์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ํ ์ด๋ธ
- ๊ณ ๊ฐ, ์ ํ๊ณผ ๊ฐ์ ํ ์ด๋ธ๋ก Fact Table์ ๋ํ ์์ธ ์ ๋ณด ์ ๊ณต
- Fact Table์ ๋ฐ์ดํฐ์ ๋งฅ๋ฝ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ฐ๋ด๊ณ ๋ถ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
- Dimension Table์ ์ผ๋ฐ์ ์ผ๋ก Primary Key๋ฅผ ๊ฐ์ง๋ฉฐ, Fact Table์ Foreign Key์์ ์ฐธ์กฐํ๋ค.
- ๋ณดํต Dimension Table์ ํฌ๊ธฐ๋ ํจ์ฌ ์๋ค.
- ์ธ๋ถ ํ ์ด๋ธ(External Table)
- DB ์์ง์ด ์ธ๋ถ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ง์น ๋ด๋ถ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
-> ์ธ๋ถ ํ ์ด๋ธ์ ์ธ๋ถ์ ์ ์ฅ๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ DB๋ด๋ถ๋ก ๋ณต์ฌํ๊ณ ์ฐ๋ ๊ฒ์ด ์๋ ์์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.- SQL ๋ช ๋ น์ด๋ก DB์ ์ธ๋ถ ํ ์ด๋ธ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
-> ๋ฐ์ดํฐ๋ฅผ ์๋ก ๋ง๋ค๊ฑฐ๋ ํ๋ ๊ฒ์ด ์๋๋ผ ์ฐธ์กฐ๋ง ํ๊ฒ ๋๋ค.
-> ์ธ๋ถ ํ ์ด๋ธ์ CSV, JSON, XML๊ณผ ๊ฐ์ ํ์ผ ํ์ ๋ฟ๋ง ์๋๋ผ ODBC or JDBC ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์ก์ธ์คํ๋ ์๊ฒฉ DB์ ๊ฐ์ ๋ค์ํ ๋ฐ์ดํฐ ์์ค์ ๋ํด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.- ์ธ๋ถ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ ๊ฒฐ๊ณผ๋ฅผ DB์ ์ ์ฌํ๋๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
-> ์๋ฅผ ๋ค์ด, ์ธ๋ถ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ ํ์ผ์ ์ฝ๊ณ ์ ์ ๋ ๋ด์ฉ์ DB Table์ ์ ์ฌ ๊ฐ๋ฅํ๋ค.- ์ธ๋ถ ํ ์ด๋ธ์ ๋ณด์ ๋ฐ ์ฑ๋ฅ ๋ฌธ์ ์ ๋ํด ์ ์คํ ๊ณ ๋ ค๊ฐ ํ์ํ๋ค.
- HIVE๋ฑ์์ ์ฒ์ ์์ํ ๊ฐ๋ ์ผ๋ก ์ด์ ๋ ๋๋ถ๋ถ์ ๋น ๋ฐ์ดํฐ ์์คํ ์์ ์ฌ์ฉ๋๋ค.
- Redshift Spectrum ์ฌ์ฉ๋ฐฉ์
- S3์ ์๋ ํ์ผ๋ค์ ๋ง์น ํ ์ด๋ธ์ฒ๋ผ SQL๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
- S3ํ์ผ๋ค์ ์ธ๋ถ ํ ์ด๋ธ๋ค๋ก ์ฒ๋ฆฌํ๋ฉด์ Redshift ํ ์ด๋ธ๊ณผ ์กฐ์ธ ๊ฐ๋ฅ
- S3 ์ธ๋ถ ํ ์ด๋ธ๋ค์ ๋ณดํต Fact Table์ด ๋๊ณ Redshift Table์ Dimension Table์ด ๋๋ค.
- Redshift Cluster๊ฐ ํ์ํ๋ค.
- S3์ Redshift Cluster๋ ๊ฐ์ Region์ ์์ด์ผํ๋ค.
- S3 Fact ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ํ ์ด๋ธ๋ก ์ ์ํด์ผ ํ๋ค.

CREATE EXTERNAL SCHEMA external_schema
FROM data catalog
database 'myspectrum_db'
iam_role 'arn~~~'
CREATE external database if not exists;
CREATE EXTERNAL TABLE external_schema.user_session_channel(
userid integer,
sessionid varchar(32),
channel varchar(32)
)
row format delimited
fields terminated by','
stored as textfile
location 's3://~~~';
CREATE TABLE raw_data.user_property AS
SELECT
userid,
CASE WHEN cast(random()*2 as int) = 0 THEN 'male' ELSE 'female' END gender,
(CAST(random()*50 as int)+18) age
FROM(
SELECT DISTINCT userid
FROM raw_data.user_session_channel
);
SELECT gender, COUNT(1)
FROM external_schema.user_session_channel usc
JOIN raw_data.user_property up ON usc.userid = up.userid
GROUP BY 1;