๐ DMP ์ ์ฌ๊ณ ๊ฐ์ API โ BQ ํ๋ธ ์ถ๊ฐ ์ ์ฌ DevLog
# ๐ DMP ์ ์ฌ๊ณ ๊ฐ์ API โ BQ ํ๋ธ ์ถ๊ฐ ์ ์ฌ DevLog > ์ต์ข
์
๋ฐ์ดํธ: 2026-02-23 KST > ๊ด๋ จ ์ฑํ
: ํ์ฌ ์ธ์
--- ## ๋ฐฐ๊ฒฝ ๋ฐ์ปด ์ค์๊ฐ ํ๊ฒํ
๊ธฐํ์ v1.3์ ์ธ๊ทธ๋จผํธ ํญ๋ชฉ์ ์ฐ๋ฆฌ API๋ก ์๋น์คํ๊ธฐ ์ํด, BQ ์๋ณธ(tb_tam_f1)์
ํต์ฌ ์์ฝ
# ๐ DMP ์ ์ฌ๊ณ ๊ฐ์ API โ BQ ํ๋ธ ์ถ๊ฐ ์ ์ฌ DevLog
> ์ต์ข ์ ๋ฐ์ดํธ: 2026-02-23 KST
> ๊ด๋ จ ์ฑํ : ํ์ฌ ์ธ์
---
๋ฐฐ๊ฒฝ
๋ฐ์ปด ์ค์๊ฐ ํ๊ฒํ ๊ธฐํ์ v1.3์ ์ธ๊ทธ๋จผํธ ํญ๋ชฉ์ ์ฐ๋ฆฌ API๋ก ์๋น์คํ๊ธฐ ์ํด, BQ ์๋ณธ(tb_tam_f1)์์ ๋ฏธ๋ณด์ ์ฐจ์์ ํ๋ธ ์ง๊ณํ์ฌ Supabase์ ์ ์ฌ.
๊ตฌ์กฐ: ๋ฐ์ปด ์ ๋์๋ฒ โ ์ฐ๋ฆฌ API(Edge Function) โ Supabase DB (์ฐ๋ฆฌ๊ฐ API ์ ๊ณต์)
์ํ ๋ด์ฉ
BQ ํ๋ธ 5๊ฐ ์ง๊ณ + Supabase ์ ์ฌ ์๋ฃ
| # | ํ๋ธ | BQ ํ ์ด๋ธ | Supabase ํ ์ด๋ธ | ํ ์ | ์ปค๋ฒ ํญ๋ชฉ |
|---|---|---|---|---|---|
| 1 | ์ง์ญ ์์ธ | cube_region_detail | de_dmp_cube_region_detail | 336,843 | ์๊ตฐ๊ตฌ, ์๋ฉด๋ |
| 2 | ๋๋ฐ์ด์ค | cube_device | de_dmp_cube_device | 396 | ํต์ ์ฌ, ๋ชจ๋ฐ์ผ๋ธ๋๋ |
| 3 | ์นด๋ ์ ์ข | cube_card_category | de_dmp_cube_card_category | 27,346 | ์นด๋ ์น์ธ ์ ์ข (KB์ ์ฉ) |
| 4 | ๊ธ์ก ๊ตฌ๊ฐ | cube_amount_bucket | de_dmp_cube_amount_bucket | 13,561 | ์น์ธ ๊ธ์ก ๊ตฌ๊ฐ |
| 5 | ๊ตํต | cube_transit | de_dmp_cube_transit | 24,773 | ์งํ์ฒ ์ญ, ์นํ์ฐจ (๋ฒ์ค ์ ์ธ) |
FDW Foreign Table ์ถ๊ฐ (5๊ฐ)
bigquery.cube_region_detail
bigquery.cube_device
bigquery.cube_card_category
bigquery.cube_amount_bucket
bigquery.cube_transit
์ฃผ์ ๋ฐ๊ฒฌ์ฌํญ
- ํต์ ์ฌ ์ฝ๋: T=SKT, K=KT, U=LGU+, Z=๊ธฐํ(208๋ง์ผ๋ก ์ต๋)
- ๋ชจ๋ฐ์ผ ๋ธ๋๋: SAMSUNG=84๋ง, Apple=66๋ง, ๋ฏธ์ง์ =171๋ง
- ์ ์ข ๋งคํ์จ: partner_cd โ category_code JOIN 84% ๋งค์นญ (16% ๋ฏธ๋งค์นญ โ ๋ณด๊ฐ ํ์)
- ๊ตํต ํ๋ธ: BUS 64๋งํ(97%) vs ์งํ์ฒ 2.5๋งํ(3%) โ ์งํ์ฒ ๋ง ์ ์ฌ (๊ธฐํ์์์ ๋ฒ์ค '๋ณด๋ฅ')
- ์ง์ญ ์์ธ: ์์ธ 25๊ตฌ 386๋, ๊ฒฝ๊ธฐ 42์๊ตฐ๊ตฌ 622์๋ฉด๋ ํ๋ณด
- ๊ธ์ก ๋ถํฌ: 1๋ง ๋ฏธ๋ง์ด 33.3์ต๊ฑด (๊ตํต ์์ก ํฌํจ), ์ ํ์ ๋กฑํ ์ผ
BQ ๋น์ฉ
ํ๋ธ 5๊ฐ ์ง๊ณ ์คํ: ์ถ์ ~$3~4
๊ธฐํ์ ์ปค๋ฒ๋ฆฌ์ง ์ต์ข
๊ธฐํ์ '๊ฐ๋ฅ' ํญ๋ชฉ 15๊ฐ ์ค 13๊ฐ ์ปค๋ฒ (87%)
๋ณด๋ฅ 2๊ฐ: ๋ชจ๋ฐ์ผ ๋ธ๋๋(๊ธฐํ์๋ ๋ณด๋ฅ), ์น์ธ ํ์(๊ธฐํ์๋ ๋ณด๋ฅ)
์ฐ์ถ๋ฌผ
- ๊ตฌํ๋ฐฉ์ ๋ฌธ์: dmp_segment_api_plan_v2.md
- BQ ํ๋ธ SQL 5๊ฐ (๋ฌธ์ ยง4์ ํฌํจ)
- Supabase ํ ์ด๋ธ 5๊ฐ + FDW 5๊ฐ
๋ค์ ์์ : Phase 2 โ API ๊ตฌํ
์๋ ์์๋ก ์งํ ์์ :
- seg ํค ๋งคํ ํ ์ด๋ธ ์์ฑ (de_dmp_segment_mapping)
- RPC ํจ์ ๊ตฌํ (get_segment_preview โ ๋ค์ฐจ์ ํํฐ + ๊ต์ฐจ ์ถ์ )
- ๊ฐ ๋ณํ ํฌํผ ํจ์ (์ฐ๋ น/์์ผ/์ง์ญ ๋งคํ)
- Edge Function ๋ฐฐํฌ (segment-preview โ form-urlencoded ํ์ฑ)
- ๋ฐ์ปด ์ฐ๋ ํ ์คํธ
์์ฌ๊ฒฐ์ ํ์ (์ฐฐ์ค ํ์ธ)
- seg ํค ์คํ๋ ๋์ํธ ์ ๊ทผ ๊ถํ (๋ฐ์ปด์ ์์ฒญ)
- ๋ฐ์ปด โ ์ฐ๋ฆฌ API ์ธ์ฆ ๋ฐฉ์ (API Key? IP ์ ํ?)
- ์๋ต ์๊ฐ ์๊ตฌ์ฌํญ (์ค์๊ฐ ํ๊ฒํ ์ด๋ฉด <1์ด ํ์)