이 도움말에는 Ad Manager 데이터 전송 보고서를 위한 쿼리 생성 방법의 예가 포함되어 있습니다. 데이터 전송 파일 수신 방법 등 데이터 전송 파일에 대해 자세히 알아보기
이 문서의 이전 이름은 '데이터 전송 설명서'였습니다.
잔여 노출수
NetworkImpressions
의 잔여 노출수
일일 잔여 노출수를 찾으려면 LineItemsID
가 0
인 항목에 대해 NetworkImpressions
에 쿼리합니다. NetworkBackfillImpressions
에 잔여 노출수가 없습니다.
코드
SELECT COUNT(1) AS UnfilledImpressions FROM NetworkImpressions WHERE LineItemID = 0 AND Time >= ‘2020-01-01’ AND Time < ‘2020-01–02’
결과
행 | UnfilledImpressions |
1 | 20000000 |
NetworkRequests
의 잔여 노출수
NetworkRequests
를 쿼리하여 잔여 노출수를 찾을 수도 있습니다. IsFilledRequest
가 false인 요청을 찾습니다. NetworkBackfillRequests
에 잔여 노출수가 없습니다.
코드
SELECT COUNT(1) AS UnfilledImpressions FROM NetworkRequests WHERE NOT IsFilledRequest AND Time >= '2020-01-01' AND Time < '2020-01-02'
결과
행 | UnfilledImpressions |
1 | 20000000 |
URL별 잔여 노출수
Ad Manager 보고에서는 광고 단위 또는 요청된 크기별로 잔여 노출수를 표시할 수 있지만 URL별로는 표시할 수 없습니다. RefererURL
을 포함하면 잔여 노출수를 생성하는 상위 10개 페이지를 찾을 수 있습니다.
코드
SELECT RefererURL, COUNT(1) AS UnfilledImpressions FROM NetworkImpressions WHERE LineItemID = 0 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY RefererURL ORDER BY UnfilledImpressions DESC LIMIT 10
결과
행 | RefererURL |
UnfilledImpressions |
1 | http://example.com/ | 4903691 |
2 | http://example.com/url/a | 748271 |
3 | http://example.com/url/b | 383293 |
4 | http://example.com/url/c | 364355 |
5 | http://example.com/url/d | 326495 |
6 | http://example.net/ | 295346 |
7 | http://example.net/url/a | 291043 |
8 | http://example.net/url/b | 276106 |
9 | http://example.net/url/c | 231169 |
10 | http://example.net/url/d | 194988 |
광고 단위별 잔여 노출수
한 페이지에서 잔여 노출수가 가장 많은 광고 단위를 찾습니다. BigQuery 커넥터를 사용하는 경우 광고 단위 데이터 이동 색인을 사용하여 광고 단위의 이름을 찾습니다. 데이터 이동 색인에는 매일의 광고 단위 데이터가 포함되어 있으므로 데이터 이동 색인 데이터를 하루로 제한해야 합니다.
코드
SELECT AdUnitID, Name AS AdUnitName, COUNT(1) AS UnfilledImpressions FROM NetworkImpressions AS NI INNER JOIN MatchTableAdUnit AS MTAU ON AdUnitID = ID AND LineItemID = 0 AND Time >= '2020-01-01' AND Time < '2020-01-02' AND RefererURL = 'https://example.com/' AND MTAU._DATA_DATE = '2020-01-01' GROUP BY AdUnitID, AdUnitName ORDER BY UnfilledImpressions DESC, AdUnitID LIMIT 10
결과
행 | AdUnitID |
AdUnitName |
UnfilledImpressions |
1 | 95730695 | 마지막 레벨의 이름 A | 1123439 |
2 | 95033015 | 마지막 레벨의 이름 B | 1116622 |
3 | 95033615 | 마지막 레벨의 이름 C | 1102641 |
4 | 95049575 | 마지막 레벨의 이름 D | 772235 |
5 | 95734535 | 마지막 레벨의 이름 E | 744777 |
6 | 95584895 | 마지막 레벨의 이름 F | 27593 |
7 | 95045255 | 마지막 레벨의 이름 G | 7482 |
8 | 95343215 | 마지막 레벨의 이름 H | 1925 |
9 | 94977215 | 마지막 레벨의 이름 I | 19 |
10 | 95033375 | 마지막 레벨의 이름 J | 12 |
노출수
Product
및 DealType
별 노출수
데이터 전송의 Product
및 DealType
필드를 사용하여 '수요 채널', '프로그래매틱 채널' 및 '최적화 유형' 측정기준을 사용하는 Ad Manager 보고서와 유사한 보고서를 생성하세요. NetworkImpressions
(LineItemID
는 0이 아님) 및 NetworkBackfillImpressions
에서 노출수를 선택합니다.
코드
SELECT Product, DealType, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID != 0 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY Product, DealType UNION ALL SELECT Product, DealType, COUNT(1) AS Impressions FROM NetworkBackfillImpressions WHERE Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY Product, DealType ORDER BY Product, DealType
결과
행 | Product |
DealType |
개수 |
1 | Ad Exchange | null | 60000000 |
2 | Ad Exchange | 비공개 입찰 | 2000000 |
3 | 광고 서버 | null | 40000000 |
4 | 광고 서버 | 우선 거래 | 1000000 |
5 | 광고 서버 | 보장 프로그래매틱 | 1200000 |
6 | Exchange 입찰 | null | 15000000 |
7 | Exchange 입찰 | 우선 거래 | 20000 |
8 | Exchange 입찰 | 비공개 입찰 | 500000 |
9 | 우선 검토 | null | 100000 |
보고서 매개변수
Ad Manager 보고에서 동일한 날짜를 사용하여 보고서를 실행합니다. 다음 측정기준과 측정항목을 선택합니다.
- 측정기준:
- 수요 채널
- 프로그래매틱 채널
- 최적화 유형
- 측정항목:
- 총노출수
- 총노출수
결과
행 | 수요 채널 | 프로그래매틱 채널 | 최적화 유형 | 총노출수 |
1 | 공개 입찰 | 공개 입찰 | 기타 모든 트래픽 | 9,000,000 |
2 | 공개 입찰 | 공개 입찰 | 최적화 경쟁 | 7,000 |
3 | 공개 입찰 | 공개 입찰 | 타겟 CPM | 5,993,000 |
4 | 공개 입찰 | 우선 거래 | 기타 모든 트래픽 | 20,000 |
5 | 공개 입찰 | 비공개 입찰 | 기타 모든 트래픽 | 496,000 |
6 | 공개 입찰 | 비공개 입찰 | 최적화 경쟁 | 4,000 |
7 | 광고 서버 | (해당 사항 없음) | 기타 모든 트래픽 | 40,000,000 |
8 | 광고 서버 | 우선 거래 | 기타 모든 트래픽 | 1,000,000 |
9 | 광고 서버 | 보장 프로그래매틱 | 기타 모든 트래픽 | 1,200,000 |
10 | Ad Exchange | 공개 입찰 | 기타 모든 트래픽 | 48,000,000 |
11 | Ad Exchange | 공개 입찰 | 우선 검토 | 100,000 |
12 | Ad Exchange | 공개 입찰 | 최적화 경쟁 | 10,000 |
13 | Ad Exchange | 공개 입찰 | 타겟 CPM | 11,990,000 |
14 | Ad Exchange | 비공개 입찰 | 기타 모든 트래픽 | 1,995,000 |
15 | Ad Exchange | 비공개 입찰 | 최적화 경쟁 | 5,000 |
직접
- 데이터 전송:
Product
=Ad Server
DealType
이null
임- 3행: 40,000,000
- Ad Manager 보고:
- 수요 채널 = '광고 서버'
- 프로그래매틱 채널 = '(해당 사항 없음)'
- 최적화 유형 = '기타 모든 트래픽'
- 7행: 40,000,000
우선 거래
- 데이터 전송:
Product
=Ad Server
DealType
이Preferred Deal
임- 4행: 1,000,000
- Ad Manager 보고:
- 수요 채널 = '광고 서버'
- 프로그래매틱 채널 = '우선 거래'
- 최적화 유형 = '기타 모든 트래픽'
- 8행: 1,000,000
- 데이터 전송:
Product
=Exchange Bidding
DealType
이Preferred Deal
임- 7행: 20,000
-
- Ad Manager 보고:
- 수요 채널 = '공개 입찰'
- 프로그래매틱 채널 = '우선 거래'
- 최적화 유형 = '기타 모든 트래픽'
- 4행: 20,000
보장 프로그래매틱
- 데이터 전송:
Product
=Ad Server
DealType
이Programmatic Guaranteed
임- 5행: 1,200,000
- Ad Manager 보고:
- 수요 채널 = '광고 서버'
- 프로그래매틱 채널 = '보장 프로그래매틱'
- 최적화 유형 = '기타 모든 트래픽'
- 9행: 1,200,000
Ad Exchange 공개 입찰(우선 검토 제외)
- 데이터 전송:
Product
=Ad Exchange
DealType
이null
임- 1행: 60,000,000
- Ad Manager 보고:
- 수요 채널 = 'Ad Exchange'
- 프로그래매틱 채널 = '공개 입찰'
- 최적화 유형 = '기타 모든 트래픽', '타겟 CPM', '최적화 경쟁'
- 10행, 12행, 13행: 48,000,000 + 10,000 + 11,990,000 = 60,000,000
Ad Exchange 비공개 입찰
- 데이터 전송:
Product
=Ad Exchange
DealType
이Private Auction
임- 2행: 2,000,000
- Ad Manager 보고:
- 수요 채널 = 'Ad Exchange'
- 프로그래매틱 채널 = '비공개 입찰'
- 최적화 유형 = '기타 모든 트래픽', '최적화 경쟁'
- 14행 및 15행 합계: 1,995,000 + 5,000 = 2,000,000
공개 입찰 공개 입찰
- 데이터 전송:
Product
=Exchange Bidding
DealType
이null
임- 6행: 15,000,000
- Ad Manager 보고:
- 수요 채널 = '공개 입찰'
- 프로그래매틱 채널 = '공개 입찰'
- 최적화 유형 = '기타 모든 트래픽', '타겟 CPM', '최적화 경쟁'
- 1행, 2행, 3행 합계: 9,000,000 + 7,000 + 5,993,000 = 15,000,000
공개 입찰 비공개 입찰
- 데이터 전송:
Product
=Exchange Bidding
DealType
이Private Auction
임- 8행: 500,000
- Ad Manager 보고:
- 수요 채널 = '공개 입찰'
- 프로그래매틱 채널 = '비공개 입찰'
- 최적화 유형 = '기타 모든 트래픽', '최적화 경쟁'
- 5행 및 6행 합계: 496,000 + 4,000 = 500,000
우선 검토
- 데이터 전송:
Product
=First Look
DealType
이null
임- 9행: 100,000
- Ad Manager 보고:
- 수요 채널 = 'Ad Exchange'
- 프로그래매틱 채널 = '공개 입찰'
- 최적화 유형 = '우선 검토'
- 11행: 100,000
수익
CPM 광고 항목의 수익
NetworkImpressions
파일에는 수익 데이터가 포함되지 않지만 BigQuery 커넥터를 사용하는 경우 광고 항목 데이터 이동 색인을 사용하여 CPM 요율을 확인할 수 있습니다. 또는 Ad Manager API를 사용하여 광고 항목의 요율을 찾습니다. 노출수를 계산하고 요율을 곱하고 1,000으로 나누면 지정된 기간 동안 특정 CPM 광고 항목의 수익을 찾을 수 있습니다. 데이터 이동 색인에는 매일의 광고 단위 데이터가 포함되어 있으므로 데이터 이동 색인 데이터를 하루로 제한해야 합니다.
코드
WITH Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID = 123456789 AND Time >= '2020-01-01' AND Time < '2020-01-11' GROUP BY LineItemID ) SELECT LineItemID, Impressions, CostPerUnitInNetworkCurrency AS Rate, CostType, ((Impressions * CostPerUnitInNetworkCurrency) / 1000) AS Revenue FROM Impression_Data JOIN MatchTableLineItem ON LineItemID = ID WHERE MatchTableLineItem._DATA_DATE = '2020-01-10'
결과
행 | LineItemID |
Impressions |
Rate |
CostType |
Revenue |
1 | 123456789 | 21324 | 3.5 | CPM | 74.634 |
CPD 광고 항목의 수익
CPM 광고 항목과 마찬가지로 광고 항목 데이터 이동 색인 또는 Ad Manager API를 사용하여 광고 항목의 CPD 요율을 찾을 수 있습니다. 데이터 이동 색인에는 매일의 광고 단위 데이터가 포함되어 있으므로 데이터 이동 색인 데이터를 하루로 제한해야 합니다. 특정 CPD 광고 항목의 수익을 찾으려면 노출이 게재된 일수를 계산하고 요율을 곱합니다. 평균 eCPM을 확인하기 위해 게재된 노출수를 포함할 수 있습니다.
코드
WITH Impression_Data AS ( SELECT SUBSTR(Time, 0, 10) AS Date, LineItemID, CostPerUnitInNetworkCurrency AS Rate, CostType, COUNT(1) AS Impressions FROM NetworkImpressions JOIN MatchTableLineItem ON LineItemID = ID WHERE LineItemID = 123456789 AND MatchTableLineItem._DATA_DATE = '2020-01-01' GROUP BY Date, LineItemID, Rate, CostType ) SELECT LineItemID, COUNT(1) AS Days, CostType, Rate, (COUNT(1) * Rate) AS Revenue, SUM(Impressions) AS Impressions, ROUND((COUNT(1) * Rate) / SUM(Impressions) * 1000, 2) AS Average_eCPM FROM Impression_Data GROUP BY LineItemID, CostType, Rate
결과
행 | LineItemID |
Days |
CostType |
Rate |
Revenue |
Impressions |
Average_eCPM |
1 | 123456789 | 5 | CPD | 4000.0 | 20000.0 | 7000000 | 2.86 |
CPC 광고 항목의 수익
CPM 광고 항목과 마찬가지로 광고 항목 데이터 이동 색인 또는 Ad Manager API를 사용하여 광고 항목의 CPC 요율을 찾을 수 있습니다. 데이터 이동 색인에는 매일의 광고 단위 데이터가 포함되어 있으므로 데이터 이동 색인 데이터를 하루로 제한해야 합니다. 지정된 기간 동안 특정 CPC 광고 항목의 수익을 찾으려면 클릭수를 계산하고 요율을 곱합니다. 평균 eCPM을 확인하기 위해 게재된 노출수를 포함할 수 있습니다.
코드
WITH Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID = 123456789 GROUP BY LineItemID ), Click_Data AS ( SELECT LineItemID, CostPerUnitInNetworkCurrency AS Rate, CostType, COUNT(1) AS Clicks FROM NetworkClicks JOIN MatchTableLineItem ON LineItemID = ID WHERE LineItemID = 123456789 AND MatchTableLineItem._DATA_DATE = '2020-01-01' GROUP BY LineItemID, Rate, CostType ) SELECT LineItemID, CostType, Impressions, Clicks, ROUND(Clicks / Impressions * 100, 2) AS CTR, Rate, (Clicks * Rate) AS Revenue, ROUND((Clicks * Rate) / Impressions * 1000, 2) AS Average_eCPM FROM Impression_Data JOIN Click_Data USING (LineItemID)
결과
행 | LineItemID |
CostType |
Impressions |
클릭수 |
CTR |
Rate |
Revenue |
Average_eCPM |
1 | 123456789 | CPC | 140000 | 23 | 0.02 | 15.5 | 356.5 | 2.55 |
vCPM 광고 항목의 수익
CPM 광고 항목과 마찬가지로 광고 항목 데이터 이동 색인 또는 Ad Manager API를 사용하여 광고 항목의 vCPM 요율을 찾을 수 있습니다. 데이터 이동 색인에는 매일의 광고 단위 데이터가 포함되어 있으므로 데이터 이동 색인 데이터를 하루로 제한해야 합니다. 특정 vCPM 광고 항목의 수익을 찾으려면 NetworkActiveViews
에서 조회 가능 노출수를 계산하고 요율을 곱합니다. 평균 eCPM을 확인하기 위해 게재된 노출수를 포함할 수 있습니다.
코드
WITH Active_View_Data AS ( SELECT LineItemID, COUNT(1) AS ViewableImpressions FROM NetworkActiveViews WHERE LineItemID = 123456789 GROUP BY LineItemID ), Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID = 123456789 GROUP BY LineItemID ) SELECT Active_View_Data.LineItemID, CostType, Impressions, ViewableImpressions, CostPerUnitInNetworkCurrency AS Rate, (CostPerUnitInNetworkCurrency * ViewableImpressions / 1000) AS Revenue, ROUND((CostPerUnitInNetworkCurrency * ViewableImpressions / 1000) / Impressions * 1000, 2) AS Average_eCPM FROM Impression_Data JOIN Active_View_Data USING (LineItemID) JOIN MatchTableLineItem ON Active_View_Data.LineItemID = ID WHERE MatchTableLineItem._DATA_DATE = '2020-08-01'
결과
행 | LineItemID |
CostType |
Impressions |
ViewableImpressions |
Rate |
Revenue |
Average_eCPM |
1 | 123456789 | CPMAV | 500000 | 150000 | 10 | 1500.0 | 3.0 |
광고주 수익
지정된 기간 동안 특정 광고주의 수익을 찾으려면 각 광고 항목의 노출수를 계산하고 요율을 곱합니다. 광고 항목 데이터 이동 색인에서 요율을 찾고 회사 데이터 이동 색인을 사용하여 광고주 이름을 찾습니다.
코드
WITH Impression_Data AS ( SELECT AdvertiserID, LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE AdvertiserID = 111222333 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY AdvertiserID, LineItemID ) SELECT AdvertiserID, MTC.Name AS CompanyName, LineItemID, Impressions, CostPerUnitInNetworkCurrency AS Rate, CostType, ((Impressions * CostPerUnitInNetworkCurrency) / 1000) AS Revenue FROM Impression_Data JOIN MatchTableLineItem AS MTLI ON LineItemID = MTLI.ID JOIN MatchTableCompany AS MTC ON AdvertiserID = MTC.ID WHERE MTLI._DATA_DATE = '2020-01-01' AND MTC._DATA_DATE = '2020-01-01'
결과
행 | AdvertiserID |
CompanyName |
LineItemID |
Impressions |
Rate |
CostType |
Revenue |
1 | 111222333 | ABC | 111111111 | 20212 | 5.0 | CPM | 101.06 |
2 | 111222333 | ABC | 222222222 | 58321 | 3.0 | CPM | 174.963 |
3 | 111222333 | ABC | 333333333 | 82772 | 8.5 | CPM | 703.562 |
4 | 111222333 | ABC | 444444444 | 19003 | 3.25 | CPM | 61.7597 |
코드 제공 횟수
대체가 사용 설정된 네트워크에서 데이터 전송은 대체 체인에서 선택한 모든 광고 항목에 대한 코드 제공을 계산합니다. 반면 Ad Manager 보고에서는 대체 체인에서 선택한 첫 번째 광고 항목에 대한 코드 제공 횟수만 계산합니다. 데이터 전송은 컴패니언 광고에 대한 코드 제공도 계산하지만 Ad Manager 보고에서는 이를 계산하지 않습니다. 데이터 전송 보고서를 Ad Manager 보고와 최대한 일치하도록 하려는 경우 VideoFallbackPosition = 0
이고 IsCompanion
이 false
인 경우에만 코드 제공 횟수를 계산하세요. 데이터 전송의 미디에이션 코드 제공 횟수는 Ad Manager 보고의 미디에이션 코드 제공 횟수와 일치하지 않을 수 있습니다. 구현에 따라 데이터 전송과 Ad Manager 보고서의 코드 제공 횟수 간에 기타 차이가 발생할 수 있습니다.
단일 광고주의 광고 항목별 코드 제공 횟수, 노출수, 렌더링 비율
코드 제공이 직접 광고주의 광고 항목에 대한 노출수로 얼마나 자주 전환되는지 확인합니다. 직접 광고주를 살펴보는 중이므로 이러한 코드 제공 횟수는 NetworkCodeServes
에만 있고 노출수는 NetworkImpressions
에만 있습니다.
코드
WITH Code_Serve_Data AS ( SELECT LineItemID, COUNT(1) AS CodeServes FROM NetworkCodeServes WHERE AdvertiserID = 12345678 AND VideoFallbackPosition = 0 AND IsCompanion IS FALSE AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY LineItemID ), Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE AdvertiserID = 12345678 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY LineItemID ) SELECT LineItemID, CodeServes, Impressions, ROUND((Impressions / CodeServes) * 100, 2) AS RenderRate FROM Code_Serve_Data JOIN Impression_Data USING (LineItemID) ORDER BY RenderRate DESC
결과
행 | LineItemID |
CodeServes |
Impressions |
RenderRate |
1 | 1111111111 | 6000 | 2600 | 43.33 |
2 | 2222222222 | 1000000 | 371200 | 37.12 |
3 | 3333333333 | 50000 | 17550 | 35.1 |
4 | 4444444444 | 800000 | 275000 | 34.38 |
5 | 5555555555 | 1500000 | 400000 | 26.66 |
기기 카테고리 및 게재된 광고 크기별 코드 제공 횟수, 노출수, 렌더링 비율
기기 카테고리 및 게재된 광고 크기를 포함하여 한 광고주의 주문 1개의 렌더링 비율이 어떻게 다른지 확인합니다.
코드
WITH Code_Serve_Data AS ( SELECT LineItemID, CreativeSizeDelivered, DeviceCategory, COUNT(1) AS CodeServes FROM NetworkCodeServes WHERE AdvertiserID = 87654321 AND OrderID = 1111111111 AND VideoFallbackPosition = 0 AND IsCompanion IS FALSE GROUP BY LineItemID, CreativeSizeDelivered, DeviceCategory ), Impression_Data AS ( SELECT LineItemID, CreativeSizeDelivered, DeviceCategory, COUNT(1) AS Impressions FROM NetworkImpressions WHERE AdvertiserID = 87654321 AND OrderID = 1111111111 GROUP BY LineItemID, CreativeSizeDelivered, DeviceCategory ) SELECT LineItemID, DeviceCategory, CreativeSizeDelivered, CodeServes, Impressions, ROUND((Impressions / CodeServes) * 100, 2) AS RenderRate FROM Code_Serve_Data JOIN Impression_Data USING (LineItemID, CreativeSizeDelivered, DeviceCategory) ORDER BY LineItemID, CreativeSizeDelivered, DeviceCategory
결과
행 | LineItemID |
DeviceCategory |
CreativeSizeDelivered |
CodeServes |
Impressions |
RenderRate |
1 | 6666666666 | 커넥티드 TV | 동영상/오버레이 | 100 | 40 | 40.0 |
2 | 6666666666 | 데스크톱 | 동영상/오버레이 | 20000 | 9000 | 45.0 |
3 | 6666666666 | 스마트폰 | 동영상/오버레이 | 32000 | 25000 | 78.13 |
4 | 6666666666 | 태블릿 | 동영상/오버레이 | 1000 | 800 | 80.0 |
5 | 7777777777 | 커넥티드 TV | 300x250 | 200 | 190 | 95.0 |
6 | 7777777777 | 데스크톱 | 300x250 | 185000 | 184000 | 99.46 |
7 | 7777777777 | 스마트폰 | 300x250 | 225000 | 220000 | 97.77 |
8 | 7777777777 | 태블릿 | 300x250 | 10000 | 9800 | 98.0 |
9 | 7777777777 | 커넥티드 TV | 300x50 | 50 | 50 | 100.0 |
10 | 7777777777 | 데스크톱 | 300x50 | 1000 | 900 | 90.0 |
11 | 7777777777 | 스마트폰 | 300x50 | 90000 | 80000 | 88.89 |
12 | 7777777777 | 태블릿 | 300x50 | 800 | 750 | 93.75 |
조회가능성
조회가능성 데이터는 ActiveVieweligibleCount
, ActiveViewMeasurableCount
, ActiveViewViewableCount
필드를 사용하여 노출 파일과 ActiveView 파일 모두에서 확인할 수 있습니다. 이러한 필드와 값 설정 방법을 자세히 알아보세요.
지정된 기간의 조회가능성은 파일에서 찾은 값을 합산하거나 개별 이벤트를 통합한 다음 값을 합산하여 계산할 수 있습니다. 아래에서 설명한 것처럼 두 전략 간에 약간의 차이가 발생할 수 있습니다.
발생 가능 노출수, 측정 가능 노출수, 조회 가능 노출수(총합)
지정된 날짜의 발생 가능, 측정 가능, 조회 가능 노출수를 찾습니다. 위에서 설명한 것처럼 노출 파일과 ActiveView 파일을 사용해야 합니다.
코드
DECLARE startdate STRING DEFAULT '2023-01-01 00:00:00';
DECLARE enddate STRING DEFAULT '2023-01-02 00:00:00';
WITH ActiveView_Data AS (
SELECT DeviceCategory, VideoPosition,
SUM(IFNULL(ActiveViewMeasurableCount, 0)) AS ActiveViewMeasurableCount,
SUM(IFNULL(ActiveViewViewableCount, 0)) AS ActiveViewViewableCount
FROM (
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount,
SUM(ActiveViewViewableCount) AS ActiveViewViewableCount
FROM
NetworkActiveViews
WHERE Time >= startdate AND Time < enddate
GROUP BY DeviceCategory, VideoPosition
UNION ALL
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount,
SUM(ActiveViewViewableCount) AS ActiveViewViewableCount
FROM
NetworkBackfillActiveViews
WHERE Time >= startdate AND Time < enddate
GROUP BY DeviceCategory, VideoPosition
)
GROUP BY DeviceCategory, VideoPosition
), Impression_Data AS (
SELECT DeviceCategory, VideoPosition,
SUM(IFNULL(ActiveViewEligibleCount, 0)) AS ActiveViewEligibleCount,
SUM(IFNULL(ActiveViewMeasurableCount, 0)) AS ActiveViewMeasurableCount
FROM (
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewEligibleCount) AS ActiveViewEligibleCount,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount
FROM
NetworkImpressions
WHERE
Time >= startdate AND Time < enddate
AND LineItemID !=0
GROUP BY DeviceCategory, VideoPosition
UNION ALL
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewEligibleCount) AS ActiveViewEligibleCount,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount
FROM
NetworkBackfillImpressions
WHERE
Time >= startdate AND Time < enddate
GROUP BY DeviceCategory, VideoPosition
)
GROUP BY DeviceCategory, VideoPosition
)
SELECT
DeviceCategory,
VideoPosition,
IFNULL(ActiveViewEligibleCount, 0) AS ActiveViewEligibleCount,
IFNULL(i.ActiveViewMeasurableCount, 0) + IFNULL(av.ActiveViewMeasurableCount, 0) AS ActiveViewMeasurableCount,
IFNULL(ActiveViewViewableCount, 0) AS ActiveViewViewableCount
FROM Impression_Data i
FULL JOIN ActiveView_Data av USING (DeviceCategory, VideoPosition)
ORDER BY DeviceCategory, VideoPosition
결과
행 | EligibleImpressions |
MeasurableImpressions |
ViewableImpressions |
1 | 97000000 | 95000000 | 60000000 |
발생 가능 노출수, 측정 가능 노출수, 조회 가능 노출수(결합 노출수 기준)
노출 파일 및 ActiveView 파일의 개별 이벤트를 결합한 다음 값을 합산하여 지정된 날짜의 발생 가능, 측정 가능, 조회 가능 노출수를 찾습니다. 드물게는 조회 가능 Active View 핑이 수신되었지만 노출 핑이 수신되지 않은 경우도 있습니다. ActiveView 데이터를 노출 데이터와 결합하면 위에 표시된 것처럼 측정 가능한 노출수의 차이가 발생하고 첫 번째 검색어와 비교하여 조회 가능 노출수가 더 적을 수 있습니다.
코드
DECLARE startdate STRING DEFAULT '2023-01-01 00:00:00'; DECLARE enddate STRING DEFAULT '2023-01-02 00:00:00'; WITH ActiveView_Data AS ( SELECT CAST(substr(Time, 0, 10) as Date) AS Date, Product, KeyPart, TimeUsec2, SUM(ActiveViewMeasurableCount) AS avAVMC, SUM(ActiveViewViewableCount) AS ActiveViewViewableCount FROM NetworkActiveViews WHERE Time >= startdate AND Time < enddate GROUP BY Date, Product, KeyPart, TimeUsec2 UNION ALL SELECT CAST(substr(Time, 0, 10) as Date) AS Date, Product, KeyPart, TimeUsec2, SUM(ActiveViewMeasurableCount) AS avAVMC, SUM(ActiveViewViewableCount) AS ActiveViewViewableCount FROM NetworkBackfillActiveViews WHERE Time >= startdate AND Time < enddate GROUP BY Date, Product, KeyPart, TimeUsec2 ), Impression_Data AS ( SELECT CAST(substr(i.Time, 0, 10) as Date) AS Date, i.Product, i.TimeUsec2, i.KeyPart, i.ActiveViewEligibleCount AS ActiveViewEligibleCount, i.ActiveViewMeasurableCount AS iAVMC, av.avAVMC AS avAVMC, av.ActiveViewViewableCount FROM NetworkImpressions i LEFT JOIN ActiveView_Data AS av USING (Product, Keypart, TimeUsec2) WHERE i.Time >= startdate AND i.Time < enddate AND i.LineItemID !=0 UNION ALL SELECT CAST(substr(i.Time, 0, 10) as Date) AS Date, i.Product, i.TimeUsec2, i.KeyPart, i.ActiveViewEligibleCount AS ActiveViewEligibleCount, i.ActiveViewMeasurableCount AS iAVMC, av.avAVMC AS avAVMC, av.ActiveViewViewableCount FROM NetworkBackfillImpressions i LEFT JOIN ActiveView_Data AS av USING (Product, Keypart, TimeUsec2) WHERE i.Time >= startdate AND i.Time < enddate ), Full_Data AS ( SELECT Date, Product, TimeUsec2, KeyPart, ActiveViewEligibleCount, CASE WHEN ActiveViewViewableCount >=1 THEN 1 ELSE (IFNULL(iAVMC, 0) + IFNULL(avAVMC, 0)) END AS ActiveViewMeasurableCount, IFNULL(ActiveViewViewableCount, 0) AS ActiveViewViewableCount FROM Impression_Data ) SELECT SUM(ActiveViewEligibleCount) AS ActiveViewEligibleCount, SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount, SUM(ActiveViewViewableCount) AS ActiveViewViewableCount FROM Full_Data
결과
행 | EligibleImpressions |
MeasurableImpressions |
ViewableImpressions |
1 | 97000000 | 95000000 | 59900000 |
키-값
키 사용
각 키가 광고 요청에 표시되는 빈도(Customtargeting
에 표시됨) 및 광고 항목을 게재하는 데 각 키가 사용된 빈도(TargetedCustomCriteria
에 표시됨)를 확인합니다. 검색결과에 표시되지 않거나 자주 사용되지 않는 활성 키는 키 한도를 넘지 않도록 보관처리하는 것이 좋을 수 있습니다.
코드
WITH Key_Value_Pairs AS ( SELECT KVPair FROM NetworkImpressions CROSS JOIN UNNEST(SPLIT(CustomTargeting, ';')) AS KVPair WHERE CustomTargeting IS NOT NULL UNION ALL SELECT KVPair FROM NetworkBackfillImpressions CROSS JOIN UNNEST(SPLIT(CustomTargeting, ';')) AS KVPair WHERE CustomTargeting IS NOT NULL ), Targeted_Key_Value_Pairs AS ( SELECT TargetedKVPair FROM NetworkImpressions CROSS JOIN UNNEST(SPLIT(TargetedCustomCriteria, ';')) AS TargetedKVPair WHERE TargetedCustomCriteria IS NOT NULL UNION ALL SELECT TargetedKVPair FROM NetworkBackfillImpressions CROSS JOIN UNNEST (SPLIT(TargetedCustomCriteria, ';')) AS TargetedKVPair WHERE TargetedCustomCriteria IS NOT NULL ), Key_Usage AS ( SELECT REGEXP_REPLACE(KVPair, '=.+', '') AS Key, COUNT(1) AS KeyUsageCount FROM Key_Value_Pairs GROUP BY Key ), Key_Targeted_Usage AS ( SELECT REGEXP_REPLACE(TargetedKVPair, '(!)*(=|~).+', '') AS Key, COUNT(1) AS KeyTargetedCount FROM Targeted_Key_Value_Pairs GROUP BY Key ) SELECT CASE WHEN Key_Usage.Key IS NULL THEN Key_Targeted_Usage.Key ELSE Key_Usage.Key END AS Key, KeyUsageCount, KeyTargetedCount FROM Key_Usage FULL JOIN Key_Targeted_Usage ON Key_Usage.Key = Key_Targeted_Usage.Key ORDER BY Key
결과
행 | Key |
KeyUsageCount |
KeyTargetedCount |
1 | key_abc | 10000000 | 1000000 |
2 | key_def | 25000000 | 5000000 |
3 | key_ghi | 40000 | 2000 |
4 | key_jkl | 300000 | 12000 |
5 | key_mno | 100000 | 1000 |
입찰 파트너별 입찰
CustomTargeting
에서 입찰가를 추출하여 각 파트너가 입찰하는 빈도를 확인할 수 있습니다. 아래 예시에서는 각 파트너의 이름이 'bidder_prefix_partnername
'과 같이 'bidder_prefix_
'로 시작할 것으로 예상하며, 해당 파트너에 대한 입찰가는 'bidder_prefix_partnername=1.23
' 형식일 것으로 예상합니다.
코드
SELECT Bidder, COUNT(1) AS BidCount FROM ( SELECT Bidder FROM NetworkImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, '(bidder_prefix_[A-z]+)=[0-9]+\\.[0-9]*')) AS Bidder WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' UNION ALL SELECT Bidder FROM NetworkBackfillImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, '(bidder_prefix_[A-z]+)=[0-9]+\\.[0-9]*')) AS Bidder WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' ) GROUP BY Bidder ORDER BY BidCount
결과
행 | Bidder |
BidCount |
1 | bidder_prefix_partner_1 | 15000000 |
2 | bidder_prefix_partner_2 | 12000000 |
3 | bidder_prefix_partner_3 | 9000000 |
4 | bidder_prefix_partner_4 | 6000000 |
5 | bidder_prefix_partner_5 | 3000000 |
단일 입찰 파트너의 입찰가 및 개수
단일 입찰 파트너의 경우 가장 일반적인 입찰가와 각 입찰가의 빈도를 확인합니다. 아래의 예에서는 'bidder_partner
'라는 이름의 파트너에 대해 노출수 표에 표시된 가장 일반적인 입찰가 10개를 선택합니다(CustomTargeting
에 '1.23
'과 같은 입찰가로 설정된 키 'bidder_partner
가 있는 노출수).
코드
SELECT BidPrice, SUM(BidCount) AS BidCount FROM ( SELECT SAFE_CAST(REGEXP_EXTRACT(CustomTargeting, 'bidder_partner=([0-9]+\\.[0-9]*)') AS FLOAT64) AS BidPrice, COUNT(1) AS BidCount FROM NetworkImpressions WHERE CustomTargeting LIKE '%bidder_partner=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY BidPrice UNION ALL SELECT SAFE_CAST(REGEXP_EXTRACT(CustomTargeting, 'bidder_partner=([0-9]+\\.[0-9]*)') AS FLOAT64) AS BidPrice, COUNT(1) AS BidCount FROM NetworkBackfillImpressions WHERE CustomTargeting LIKE '%bidder_partner=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY BidPrice ) GROUP BY BidPrice ORDER BY BidCount DESC LIMIT 10
결과
행 | BidPrice |
BidCount |
1 | 0.01 | 600000 |
2 | 0.02 | 500000 |
3 | 0.05 | 400000 |
4 | 0.07 | 300000 |
5 | 0.09 | 200000 |
6 | 0.03 | 150000 |
7 | 0.08 | 100000 |
8 | 0.04 | 75000 |
9 | 0.10 | 50000 |
10 | 0.06 | 25000 |
입찰가 개수 및 평균 입찰가
모든 입찰 파트너의 노출수 표에서 총 입찰가 개수 및 평균 입찰가를 찾습니다. 아래 예시에서는 각 파트너의 이름이 'bidder_prefix_partnername
'과 같이 'bidder_prefix_
'로 시작할 것으로 예상하며, 해당 파트너에 대한 입찰가는 'bidder_prefix_partnername=1.23
' 형식일 것으로 예상합니다.
코드
WITH Bid_Data AS ( SELECT REGEXP_EXTRACT(Bid, '(bidder_prefix_[A-z]+)=[0-9]+\\.[0-9]*') AS Bidder, SAFE_CAST(REGEXP_EXTRACT(Bid, 'bidder_prefix_[A-z]+=([0-9]+\\.[0-9]*)') AS FLOAT64) AS BidPrice, COUNT(1) AS BidCount FROM ( SELECT Bid FROM NetworkImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'bidder_prefix_[A-z]+=[0-9]+\\.[0-9]*')) AS Bid WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' UNION ALL SELECT Bid FROM NetworkBackfillImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'bidder_prefix_[A-z]+=[0-9]+\\.[0-9]*')) AS Bid WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' ) GROUP BY Bidder, BidPrice ), BidPrice_Totals AS ( SELECT Bidder, SUM(BidValue) AS TotalBidValue FROM ( SELECT Bidder, BidPrice * BidCount AS BidValue FROM Bid_Data ) GROUP BY Bidder ), BidCount_Totals AS ( SELECT Bidder, SUM(BidCount) AS TotalBidCount FROM Bid_Data GROUP BY Bidder ) SELECT BidCount_Totals.Bidder, TotalBidCount, ROUND((TotalBidValue / TotalBidCount), 2) AS AverageBid FROM BidCount_Totals INNER JOIN BidPrice_Totals ON BidCount_Totals.Bidder = BidPrice_Totals.Bidder ORDER BY Bidder
결과
행 | Bidder |
BidCount |
AverageBid |
1 | bidder_prefix_partner_1 | 15000000 | 0.21 |
2 | bidder_prefix_partner_2 | 12000000 | 1.43 |
3 | bidder_prefix_partner_3 | 9000000 | 2.67 |
4 | bidder_prefix_partner_4 | 6000000 | 6.80 |
5 | bidder_prefix_partner_5 | 3000000 | 0.92 |
DMP 세그먼트 개수
데이터 관리 플랫폼은 사용자가 속한 세그먼트를 키-값 쌍으로 전달하는 경우가 많습니다. 광고 요청에 이러한 세그먼트가 표시되는 빈도(각 세그먼트에 타겟팅될 수 있었던 노출수)를 확인합니다. CustomTargeting 세그먼트 ID를 추출합니다. 아래 예시에서는 키 이름이 'seg'이고 값은 문자와 숫자로 구성되어 있을 것으로 예상합니다.
코드
SELECT Segment, COUNT(1) AS Count FROM ( SELECT Segment FROM NetworkImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'seg=([A-z0-9]+)')) AS Segment WHERE CustomTargeting LIKE '%seg=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' UNION ALL SELECT Segment FROM NetworkBackfillImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'seg=([A-z0-9]+)')) AS Segment WHERE CustomTargeting LIKE '%seg=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' ) GROUP BY Segment ORDER BY Count DESC
결과
행 | Segment |
Count |
1 | abcd1234 | 10000000 |
2 | efgh5678 | 9000000 |
3 | ijkl9012 | 8000000 |
4 | mnop3456 | 7000000 |
5 | qrst7890 | 6000000 |
6 | uvwx1234 | 5000000 |
7 | yzab5678 | 4000000 |
8 | cdef9012 | 3000000 |
9 | ghij3456 | 2000000 |
10 | klmn7890 | 1000000 |
동영상
URL, 광고 단위 ID, 위치별 동영상 오류
심각한 오류가 있는 동영상 광고 항목의 문제를 해결하려면 페이지에서 오류가 가장 많이 발생한 페이지나 광고 슬롯을 찾아야 할 수 있습니다. NetworkVideoConversions
를 사용하여 (ActionName
에 'error
'가 포함된) 광고 항목별 오류를 찾습니다. 한 페이지에 동영상 플레이어가 두 개 이상 있는 경우 플레이어는 동일한 광고 단위를 사용하며 'pos
'와 같은 키를 사용하여 페이지의 광고 단위를 구분하고 CustomTargeting
에서 pos
값을 추출합니다. 아래 예에서는 키 이름이 'pos
'일 것으로 예상하고 하나의 동영상 광고 항목의 오류에 대한 책임이 있는 RefererURL
, AdUnitID
및 Position
의 상위 5개 조합을 보여줍니다.
코드
SELECT RefererURL, AdUnitID, REGEXP_EXTRACT(CustomTargeting, 'pos=([^;]+)') AS Position, COUNT(1) AS ErrorCount FROM NetworkVideoConversions WHERE LineItemID = 123456789 AND ActionName LIKE '%error%' AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY RefererURL, AdUnitID, Position ORDER BY ErrorCount DESC LIMIT 5
결과
행 | RefererURL |
AdUnitID |
Position |
ErrorCount |
1 | https://example.com/ | 11111111 | 상단 | 2000 |
2 | https://example.com/url/a | 22222222 | 상단 | 1500 |
3 | https://example.com/url/b | 22222222 | 상단 | 1400 |
4 | https://example.com/url/c | 11111111 | 상단 | 1000 |
5 | https://example.com/url/c | 11111111 | 하단 | 500 |