
์๋
์๋
์น์ด์ด์ฆ PM ์ ์ ์
๋๋ค ๐ง
์ค๋์ ์น์ด์ด์ฆ๋ฅผ ์ฌ์ด๋ํ๋ก์ ํธ๋ก ๋๋ฆฐ์ง
๋ฒ์จ ์ด๋๋ง ํ ๋ฌ์ด ๋๋ ๋ ์
๋๋น
์์ง ์น์ด์ด์ฆ..๋ฅผ ๋ชจ๋ฅธ๋ค๊ตฌ์?
๊ทธ๋ ๋ค๋ฉด ์น์ด์ด์ฆ ๊ตฌ๊ฒฝํ๋ฌ ๊ฐ๊ธฐ โ๐ป

๊ณ ์ ํ์์ฆ ์ธ์คํ์๋ ์ฌ๋ผ์์ฃ ใ
ใ
ํ์์ฆ 32๊ธฐ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ณ ! ๋ง์ง๋ง ํ๊ธฐ๋ ๋ง๋ฌด๋ฆฌํ๊ณ (์ ์์ง๋ง) !
์ํฉ์ด ๋๋ฌด ๋ง์ด ๋ฐ๋๋ฉด์ ๊ฐ์ธ์ ์ผ๋ก ๋ง์์ด ์ฑ์ญ์์ญํ ์ํ๋ก
ํ๋์์ ๊ตด๋ฌ๊ฐ๋ ๊ฒ๋ค๋ง ๋ถ์ก๊ณ ... ์ ์งํ๋ ์ํ๋ก ์ง๋๋ ๊ฒ ๊ฐ์ต๋๋ค๋์ฅ ..,
๊ทธ๋ฌ๋ค ์ด์ ๊ฒจ์ฐ ์ ์ ์ ์ฐจ๋ฆฌ๊ณ ์ผ๋ค์ ์ณ๋ด๊ธฐ ์์ํ๋๋ฐ
๋ง์ฃผํ ..! ๋ฐ๋ก๋ฐ๋ก
์ ๋ง Raw ๊ทธ๋๋ก์ ์ ์ ๋ก๊ทธ ๋ฐ์ดํฐ!

๊ฒฝ์ธ๋กญ๊ตฌ๋ ...
๋ณด์๋ง์ ๋๊ฐ ๋๊ธฐ ์์ํด์, SQL ์ฟผ๋ฆฌ ์ง๊ณ ์ค์ผ์ฅด๋ง ํ๋ ๊ฑฐ์ ์ฌ์ทจํด์
์ค๋ ์์ ์๋ฆฌ 4์๊ฐ์ด ๋ฐ์น ์ง๋๊ฐ๋ ๊ฒ ๊ฐ์์.

์๋น์ค ๊ธฐํ ์ผ ์์ฒด๋ก๋ ๋๋ฌด! ๊ฐ๋์ ๋์ฑ! ์ฆ๊ฒ๊ฒ ํ๊ณ ์์์ง๋ง
์ ์ด์ ๊ธฐํ์ ์์ํ๋ ๊ฒ์ ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ฅผ ๊ฟ๊พธ๋ ์ฌ๋์ผ๋ก์ ์ค ์ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ณด๊ณ ,
์์ฌ๊ฒฐ์ ํ๋ ๊ฒฝํ์ ์ป๊ณ ์ถ๊ธฐ ๋๋ฌธ์ด์๊ฑฐ๋ ์.
ํนํ๋ ์ฐ๋ฆฌ ํ ๊ธฐํ์๋ ๋์์ด๋๊ฐ '์ ์ด๋์ผ ํด?'๋ผ๋ ์ง๋ฌธ์ ๋ง์ด ํ๋ ์ฌ๋๋ค์ด๋ผ
์ด๋๊น์ง ๋ฌด์ํ '๊ตณ์ด ์ด๋ ๊ฒ ํด์ผ ํด?', '๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์์ด?' ์ ์์ฒด ๊ฒ์ฆ์ ๊ฑฐ์ณ์๊ธฐ ๋๋ฌธ์
์ง๊ธ ์ํ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐ๊ฟ์ผ ํ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ด์ ์ฌ์ผ ํ๋ค-๊ณ ์๊ฐํ์ด์.
ใ ก ๋ง์น ... ํ๋ฐฑ์กฐ์ปค๋ฅผ ์ด๊ธธ ์ ์๋ ๊ฑด ์ปฌ๋ฌ์กฐ์ปค๋ฐ์ ์๋ค...
๊ทธ๋์ 12์ ๋ง๋ถํฐ ์ง๊ธ 1์ 20์ผ๊น์ง๋
์๋ก์ด ๊ธฐ๋ฅ์ ์์ ํ ๋๋ฒจ๋กญํ๊ฑฐ๋, ์๋ ํ๋ก์ฐ๋ฅผ ์์ ํ ๋ฐ๊พธ๊ธฐ๋ณด๋ค๋
์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ์ ์๋ ํ๊ฒฝ ์ธํ
์ ์์ฃผ๋ก ํ์ด์ ! ๐
๋ค๋ค ๊ณ ์ํด ์ค ๋์ ์ด๋ ๊ฒ ํ๊ฒฝ๋ ์ธํ
์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค

ํ์์ฆ ๋ฐ์
์ ๋ ๋ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉฐ ์ ๋ฆฌํ ๋ชฉํ(~2/25) ์ค ์ผ๋ถ

ํฌ๊ฒ 1. ํ์์ฆ ๋ฉํ ๋ง ์ดํ ๋ฐ์๋ ํผ๋๋ฐฑ์ ๋ํ ์์ , 2. ๋ก๊ทธ ์์ง ํ๊ฒฝ์ธํ
, 3. ํ๋ก๋ชจ์
์์ฃผ์ ํ ๋ฌ์ ๋ณด๋์ด์.
๋์ค์ JIRA ์ด๋ป๊ฒ ์ฌ์ฉํ๊ณ ์๋์ง๋ ๊ธ ์จ์ ๋จ๊ธธ๊ฒ์ ใ
ใ
๋ฐฑ์๋ ์ชฝ์์๋ ์ด๋ฏธ ๋งค์ผ๋งค์ผ ๋ก๊ทธ๊ฐ ์์ฑ๋์๊ณ
์จ๋ฒ ์์ฑ์ด๋ ์ฌ์ง ์
๋ก๋, ๋ค์ด๋ก๋ ๊ฐ์ ์ฃผ์ ์ก์
๋ค์ด ์๋ฒ ๋ก๊ทธ๋ก ๋จ์
S3์ ์ ์ฌ๋ ๋ค BigQuery๋ก ๋ฐ๋ก ํ์ธํ ์ ์๋ ์ํ์
๋๋ค.

๋ฐฑ์๋์ ์์ง์ ์์ฒญํ ์ด๋ฒคํธ ๋ก๊ทธ๋ค ์ข
๋ฅ
ํ๋ก ํธ ์ชฝ๋ ๋ง์ฐฌ๊ฐ์ง๋ก Google Tag Manager๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ๋ณด๋ด๊ณ ์์๊ณ ,
GA4๋ฅผ ๊ฑฐ์ณ BigQuery๋ก export ๋๋ ๊ตฌ์กฐ๋ ์ด๋ฏธ ๋ง๋ค์ด์ ธ ์์์ด์.
๋ค๋ง ์ค์ ๋ก ๋ฐ๋ก ๋ถ์์ ํ๊ณ , ๋ณด๊ธฐ์ ์ข์ ์ํ๋ ์๋์์ด์
ํ๋ก ํธ ์ด๋ฒคํธ๋ GA4 ํน์ฑ์ ํ๋ฃจ ๋จ์๋ก ํ
์ด๋ธ์ด ๋๋์ด ์์ด๊ณ ์์๊ณ ,
๋ฐฑ์๋ ๋ก๊ทธ๋ ๋ ๋ค๋ฅธ ํ
์ด๋ธ์ ์์๊ธฐ์ ํ
์ด๋ธ์ ์กฐ์ธํ๊ณ ๋ถ์ด๊ธฐ์ ๋ฒ๊ฑฐ๋ก์ ์ด์.

์ด ์ํ๋ก ๊ณ์ ๊ฐ๋ฉด ๋ถ์์ ํ ๋๋ง๋ค ์ค๋น ์์
๋ถํฐ ๋ฐ๋ณตํ๊ฒ ๋ ๊ฒ ๊ฐ์์,
๋ถ์์ฉ์ผ๋ก ๋ฐ๋ก ๋ณผ ์ ์๋ ํ
์ด๋ธ์ ํ๋ ๋ฐ๋ก ๋ง๋ค์ด๋๋ ๊ฒ ๋ซ๊ฒ ๋ค๊ณ ํ๋จํ์์ด์.
์๋ณธ ๋ฐ์ดํฐ๋ ๊ทธ๋๋ก ๋๊ณ , ํ๋ก ํธ ๋ก๊ทธ๋ฅผ ์ ๋ฆฌํด์
์ด๋ฒคํธ ๋จ์๋ก ํ ์ค์ฉ ๋ณผ ์ ์๋ staging ํ
์ด๋ธ์ ๋ง๋๋ ๋ฐฉ์์ ์ฐธ์กฐํ์ด์.

CREATE OR REPLACE TABLE `saycheese-484314.analytics_517953491.staging_events_base` AS
SELECT
PARSE_DATE('%Y%m%d', event_date) AS event_date,
TIMESTAMP_MICROS(event_timestamp) AS event_ts,
event_name,
user_id,
user_pseudo_id,
COALESCE(user_id, user_pseudo_id) AS unified_user_key,
-- session
(SELECT value.int_value
FROM UNNEST(event_params)
WHERE key = 'ga_session_id') AS ga_session_id,
(SELECT value.int_value
FROM UNNEST(event_params)
WHERE key = 'ga_session_number') AS ga_session_number,
-- page / custom
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_location') AS page_location,
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'entry_source') AS entry_source,
-- device / geo
device.category AS device_category,
device.operating_system AS operating_system,
geo.region AS region
FROM `saycheese-484314.analytics_517953491.events_*`
WHERE event_name IN (
'view_landing',
'view_login',
'click_login',
'complete_login',
'complete_album_joined'
);
๊ทธ๋ผ ์ด์ ํ
์ด๋ธ๋ช
์ ๋ฐ๊พธ์ง ์๊ณ ๋ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๊ณ์ํด์ ์จ์
๋ถ์ํ๊ธฐ ํธํ ํ๊ฒฝ์ด ๋๊ฒ ์ฃ !
์ด ๊ณผ์ ์์ COALESCE๋ฅผ ์ผ์ด์
๋ก๊ทธ์ธ์ ํ๊ธฐ ์ ๊ณผ ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ก๊ทธ์ธ ์ ์ ์ ์ ๋ค์ pseudo_id๋ฅผ ๋ฐ๊ณ ,
๋ก๊ทธ์ธ์ ํ ๋ค์๋ user_id๊ฐ ์๊ธฐ๊ฑฐ๋ ์.
(๋ก๊ทธ์ธ์ ํ์ง ์๊ณ ์ดํํ ์ ์ ๋ค์ pseudo_id๋ง ์๊ณ , user_id๊ฐ null์ด์์.)
user_id, user_key, user_pseudo_id ๊ฐ์ ๊ฐ๋ค์ ํ๋์ ๋ํ ์ปฌ๋ผ์ผ๋ก ๋ฌถ์ด์คฌ๊ณ ,
์ด๋ฒคํธ ์ด๋ฆ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋๋ก ์ ๋ฆฌํ์์ด์.
์ด๋ ๊ฒ ํด๋๋๊น ์ด๋ฒคํธ๊ฐ ์ด๋์ ๋ค์ด์๋์ง๋ฅผ ํฌ๊ฒ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋ฐ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ํ ์ ์์์ด์.
์ ์ด์ ์ด๋ฒคํธ ์์ง์ ์์ฒญํ ๊ฒ ๊ธฐํ์์๊ธฐ์ ๊น๋ํ๊ฒ ์์ํ ์ ์์์ง๋ง
๋ฐ์ดํฐ ํ์ด ํ์ ๋ ์ํฉ์์๋ ๊ฐ์ฅ ๋จผ์ ํด์ผํ๋ ์ง๋ฌธ์ '๊ทธ๋์ ๋ฌด์์ ๋ณด๊ณ ์ถ์๊ฐ?'์์.
- Metadata๋ก ์์ง๋ ํผ์ณ๋ฅผ ํ์ธํ๋ค (๋๋ฌด ๋ฐ์ฐํ์ง ์๋๋ก Anchoring)
- ํ์ธํ๊ณ ์ถ์ ๋ฌธ์ ์ ๋ํ ๊ฐ์ค์ ๋ง๋ ๋ค
- ๊ฐ์ค์ ํผ์ณ๋ฅผ ์ด์ฉํด์ ํํํ๋ค
์ ๊ณผ์ ์ด๋๊น์. ๋ค๋ค์ต์ ์ด ์๋๊ฑฐ๋ ์.

GA4 raw ํ
์ด๋ธ์๋ ์๊ฐ๋ณด๋ค ์ปฌ๋ผ์ด ์ ๋ง ๋ง์๋๋ฐ,
์ง๊ธ ๋จ๊ณ์์ ๋ฐ๋ก ์ฐ์ง ์์ ์ ๋ณด๋ค์ staging ํ
์ด๋ธ์์๋ ์์ ์ ์ธํ์์ด์.
์ด์ฐจํผ ํ์ธํ๊ณ ์ ํ๋ ๊ฐ์ค์ ๋ช
ํํ์ด์, ๊ณจ๋ผ๋ด๋ ๊ฒ๋ ์ฌ์ ๋ ๊ฒ ๊ฐ์ต๋๋ค
(thx to ๋ฏผ์ ..)

์ธ์ ๋ฐ์ํ๋์ง, ๋๊ฐ ์ด๋ค ํ๋์ ํ๋์ง,
์ด๋ค ์จ๋ฒ์ด๋ ์ฌ์ง๊ณผ ๊ด๋ จ๋ ์ด๋ฒคํธ์ธ์ง ์ ๋๋ง ๋จ๊ธฐ๊ณ ๋๋จธ์ง๋ ๊ณผ๊ฐํ๊ฒ ๋์ด๋์ด์.
์๋ณธ์ ๊ทธ๋๋ก ๋จ์ ์์ผ๋๊น, ๋์ค์ ํ์ํด์ง๋ฉด ๋ค์ ์๋ณธ์ ์ฐธ์กฐํ๋ฉด ๋ฉ๋๋ค.
์ฆ, ์ด๋๊น์ง ํ ๊ฑธ ์ ๋ฆฌํ์๋ฉด
- ์ด๋ฒคํธ ํ ์ด๋ธ์ UNIONํ๋ค (์๋๋ก ๊ธธ๊ฒ ๋์ฌ ๋ถ์ธ๋ค)
- ์ํ๋ ํผ์ณ๋ฅผ ์ ํํ๊ณ ์ ์ ํ๋ค
์ธ๊ฑฐ์ฃ .
๋ง์ง๋ง์ผ๋ก ์ด ์ ๋ฆฌ ๊ณผ์ ์ BigQuery์ Scheduled Query๋ก ์ค์ ํด์
๋งค์ผ ์๋์ผ๋ก ๋์๊ฐ๊ฒ ๋ง๋ค์ด๋์์ด์.

์ด์ ๋ ํ๋ก ํธ๋ก๋ถํฐ ์ ๋ก๊ทธ๊ฐ ์์ ์ ๋ค์ด์ค๋ฉด,
์๋ฒฝ 2์์ ๊ฐ์ ํ
์ด๋ธ๋ก UPDATE๊ฐ ๊ทธ๋๊ทธ๋ ๋๊ธฐ ๋๋ฌธ์
ํ
์ด๋ธ์ ๋ณ๊ฒฝํ ํ์ ์์ด, ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ํตํด ๋งค์ผ์ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ์ ์๋ต๋๋ค :)

๋ค์ ๊ธ์์๋ ์ด ํ
์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์ค์ ๋ก ํผ๋์ ์ด๋ป๊ฒ ์ง๋ดค๋์ง,
์ด๋ค ์ง๋ฌธ๋ค์ ๋์ง ์ ์์๋์ง ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํด์.
๊ทธ๋ผ ๋น ๋น ์ด ~~
๊ธ ํฌ๋งท์ด '์?' ์ '์ด๋ป๊ฒ?'๊ฐ ์ ์ ๋ฆฌ๋์ด ์์ด์ ํฅ๋ฏธ๋ก์ ์ต๋๋ค. ํฌํด ์์ ๋๋st