광고 데이터 통합: 데이터 마트 구축 시 필드 정의가 어긋나는 3가지 유형 — 명칭 불일치, 구조적 부재, 의미 불일치
마케팅 데이터 통합, 그중에서도 여러 광고 플랫폼의 데이터를 하나의 데이터 마트로 통합할 때 가장 먼저 무너지는 것은 파이프라인이 아니라 필드의 정의다. 같은 개념이 광고 플랫폼마다 다른 이름을 갖고(명칭 불일치), 한쪽에는 있는 지표가 다른 쪽에는 아예 없으며(구조적 부재), 같은 이름이 반대 방향의 의미를 갖기도 한다(의미 불일치). 세 유형 모두 다수 광고 플랫폼을 하나의 통합 스키마로 구축하며 직접 관측했다. 세 유형을 각 광고 플랫폼의 공식 문서 정의와 함께 정리하고 글 끝에 새 dimension/metric을 스키마에 추가하기 전 검증 체크리스트 6단계로 요약한다.
1. 명칭 불일치 - LinkedIn은 campaign group이 campaign, campaign이 ad group이다
campaign / ad group / ad 계층의 광고 플랫폼별 등가물은 무엇인가? 대부분의 광고 플랫폼은 3계층 구조를 공유하지만 각 층의 이름은 플랫폼마다 다르다.
|
통합 스키마 |
Google ads |
Meta |
Tiktok |
LinkedIn |
DV360 |
DV360 (Youtube & DemandGen) |
Amazon DSP(현) |
Amazon DSP(구) |
|
campaign |
campaign |
campaign |
campaign |
campaign
group |
insertion
order |
insertion
Order |
campaign |
order |
|
ad
group |
ad
group |
ad
set |
ad
group |
campaign |
line
item |
youtube
ad group |
ad
group |
line
item |
|
ad |
ad |
ad |
ad |
creative |
creative |
youtube
ad |
ad |
creative |
(각 열 출처: Meta 캠페인 구조 ·Tiktok 광고 구조 ·LinkedIn Account Structure & Hierarchy ·Amazon DSP 용어집)
함정은 세 가지다.
- 같은 단어가 다른 계층을 가리킨다. LinkedIn의 "campaign"은 다른 광고 플랫폼과 달리 ad group 계층에 해당한다. 이 혼란은 공인된 문제여서 LinkedIn 마케팅 API 공식 문서는 타 플랫폼과의 대응표를 직접 제공한다. campaign group = campaign, campaign = ad group·ad set, creative = ad. 따라서 이름만 보고 같은 계층임을 확신할 수 없고 광고 플랫폼의 전체 구조가 어떤지 확인해야 한다.
- 광고 플랫폼 내에도 서로 다른 계층이 존재한다. DV360은 Google ads의 youtube와 demandgen 캠페인을 지원한다. 같은 광고 플랫폼이라도 youtube와 demand gen은 DV360의 다른 캠페인과 구조가 다르다. DV360은campaign / insertion order / line item / creative의 구조이지만, youtube와 demand gen은campaign / insertion order / line item / youtube ad group / youtube ad의 구조이다. 이는통합 스키마에 광고 구조를 적용할 때 광고 플랫폼 뿐만 아니라 어떤 유형의 캠페인인지도 고려해야 한다는 의미다.
- 명칭은 시점에 따라 바뀐다. Amazon DSP는 계층 이름 전부를 공식적으로 변경했다. 공식 용어집에서 campaign을 설명하는 원문 표현은 "campaign (formerly known as Order on Amazon DSP)"다. 개명 후에도 구 API는 orderId·lineItemId 필드를 유지했고 2025-09-30에야 지원이 종료됐다. UI 명칭과 API 필드명이 다른 시기가 실존했다는 뜻이다. 명칭이 변경된 경우, 변경 전과 변경 후의 이름을 모두 알아야 통합 스키마를 구성할 때 오류를 범하지 않는다.
통합 스키마를 만드는 일은 명칭을 기준으로 매핑하는 데서 그치지 않는다. 어느 계층을 취하고 어느 계층을 버릴지 판단해야 하는 경우도 많다. 예컨대 DV360은 youtube/demand gen 광고 상품 여부에 따라 4~5개의 계층으로 구성된다.
통합 스키마의 계층은 3개로 잡는 게 좋다. 대부분의 광고 플랫폼이 3계층이기 때문이다. 가장 복잡한 플랫폼에 맞춰 5계층으로 잡으면 3계층인 나머지 플랫폼은 4·5번째 계층이 전부 NULL로 남는다.
계층이 3개를 넘는 플랫폼이라면 그중 3개를 선정해 통합 스키마에 맞춘다. 이때 각 계층의 기능을 기준으로 삼는다. campaign은 광고의 목표와 게재 기간, 총 예산을 설정하고 ad group은 오디언스, 지면 타겟팅, ad는 광고 소재와 랜딩 페이지 URL 정보를 포함한다. 좋은 예시가 바로 DV360 내 youtube campaign이다. 계층별 특징을 고려하여 DV360 내 youtube campaign을 매핑한다면 campaign은 insertion order, ad group은 youtube ad group, ad는 youtube ad가 되어야 한다.
DV360은 campaign 계층이 있는데 왜 campaign 계층에 campaign이 아닌 insertion order를 매핑해야 할까? Campaign은 insertion order보다 상위 계층이긴 하지만, 다른 플랫폼에서 규정하는 campaign 계층의 역할은 insertion order에서 정해진다. 광고에 적용되는 목표와 예산, 일정은 모두 insertion order에서 정하기 때문이다. Youtube 광고의 ad group은 youtube ad group이 잘 맞는다. 일반적인 DV360 광고라면 오디언스 타겟팅을 Line item에서 세팅하지만, youtube의 경우 youtube ad group에서 한다. 마지막으로 소재와 랜딩페이지를 세팅하는 ad 층위는 youtube ad여야 한다. 이처럼, 복잡한 계층 구조를 갖는 플랫폼이라도 계층의 일반적인 기능에 맞춰서 3개의 계층으로 통합을 위한 계층의 축소가 가능하다.
2. 구조적 부재 - 플랫폼별 제공 데이터 차이
Google ads에는 Video Start 지표가 없다.
비디오 광고의 재생 "시작" 지표는 광고 플랫폼마다 존재 여부가 다르다. DV360에는 Starts (Video)라는 재생 시작 지표가 있지만 Google ads API에는 재생 시작(0%)을 세는 필드가 존재하지 않는다(metrics 필드 목록).
Google ads에는 없고, DV360에는 있는 Video start를 통합 스키마에는 어떻게 반영해야 할까? 첫 번째 방법은 과감히 생략하는 것이다. 본래 Video start 지표는 그 지표 자체보다는 first-quartile views, midpoint views, third-quartile views, complete views 지표와 연계해야 의미가 있다. 그리고 이 연계 분석은 기준점을 impressions로 옮겨도 그대로 성립한다.
|
Platform |
Creative |
impressions |
video start |
first-quartile views |
midpoint views |
third-quartile views |
complete views |
|
DV360 |
A
video |
105 |
100 |
80 |
50 |
35 |
30 |
|
Google
ads |
A
video |
120 |
null |
90 |
50 |
35 |
20 |
(Google ads가 제공하는 비디오 뷰 4분위 지표는 비율 데이터로 제공되지만, 위 표에서는 impression에 4분위 지표를 곱해 각 구간별 view 수치를 환산했다.)
DV360과 Google ads의 가상의 데이터다. video start 수치 그 자체보다는 video start와 first-quartile views와의 간극이 중요하다. A 비디오의 재생을 시작한 오디언스의 20%가 이탈한다는 의미를 확인할 수 있기 때문이다. 이를 impression으로 기준점을 옮길 경우, video start일 때와 비율은 달라지겠지만 Google ads와 동등 비교가 가능해지는 장점이 있다. 광고 영상이 노출된 이후, 25%에 도달하는 데까지 오디언스가 이탈하는 비율은 Google ads와 DV360 양 플랫폼 모두 산출 가능한 데이터다.
두 번째는 video start 지표를 살리고, Google ads에는 해당 필드에 null 값을 넣는 것이다. 여기서 중요한 것은 Google ads의 video start 필드에 0을 넣으면 안 된다는 점이다. 0과 null은 엄연히 다른 의미를 갖기 때문이다. 0은 데이터를 측정하지만, 발생하지 않았다는 의미고, null은 데이터를 측정하지 않았다는 의미다. 두 번째 방식은 하나의 테이블에 최대한의 데이터를 추가함으로써 풍부한 데이터 제공이 가능하다는 장점이 있다.
둘 중 어느 방법이 더 좋을까? 상황에 따라 다르겠지만, 나는 첫 번째 방법을 선호한다. video start와 impression 수치 사이에 괴리가 존재하지만, 자주 활용하는 metric에 null 값이 있을 경우 많은 불편함을 야기한다. 실제 데이터 마트의 데이터 양은 수백만 행에 달한다. 이 데이터를 SQL로 집계해서 first-quartile views / video start 비율을 구한다고 하면, Google ads 행의 숫자가 first-quartile views에만 추가 되어 크게 왜곡된 수치를 보여줄 수 있기 때문이다. 위 표 수치를 보면 분자는 80 + 90 = 170이지만, SUM이 null을 제외하므로 분모에는 DV360의 100만 남는다. 170 / 100이 되어 비디오의 25%에 도달하는 오디언스의 비율이 170%가 된다. 만약 이 지표가 중요하게 부각될 경우, 두 번째 방식을 선택해야 한다. 이 경우에는 데이터를 활용해 대시보드를 만들 때, 특정 플랫폼이 해당 필드에 null 값을 가질 수 있음을 고려해서 video start 지표를 제공하는 플랫폼에서만 이 지표를 활용하도록 설계해야 한다.
Viewable impression — 지면 구조가 지표 존재를 결정한다
Viewable impression은 광고 플랫폼마다 존재 여부가 다른 지표의 대표 사례다. Viewable impression은 impression과 달리, 그 광고가 사용자 화면에 실제로 보였다고 판정된 경우를 뜻한다. 판정 기준은 광고 측정 인증기관 MRC(Media Rating Council)의 업계 표준을 따르며, Google의 Active View는 디스플레이 광고 50% 노출 1초, 영상 광고 50% 노출 연속 2초를 기준으로 한다.
갈림길은 오디언스가 광고를 보는 시점과 렌더링의 간극이다. DV360, Google ads의 display 광고, TTD와 같이 publisher network에서 광고를 내보내는 플랫폼과 Meta, Tiktok처럼 자사 플랫폼에서 광고를 내보내는 플랫폼은 오디언스가 광고를 보는 시점과 렌더링 사이의 간극이 매우 다르다.
|
Platform |
광고 지면 |
광고 렌더링 시점 |
viewable impression 지표명 |
|
Google
ads (Display) |
publisher
network |
page
load |
Viewable
impr. |
|
DV360 |
publisher
network |
page
load |
Viewable
Impressions |
|
Meta |
facebook
, instagram |
광고
노출 직전 |
미제공 |
|
Tiktok |
tiktok |
광고
노출 직전 |
미제공 |
퍼블리셔의 웹 페이지는 하나의 긴 문서이고 광고 슬롯이 여러 개다. 폴드 아래(모니터에 보이지는 않는 영역)에 있는 슬롯도 같은 문서 안에 들어가므로, 사용자가 그만큼 스크롤하지 않으면 한 번도 화면에 들어오지 않은 광고가 이미 그려져 있는 상태가 된다. 그래도 impression은 집계된 뒤다.
Viewable impression은 웹페이지의 일부가 스크린에 표시될 때 측정하는 것이다.
source: https://learn.microsoft.com/en-us/xandr/industry-reference/introduction-to-viewability
반면 Meta·Tiktok 같은 소셜 플랫폼의 피드는 지면 성격이 다르다. 스크롤이 그 항목에 도달해야 카드가 만들어지므로 화면 밖에 그려진 광고라는 상태가 애초에 존재하지 않는다. Meta의 impressions 공식 정의부터가 "화면에 표시된 횟수(the number of times your ads were on screen)"인 이유다. 노출 집계 자체가 온스크린 기준이므로 viewable impression 지표의 중요성이 상대적으로 낮다. 지표의 존재가 지면의 성격에서 결정된다는 뜻이다.
Viewable impression과 impression의 차이는 비용 문제다. 아무리 impression 수치가 높더라도, viewable impression 수치가 나쁘다면, 실제로 그 광고를 본 사람은 별로 없다는 뜻이다. 이는 곧 사람들에게 광고를 보여주기 위해 사실은 더 비싼 비용을 지불한다는 의미와 같다. 이로 인해 vCPM 입찰의 과금 단위와 viewability 보장 계약의 기준이 생겼다.
통합 스키마 설계에도 판단이 필요하다. viewable impression을 제공하는 광고 플랫폼이라면 impression의 보완 지표로 추가하는 것이 기본이다. non-viewable impression에 비용을 허비하지 않는 것이 중요한 비즈니스라면 해당 광고 플랫폼의 impression 컬럼에 viewable impression을 매핑하는 설계도 유효한 선택지다. 단, 이 경우 광고 플랫폼 간 impression 비교 기준이 달라지므로 매핑 근거를 데이터 사전에 남겨야 한다. 지표가 있느냐 없느냐만 확인해서는 매핑을 결정할 수 없다. 그 지표가 그 광고 플랫폼에서 왜 존재하는지까지 알아야 한다.
3. 의미 불일치 - 같은 이름, 반대 방향
DV360의 Revenue는 매출이 아니다. 대부분의 광고 플랫폼에서 Revenue는 광고로 인한 구매 금액(전환 가치)이지만 DV360의 Revenue는 공식 정의상 "impression을 구매·게재하는 데 지출된 금액"이다. 다른 광고 플랫폼의 cost에 해당한다.
DV360에서 광고 비용과 관련한 지표는 총 4가지이다. 지표마다 비용을 구성하는 항목에 차이가 있는데, 상세 내용은 다음과 같다 (Metrics in reports ·Revenue models).
|
지표 |
포함 범위 |
|
Media Cost |
익스체인지
노출 구매 원가 |
|
Total Media
Cost |
Media
Cost + Data fee + 파트너 비용 |
|
Billable Cost |
Media
Cost + invoiced 파트너 비용 (인보이스 청구액) |
|
Revenue |
Total
Media Cost + 마크업 (클라이언트 청구가) |
대부분의 플랫폼에서는 광고 비용을 의미하는 지표에 'spend'나 'cost' 단어를 그대로 사용하거나 최소한 이 단어를 포함하는데, DV360의 Revenue는 다르다. 이름만 보고 Revenue를 전환 가치 컬럼에 매핑하면 ROAS(광고비 대비 전환 가치)가 지출/지출이 되어 지표 자체가 무너진다.
통합 스키마를 구성한다면 다른 플랫폼의 광고 비용과 구성 항목을 맞춰야 한다. 가령 TTD에서는 순수 광고 비용을 의미하는 지표를 사용하고, DV360에서는 Revenue를 사용한다면 두 플랫폼 간 성과 비교가 어려워진다. Revenue는 광고 비용 외에 data fee와 파트너 비용, 마크업이 추가된 항목이기 때문이다. 상황에 따라 다르겠지만, 통합 스키마에서 광고 플랫폼의 비용 지표는 가능하다면 이 플랫폼을 운영할 때 드는 총 비용을 넣는 것이 좋다. 만약 어떤 플랫폼이 광고 비용 외에 추가 수수료가 15%라고 가정하면, 수수료가 전혀 없는 플랫폼 대비 15%의 비효율을 감수하고 광고를 시작하는 것이다. 그런 의미에서 DV360의 광고 비용 관련 지표는 Revenue가 가장 적합하다.
결론: 새 디멘션·메트릭 추가 전 검증 체크리스트
디지털 마케팅 데이터 마트를 구축하려면 마케팅 도메인과 각 플랫폼별 특성, 지표가 의미하는 바를 알고 정교하게 구상해야 한다. "정교하게"를 구체화하면 다음 여섯 가지다. 15개 광고 플랫폼(Meta, Google ads, DV360, TTD, Tiktok, CM360, Pinterest, Snapchat, Teads, Bing, X, Naver, Kakao, Amazon DSP, Amazon Sponsored Ads)를 하나의 스키마에 통합하며 만든 체크리스트다. 본문 사례는 그중 정의 충돌이 가장 극명했던 광고 플랫폼에서 선별했다.
- 명칭 검증 — 같은 개념이 이 광고 플랫폼에서는 무슨 이름인가? 명칭은 시점 기준으로 재검증한다(Amazon DSP 3계층 개명). UI 명칭과 API 필드명이 다를 수 있다(구 API orderId 잔존).
- 의미상 등가물 탐색 — 같은 이름이 없다고 지표가 없는 게 아니다(LinkedIn campaign group = campaign). 진짜 없으면 NULL 처리 원칙을 먼저 정한다.
- 의미 검증 — 이름이 같아도 정의 원문을 공식 문서에서 확인한다. 같은 이름이 반대 방향일 수 있다(DV360 Revenue = 타 광고 플랫폼의 cost).
- 단위·기준 검증 — 마이크로 단위(cost_micros: 1,000,000 = 통화 1단위), 비율형 vs 카운트형(quartile), 기여 기간(기본 7d_click+1d_view), 수수료 포함 범위(Media Cost ⊂ Total Media Cost ⊂ Billable / Revenue).
- 카디널리티 검증 — 의미가 같아도 possible value 규모가 극단적으로 다르면 같은 테이블에 쌓지 않는다. Meta placement는 30개 미만의 닫힌 목록이지만 Google ads detail_placement_view.placement는 URL·앱 ID의 개방형 문자열(수천~수만) → 별도 테이블 적재를 검토한다.
- 문서화 — 확정된 매핑 정의를 데이터 사전으로 남겨 다음 광고 플랫폼 추가 때 재사용한다.
자주 묻는 질문
Q. DV360의 Revenue는 무슨 뜻인가? 매출(전환 가치)이 아니라 노출 구매·게재에 지출된 금액이다. Total Media Cost에 마크업을 더한 클라이언트 청구가로, 다른 광고 플랫폼의 cost에 해당한다. (DV360 Metrics in reports)
Q. Google ads에서 영상 재생 시작 수를 볼 수 있나? API에 재생 시작(0%) 카운트 필드는 없다. quartile 비율(video_quartile_p25_rate 등)과 조건부 집계인 video_views만 제공된다. 시작 카운트가 필요하면 DV360의 Starts (Video)처럼 광고 플랫폼별 존재 여부부터 확인해야 한다. (Google ads API metrics)
Q. 광고 플랫폼의 campaign–ad group–ad 계층은 각각 무엇을 결정하나? campaign은 캠페인 목표, ad group은 타깃팅과 입찰, ad는 실제 노출되는 소재를 결정한다. 대부분의 광고 플랫폼은 이 3계층을 공유하지만 각 층의 이름은 광고 플랫폼마다 다르고, 예산을 어느 층에서 설정하는지도 갈린다. LinkedIn·DV360·Amazon DSP는 명칭 자체가 어긋나므로 통합 스키마를 만들 때 층 단위로 등가물을 확인해야 한다.
Q. viewable impression은 왜 광고 플랫폼마다 있거나 없나? viewable impression은 광고가 사용자 화면에 실제로 보였다고 판정된 노출로, 서버가 내보냈다는 사실만 세는 impression과 구분된다. 광고 플랫폼마다 존재 여부가 다른 이유는 지면 구조가 다르기 때문이다. 자사 지면에 노출하는 소셜 플랫폼(Meta 등)은 impression 집계 자체가 온스크린 기준이라 별도 필드가 없다. 퍼블리셔 네트워크에 내보내는 광고 플랫폼은 served와 viewable이 갈라질 수 있어 Google 계열의 경우 Active View(active_view_impressions 등)를 별도 제공한다. (Meta Insights API)
Q. LinkedIn의 campaign은 다른 광고 플랫폼의 campaign과 같은 층인가? 아니다. LinkedIn의 campaign group이 타 광고 플랫폼의 campaign, LinkedIn의 campaign이 타 광고 플랫폼의 ad group에 해당한다. LinkedIn 마케팅 API 문서가 이 대응표를 공식 제공한다.