카테고리 없음

분석 테이블 선정_2026.04.17(금)

nom_de_plume 2026. 4. 17. 21:21

회의 일시
- 오전 9:31 2026-04-17 ~

회의 주제
- 분석용 테이블 설계 방향 정리
- 퍼널 분석 중심축 확정
- 테이블별 1행 기준과 조인 기준 정리
- 운영/성과/행동/재무 분석 구조 분리

현재 상태
- 아직 분석용 테이블은 실제로 만들지 않았음.
- 현재 단계는 어떤 테이블을 어떤 기준으로 만들지 설계·구상하는 단계임.
- 따라서 지금 가장 중요한 것은 컬럼을 많이 모아 한 번에 붙이는 것이 아니라, 각 테이블의 행 기준과 조인 기준을 먼저 확정하는 것이라고 정리함.

1. 전체 방향 정리
- 기존에는 바로 최종 분석용 테이블을 만들고 그 위에서 분석하는 흐름을 생각했음.
- 그러나 추가 피드백을 반영한 결과, 현재 데이터는 테이블마다 1행의 의미가 다르기 때문에 처음부터 하나의 큰 분석 테이블로 합치면 중복 집계나 해석 왜곡이 발생할 위험이 크다고 판단함.
- 따라서 먼저 원천 테이블별 역할과 1행 기준을 정리하고, 그 위에서 목적별 분석 테이블을 따로 만드는 방향으로 정리함.

2. 기본 설계 원칙
- 광고목록, 광고참여정보, 광고적립, 시간대별 광고리포트는 서로 행 기준이 다르므로 한 번에 직접 합치지 않음.
- 같은 기준끼리 먼저 맞춘 뒤, 분석 목적에 따라 별도로 사용함.
- 특히 ads_idx만으로 단순 조인했을 때 중복이 생기지 않는지, click_key 기준인지 rwd_idx 기준인지, 시간대별 광고리포트처럼 이미 집계된 테이블을 사건 단위 테이블에 바로 붙여도 되는지 먼저 점검하기로 함. (
- 또한 ads_code는 운영 중 변경되거나 재참여 구조에 따라 달라질 수 있으므로, 광고 비교의 기본 키는 ads_idx로 두는 것이 더 안전하다고 정리함.

3. 원천 테이블 기준 정리
- 광고참여정보는 click_key 1건을 1행으로 보는 구조
- 광고적립은 rwd_idx 1건을 1행으로 보는 구조
- 광고목록은 ads_idx 1개를 1행으로 보는 구조
- 시간대별 광고리포트는 rpt_time_date + rpt_time_time + ads_idx + mda_idx 조합이 1행인 집계 테이블
- 따라서 이후 분석 테이블을 만들 때 각 테이블의 역할을 섞지 않는 방향으로 진행하기로 함.

4. 퍼널 분석 방향
- 현재 데이터 구조상 가장 현실적인 메인 퍼널은 “광고참여정보의 클릭 → 광고적립의 적립 완료” 2단계 구조라고 다시 정리함.
- 광고참여정보와 광고적립은 click_key로 연결할 수 있으므로, 클릭 이후 실제 적립 완료까지 이어졌는지 확인하는 구조는 데이터상 성립한다고 판단함.
- 다만 클릭 → 적립 완료만으로 퍼널을 설명하면 다소 단순하게 보일 수 있다는 우려가 있었음.
- 이에 따라 퍼널 자체를 무리하게 늘리기보다, 2단계 퍼널을 유지하되 시간대, 광고 유형, 보상 수준, 재참여, 코호트 분석을 함께 붙여 해석력을 보완하는 방향으로 정리함.
- 또한 “적립”이라는 표현은 혼동될 수 있으므로, 가능하면 “리워드 적립 완료” 또는 “적립 완료”로 통일하기로 함.

5. 퍼널 보완 해석 방향
- 퍼널 보완 해석에는 광고적립의 ctit를 활용하기로 함.
- ctit는 클릭부터 적립 완료까지 걸린 시간 차이를 보여주는 컬럼이므로, 완료까지 빠르게 이어지는 광고와 오래 걸리는 광고를 비교하는 보조 지표로 활용 가능하다고 정리함.
- 다만 ctit가 길다고 해서 광고 난이도 때문인지, 적립 처리 지연 때문인지, 오류 때문인지 바로 단정해서는 안 된다고 봄.
- 따라서 ctit는 원인 판정 지표가 아니라 퍼널 해석을 보완하는 시간 지표로 사용하는 것이 적절하다고 정리함.
- 재참여 여부 또한 퍼널 단계 안에 직접 넣기보다 별도 해석 축으로 두는 것이 더 자연스럽다고 정리함.

6. 전체 분석 흐름
- 전체 분석 흐름은 아래 순서로 정리함.
1) 클릭 대비 적립 완료 비율 확인
2) 광고 유형별 / 보상금액별 / 시간대별 차이 비교
3) 재참여 및 반복 참여 패턴 확인
4) 어떤 광고가 단순 클릭이 아니라 실제 적립 완료와 반복 참여를 유도하는지 해석
- 즉, 단순 클릭 수 상위 광고를 찾는 것이 아니라 전환, 지속성, 운영 효율을 함께 보는 방향으로 분석을 진행하기로 함.

7. 메인 퍼널 분석 테이블 방향
- 메인 퍼널 분석 테이블은 클릭 기준으로 보는 것이 가장 자연스럽다고 정리함.
- 행 기준은 “광고참여정보의 click_key 1건 = 1행”으로 둠.
- 구조는 광고참여정보를 중심으로 두고, 광고적립을 click_key 기준으로 left join 하여 “이 클릭이 적립 완료까지 이어졌는가”를 보는 방향으로 생각함.
- 주요 목적은 클릭 이후 리워드 적립 완료까지의 전환 분석임.
- 현재 후보 컬럼은 다음과 같음.
-------------------------------------------------------------------------------------
· click_key (클릭키) **PK
· ads_idx (광고 번호)
· dvc_idx (참여한 기기 고유번호)
· mda_idx (광고를 소비한 매체 번호)
· rwd_idx (적립 row 고유키)
· click_date (클릭 일시)
· click_time (클릭 시간)
· regdate (광고 참여완료 일시)
· ctit ((지급-클릭) 지연시간(초))
· ads_type (1.설치형,2.실행형,3.참여형,...)
· ads_category (아이브에서 구분해둔 광고 카테고리)
· ads_save_way [광고 목록 table] (받기, 다운로드, 설치 후 실행 etc)
· ads_reward_price (유저에게 준 리워드 금액)
· ads_rejoin_type (재참여 가능 타입)
-----------------------------------------------------------------------------------
- ads_type, ads_category, ads_save_way, ads_reward_price, ads_rejoin_type은 광고목록에서 ads_idx 기준으로 붙이는 컬럼으로 정리함.
- ads_rejoin_type은 NONE, ADS_CODE_DAILY_UPDATE, REJOINABLE로 구분되므로, 재참여 분석 시 단순 참여수만 보는 것이 아니라 원래 재참여가 가능한 광고인지 함께 봐야 한다고 정리함.
- 여기에 완료 여부, 요일, 시간대, 보상금액 구간 등의 파생변수를 추가하는 방향을 검토함.
- 다만 시간대별 광고리포트는 메인 퍼널 분석 테이블에 직접 붙이지 않고, 비교·검증용 집계표로 따로 활용하는 것이 적절하다고 정리함.

8. 광고 성과 비교용 테이블 방향
- 광고 성과 비교용 테이블은 “광고 1개 = 1행” 구조로 별도 구성하는 것이 적절하다고 정리함.
- 목적은 개별 유저 행동을 보는 것이 아니라 광고 단위 성과를 비교하는 것임.
- 현재 후보 컬럼은 다음과 같음.
-----------------------------------------------------------------------------------
· ads_idx (광고 번호) (PK)
· ads_name (광고키)
· ads_type (1.설치형, 2.실행형, 3.참여형, etc)
· ads_category (아이브가 구분해둔 광고 카테고리)
· ads_save_way [광고 목록 table] (받기, 다운로드, 설치 후 실행 etc)
· ads_reward_price (유저에게 준 리워드 금액)
· ads_order (광고 노출 순서 / 숫자가 높을수록 상단)
· ads_rejoin_type (재참여 가능 타입)
**파생**
· click_cnt = count(click_key) (클릭수)
· rwd_cnt 또는 complete_cnt = count(rwd_idx) (적립 완료 수)
· avg_ctit = avg(ctit) (평균 지연시간)
· total_reward_cost = sum(ads_reward_price) group by ads_idx, ads_name (광고 당 지불한 총 리워드 금액)
-----------------------------------------------------------------------------------
- 이 테이블은 광고목록 원본이 아니라, 광고목록에 광고참여정보와 광고적립 집계를 붙인 결과 테이블로 이해하는 것이 맞다고 정리함.
- ads_order는 광고 노출 순서이며 숫자가 높을수록 상단이므로, 광고 성과 비교 시 완전히 제외하지 않고 보조 설명 변수로 함께 두는 것이 적절하다고 봄.
- 다만 클릭 수나 완료율만으로 광고 성과를 단정하는 것은 위험하다고 정리함.
- 또한 ads_reward_price가 높은 광고는 원래 난도가 높거나 참여 장벽이 큰 광고일 수 있으므로, 보상금은 ads_type, ads_category와 함께 묶어서 해석해야 한다고 봄.

9. 광고 × 노출순서 테이블 방향
- 동일 광고라도 노출 순서에 따라 성과 차이가 날 수 있으므로, 광고 단위 성과 테이블과 노출 순서 효과 분석 테이블은 분리하는 것이 맞다고 정리함.
- 이 테이블의 행 기준은 “광고 × 노출순서 조합 = 1행”으로 둠.
- 목적은 광고 자체의 성과와 노출 위치 효과를 분리해서 보기 위함임.
- 따라서 광고 단위 성과 비교는 광고 단위로 보고, 노출 순서 영향은 별도 테이블에서 EDA로 검토하는 방향으로 정리함.

10. dvc_idx 기준 일자별 활동 테이블 방향
- 기존에는 유저 × 일자 테이블처럼 생각했으나, 이번 회의에서는 dvc_idx를 실제 user_id처럼 보면 위험하다는 점을 반영함.
- 한 사람이 여러 기기를 사용할 수 있기 때문에 dvc_idx는 유저의 확정 PK라고 보기 어렵다고 정리함.
- 또한 이번 공개 데이터에는 유저 세그먼트용 성별, 나이, 관심사 등 매체사 데이터가 포함되지 않았으므로, 유저 수준 세그먼트를 확정적으로 분석하는 데는 한계가 있다고 봄.
- 따라서 이 테이블은 “유저 × 일자”보다는 “dvc_idx 기준 일자별 활동 테이블”로 보는 것이 더 안전하다고 정리함.
- 이 테이블은 리텐션, 코호트, 활동성 기반 구분, 반복 참여 분석 등에 활용 가능하다고 봄.
- 다만 발표나 문서에서는 반드시 “실제 유저 분석이 아니라 dvc_idx 기반 분석”이라는 한계를 명시하기로 함.
-----------------------------------------------------------------------------------

  • dvc_idx (pk) (참여한 기기 고유번호)
  • click_date → 유저가 활동한 날짜 (pk)

(클릭 일자 = 광고 참여 일시)

  • mda_idx → 광고를 소비한 매체 번호(pk)
  • click_cnt = count(click_date) (클릭 수)
  • complete_cnt = count(rwd_idx) (적립 완료 수)
  • 참여 광고 수 = count(distinct ads_idx)
  • 참여 매체 참여 수 = count(distinct mda_idx)
    • 참여 매체 종류 알 수 있으면 더 좋음 (mda_idx)
  • 처음 클릭 시간(click_day) & 마지막 클릭 시간 (max(click_date))
    • 활동시간 확인 가능
  • avg_ctit = avg(ctit) (리워드 평균 지급 시간)
  • median_ctit = median(ctit) (리워드 지급 시간 중앙값)
  • min_ctit = min(ctit) (리워드 지급 시간 최소값)
  • max_ctit = max(ctit) (리워드 지급 시간 최대값)

-----------------------------------------------------------------------------------

11. 기준 날짜 사용 원칙(유저 일자 테이블)
- click_date와 regdate는 섞어 쓰지 않고 목적별로 구분해 사용해야 한다고 정리함.
- click_date는 클릭 수, DAU, 재방문, 행동 관찰 같은 지표에 적합함.
- regdate는 완료 수, 적립 처리 시점, 완료 기준 성과, 마진 발생 시점 같은 지표에 적합함.
- 같은 테이블 안에 두 날짜를 둘 수는 있지만, 해석 기준은 분리해서 명확히 적기로 함.

12. 캠페인 캘린더 × 일자 테이블 방향
- 광고 운영기간을 일자 단위로 보기 위한 테이블도 별도로 필요할 수 있다고 정리함.
- 행 기준은 “광고 × 날짜 = 1행”으로 둠.
- 구조는 광고목록에서 광고 운영기간 캘린더를 만들고, 광고참여정보와 광고적립을 각 날짜 기준으로 집계해 붙이는 방향으로 생각함.
- 이 테이블은 광고 시작 후 며칠 차부터 반응이 오는지, 운영 초반/중반/후반 성과가 어떻게 다른지, ads_day_cap이 운영 효율과 관련이 있는지를 보는 데 적합하다고 봄.
- 다만 ads_day_cap은 광고목록에 있는 광고 속성값이므로, 특정 날짜의 실제 운영 상태를 직접 보여주는 값으로 과하게 해석하지 않기로 함.
- 따라서 ads_day_cap은 우선 핵심 변수보다 광고 레벨 flag로 두고 추가 확인하기로 함.

-----------------------------------------------------------------------------------

1. 캠페인(광고 운영) 날짜 캘린더를 생성한다
- ads_idx (광고 고유 키)
- ads_sdate (광고 시작일)
- ads_edate (광고 종료일)

2. 클릭이랑 완료 로그는 따로 집계한다
- ads_idx + 날짜 기준으로 그룹화
- date(click_date), date(regdate)
- click_cnt = (count(distinct click_key))
- complete_cnt = (count(distinct rwd_idx))

3. 2번에서 집계한 테이블을 캘린더에 left join
=> date테이블을 기준으로 집계 테이블을 left join

-----------------------------------------------------------------------------------

- ads_idx (광고 보유 키) **PK
-click_date (클릭 일시)**PK
-reward_regdate (광고 참여완료 일시)
- ads_name (광고명)
-ads_type (1.설치형,2.실행형,3.참여형,...)
- ads_category (광고 카테고리)
- ads_sdate (광고 시작일)
- ads_edate (광고 종료일)
** 파생 **
- 캠페인 시작 이후 N일차 = DATEDIFF('day', CAST(ads_sdate AS DATE), CAST(click_date AS DATE)) + 1 AS campaign_n_day (1,2,3,......n일차)
- 캠페인 전체 운영기간
- ads_day_cap (데일리캡 사용 여부 - 매일매일 광고를 특정갯수 오픈) - “y”,”n” 값만 출력하는 flag
rpt_time_clk (클릭 수)
완료 카운트 (rpt_time_turn) (전환 수)
- 완료율
- day_cap 비율 = count(day_cap==’y’) / count(day_cap)
-----------------------------------------------------------------------------------


13. 재무 테이블 방향
- 재무 관련 분석은 별도 테이블로 분리하는 것이 적절하다고 정리함.
- 행 기준은 “광고적립의 rwd_idx 1건 = 1행”으로 둠.
- 조인 기준은 click_key로 광고참여정보와 연결하고, ads_idx로 광고 속성을 붙이는 구조를 생각함.
- 현재 후보 컬럼은 다음과 같음.
-----------------------------------------------------------------------------------
· rwd_idx (적립 row 고유키)**PK
· click_key (클릭키)
· ads_idx (광고번호)
· mda_idx (광고를 소비한 매체 번호)
· ctit (지연시간)
· regdate (광고 참여완료 일시)
· show_cost (광고주 단가)
· adv_cost (광고 단가)
· earn_cost (매체사 단가)
· rwd_cost (유저 지급 단가)
** 파생 **
· 아이브 순마진(adv_cost - earn_cost)
-----------------------------------------------------------------------------------
· -- 아이브 마진율((adv_cost - earn_cost) / adv_cost)
· -- 매출 확보율(sum(adv_cost) / sum(show_cost))
-----------------------------------------------------------------------------------
- 금액 해석은 광고주 보여주기 금액, 광고 소진 금액, 매체사 수익 금액, 유저 리워드 금액을 서로 다른 관점의 금액으로 구분해 봐야 한다고 정리함.
- 이 프로젝트에서는 광고주 관점의 ROAS보다 아이브 관점의 마진, 마진율, 확보율 중심으로 해석하는 것이 더 현실적이라고 판단함.
- 또한 시간대별 광고리포트는 이미 집계된 테이블이므로 재무 테이블에 직접 조인하지 않고, 같은 기준으로 다시 집계하거나 비교용 집계표로 따로 활용해야 한다고 정리함.

14. 이상치 및 어뷰징 관련 정리
- dvc_idx 값 0은 단순 결측이 아니라 웹 기반 참여을 의미한다.
- 특정 dvc_idx에서 참여 건수가 비정상적으로 높은 경우는 어뷰징 의심 신호로 볼 수 있다고 봄.
- 또한 설치형 광고인데 ctit가 지나치게 짧거나, 동일 user_ip에서 반복적으로 다수 참여가 발생하는 경우도 점검이 필요하다고 정리함.
- 다만 현재 우선순위는 이상탐지 전용 테이블을 만드는 것이 아니라, 우선 flag 컬럼 수준으로 관리하고 핵심 분석을 먼저 안정화하는 것이라고 정리함.

15. 보상금액 해석 방향
- ads_reward_price는 낮음 / 중간 / 높음 구간으로 나누어 전환율 차이를 보는 아이디어를 유지함.
- 다만 고보상 광고는 원래 장벽이 높은 광고일 가능성이 크므로, “고보상이라서 성과가 낮다”가 아니라 “고보상 광고는 원래 수행 난이도가 높을 수 있다”는 해석 가능성을 함께 두고 보기로 함.
- 따라서 보상금 효과는 광고 유형, 광고 카테고리, 미션 특성과 함께 해석하기로 함.

16. 코호트 및 리텐션 방향
- 코호트 분석은 프로젝트에 포함하는 것이 적절하다고 정리함.
- 예를 들어 첫 참여 시점, 첫 참여 광고 유형, 첫 참여 시간대, 보상금액 구간 등을 기준으로 이후 재참여 및 유지 패턴을 보는 방식이 가능하다고 봄.
- 광고 관점에서는 광고 시작일 기준으로 오픈 후 며칠째 클릭 수와 완료율이 어떻게 변하는지도 함께 볼 수 있다고 정리함.

17. 모델링 확장 방향
- 모델링은 현재 즉시 적용 범위는 아니며, 분석과 테이블 설계가 안정화된 뒤의 확장 아이디어로 두기로 함.
- 우선순위는 그룹 구분 분석 → 회귀 모델 검토 → 추가 고급 모델 검토 순으로 정리함.
- 즉, 지금 당장은 분석용 테이블과 EDA, 해석 구조를 먼저 안정화하는 것이 우선임.

18. exp_day 및 last_click_time 관련 정리
- 광고참여정보에서 click_date와 exp_day 차이가 30일로 반복적으로 보인다는 점을 확인함.
- 이에 따라 exp_day는 일정 기간의 유효기간 또는 만료 기준일 가능성이 높다고 봄.
- 다만 현재 의미가 명확히 확정되지 않았으므로, 핵심 분석 변수로 바로 사용하지 않고 보류 컬럼으로 두는 것이 적절하다고 정리함.
- 같은 맥락에서 광고목록의 last_click_time도 현재 정의상 광고 단위 마지막 클릭 시점으로 해석하는 것이 우선이며, dvc_idx 수준 행동 지표로 바로 사용하는 것은 주의가 필요하다고 정리함.

19. 광고 성과 해석 시 주의점
- 광고 성과는 클릭 수나 완료율만으로 단정하지 않기로 함.
- 수익성 판단은 광고주, 대행사, 플랫폼, 매체사 등 관점에 따라 달라질 수 있으므로, 팀이 임의 기준으로 단정하는 것은 위험하다고 정리함.
- 따라서 성과 해석에는 외부 근거와 도메인 기준을 함께 확인하고, 가능하면 출처를 명시하는 방향으로 진행하기로 함.

20. 오늘 기준 최종 정리
- 메인 퍼널은 클릭 → 리워드 적립 완료의 2단계 구조로 유지함.
- 다만 시간대, 광고 유형, 보상 수준, 재참여, 코호트 분석을 결합하여 퍼널의 설명력을 보완하기로 함.
- 분석 구조는 광고참여정보 기준 테이블, 광고적립 기준 테이블, 광고 성과 비교용 테이블, 광고 × 노출순서 테이블, dvc_idx 기준 일자별 활동 테이블, 캠페인 캘린더 × 일자 테이블, 재무 테이블로 나누어 정리하기로 함.
- 이상탐지와 고급 모델링은 1차 핵심 범위가 아니라 후순위 확장 범위로 둠.

21. 해야할 일
- 광고참여정보 기준 테이블 정리
· click_key 1건 = 1행 기준으로 사용 컬럼 확정
- 광고적립 기준 테이블 정리
· rwd_idx 1건 = 1행 기준으로 사용 컬럼 확정
- 광고 성과 비교용 테이블과 광고 × 노출순서 테이블 분리 설계
- 실제 유저 분석이 아니라 dvc_idx 기반 분석”이라는 한계를 명시하기로 함.
- click_date 기준 분석과 regdate 기준 분석의 사용 원칙 표로 정리
- 시간대별 광고리포트 직접 조인 방식 재검토
- ads_day_cap / exp_day / last_click_time 의미 추가 확인
- 이상치는 우선 flag 컬럼 수준으로 관리
- 분석용 테이블 생성 후 검토받고, 이후 전처리 및 EDA 설계로 진행
- ads_day_cap, exp_day, last_click_time 의미 파악 필요

22. 다음 진행 방향
- 이번주까지 분석테이블 완료하기.
- 분석용 테이블이 만들어진 뒤 검토를 받고, 이후 전처리와 EDA 설계로 넘어가는 흐름으로 진행함.
- Claude Code 적용은 분석 구조와 핵심 해석이 먼저 정리된 뒤 후순위로 진행하기로 함.

[고민 사항] (확정x 추가 될 수 있음)

- dvc_idx 기반 반복 참여 분석을 “유저 분석”으로 표현해도 되는지 (한계 명시로)

- 어떤 광고가 성과가 좋은 게 광고 자체가 좋아서인지, 아니면 위에 먼저 노출돼서 유리했던 건지 구분을 어떻게 할지