세분화는 Google Ads UI에서 별도의 메뉴로 제공됩니다. 쿼리에 적절한 필드를 추가하여 Google Ads API에서 세분화를 구현할 수 있습니다. 예를 들어 쿼리에 segments.device
를 추가한다고 가정해 보겠습니다. 그러면 FROM 절에서 기기와 지정된 리소스의 각 조합에 대한 행이 있는 보고서가 생성되고 통계 값 (노출수, 클릭수, 전환수 등)이 이들 간에 분할됩니다.
Google Ads UI에서는 한 번에 하나의 세그먼트만 사용할 수 있지만 API를 사용하면 동일한 쿼리에서 여러 세그먼트를 지정할 수 있습니다.
SELECT
campaign.name,
campaign.status,
segments.device,
metrics.impressions
FROM campaign
GoogleAdsService.SearchStream에 이 쿼리를 전송한 결과는 다음과 같은 JSON 문자열과 유사합니다.
{
"results":[
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"10922"
},
"segments":{
"device":"MOBILE"
}
},
{
"campaign":{
"resourceName":"customers/1234567890/campaigns/111111111",
"name":"Test campaign",
"status":"ENABLED"
},
"metrics":{
"impressions":"28297"
},
"segments":{
"device":"DESKTOP"
}
},
...
]
}
이 샘플 결과에서 리소스 이름을 비롯한 첫 번째 및 두 번째 객체의 속성은 동일합니다. 노출수는 기기별로 세분화되므로 동일한 캠페인에 대해 두 개 이상의 객체가 반환될 수 있습니다.
암시적 세분화
모든 보고서는 처음에 FROM 절에 지정된 리소스별로 세분화됩니다. 리소스 이름 필드가 쿼리에 명시적으로 포함되지 않은 경우에도 FROM 절에 있는 리소스의 resource_name 필드가 반환되고 측정항목이 이 필드별로 세분화됩니다. 예를 들어 FROM 절에서 리소스로
ad_group을 지정하면
ad_group.resource_name이
자동으로 반환되고 측정항목이
광고그룹 수준에서 암시적으로 세분화됩니다.
따라서 이 쿼리의 경우
SELECT metrics.impressions
FROM ad_group
다음과 같은 JSON 문자열이 표시됩니다.
{
"results":[
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/2222222222"
},
"metrics":{
"impressions":"237"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/33333333333"
},
"metrics":{
"impressions":"15"
}
},
{
"adGroup":{
"resourceName":"customers/1234567890/adGroups/44444444444"
},
"metrics":{
"impressions":"0"
}
}
]
}
ad_group이 FROM 절에서 리소스로 지정되므로 adGroup의 resource_name 필드는 항상 반환됩니다.
선택 가능한 세그먼트 필드
모든 세그먼트 필드를 FROM 절의 지정된 리소스에 대해 선택할 수 있는 것은 아닙니다.
예를 들어
ad_group 리소스에서 계속 쿼리한다고 가정해 보겠습니다. ad_group 리소스에서 세그먼트 필드를 선택하려면 해당 필드가 ad_group의 Segments 목록에 있어야 합니다. Segments 목록은 사용 가능한 필드
표의 ad_group 리소스의 메타데이터 페이지에 있는 노란색 부분입니다.
세그먼트 리소스
일부 리소스에서 선택할 때 FROM 절에 있는 리소스의 필드와 함께 필드를 선택하여 관련 리소스를 암시적으로 조인할 수 있습니다. 이러한 관련 리소스는 FROM 절에 있는 리소스의 메타데이터 페이지에 있는 Attributed Resources 목록에서 찾을 수 있습니다. ad_group 리소스의 경우 campaign
리소스의 필드도 선택할 수 있습니다. 리소스 이름 필드가 쿼리에 명시적으로 포함되지 않은 경우에도 SELECT 절에 필드가 하나 이상 있는 Attributed Resources의 resource_name 필드는 자동으로 반환됩니다.
Attributed Resource 필드를 선택하는 것과 마찬가지로 Segmenting Resource 필드를 선택할 수도 있습니다. 지정된 리소스의 메타데이터 페이지에 Segmenting Resources
목록이 있는 경우 나열된
리소스 중 하나의 필드를 선택하면 해당 Segmenting Resource의 반환된
resource_name에 따라 쿼리가 추가로 세분화됩니다. 예를 들어
campaign 리소스는 campaign_budget 리소스의 Segmenting
Resource로 나열됩니다.
campaign.name과 같은 캠페인 필드를 campaign_budget
리소스에서 선택하면 campaign.name 필드가 반환될 뿐만 아니라
campaign.resource_name 필드
가 반환되고 세분화됩니다.
세그먼트와 측정항목 간의 선택 가능성
지정된 세그먼트 필드는 다른 세그먼트 필드 또는 측정항목 필드와 호환되지 않을 수 있습니다. 호환되는 세그먼트 필드를 확인하려면 SELECT 절에 있는 세그먼트의 selectable_with 목록을 검토하세요.
ad_group 리소스의 경우 선택할 수 있는 세그먼트가 50개 이상 있습니다. 그러나 selectable_with 목록은
segments.hotel_check_in_date
호환되는 세그먼트의 훨씬 작은 집합입니다. 즉, segments.hotel_check_in_date 필드를 SELECT 절에 추가하면 선택할 수 있는 세그먼트가 이 두 목록의 교집합으로 제한됩니다.
공동 세그먼트 제약 조건
일부 세그먼트 필드에는 다른 필드와 함께 요청해야 하는 명시적 선택 제약 조건이 있습니다. 예를 들어 segments.ad_sub_format_type (YouTube 인스트림 건너뛸 수 없는 광고를 기간별로 분류)은 항상 segments.ad_format_type과 함께 동일한 쿼리에서 선택해야 합니다.
세그먼트 선택에 의한 암시적 필터링
쿼리에서 특정 세그먼트 필드를 선택하면 Google Ads API에서 해당 세그먼트가 적용되고 값이 있는 행만 포함하도록 결과를 암시적으로 필터링할 수 있습니다.
segments.keyword.*의 영향
이 동작의 일반적이고 중요한 예는 segments.keyword 아래의 필드를 선택할 때 발생합니다 (예: segments.keyword.info.text 및
segments.keyword.ad_group_criterion).
- 키워드 이외의 트래픽 제외:
SELECT절에segments.keyword.*필드를 포함하면 결과가 검색 네트워크 키워드 광고그룹 기준과 직접 연결된 행으로만 제한됩니다. 영향을 받는 캠페인 유형: 따라서 검색 키워드에 의존하지 않는 캠페인 유형 또는 광고그룹의 데이터는 결과에서 제외 됩니다. 여기에는 다음 기능이 포함되지만 이에 국한되지는 않습니다.
- 동적 검색 광고 (DSA): DSA 타겟은 키워드가 아닌 웹사이트 콘텐츠를 기반으로 하기 때문입니다.
- 쇼핑 캠페인: 키워드 대신 제품 그룹을 사용합니다.
- 실적 최대화 캠페인: 실적 최대화 캠페인이 검색에 게재될 수 있지만 일반적으로 동일한 키워드 기준에 따라 보고서가 세분화되지는 않습니다.
디스플레이 네트워크:
segments.keyword.*필드는 검색 네트워크 에서 사용되는 키워드와 관련이 있습니다. 디스플레이 네트워크 키워드 또는 기타 디스플레이 타겟팅 방법으로 세분화하지 않습니다.
권장사항: 분석에 DSA, 쇼핑 또는 검색 키워드 기반이 아닌 다른 소스의 실적 데이터를 포함해야 하는 경우 쿼리에 segments.keyword.*의 필드를 포함하지 마세요. 먼저 모든 캠페인 유형의 데이터를 분석하고 검색 키워드 실적에 집중할 때만 키워드 세분화를 적용하세요.
WHERE 절의 세그먼트 규칙
세그먼트가 WHERE 절에 있는 경우 SELECT 절에도 있어야 합니다.
이 규칙의 예외는
핵심 날짜 세그먼트라고 하는 다음 날짜 세그먼트입니다.
segments.datesegments.weeksegments.monthsegments.quartersegments.year
핵심 날짜 세그먼트 필드 규칙
segments.date, segments.week, segments.month, segments.quarter, segments.year 세그먼트는 다음과 같이 작동합니다.
이러한 세그먼트는
SELECT절에 표시되지 않고WHERE절에서 필터링할 수 있습니다.이러한 세그먼트가
SELECT절에 있는 경우 핵심 날짜 세그먼트 로 구성된 유한 날짜 범위를WHERE절에 지정해야 합니다. 날짜 세그먼트는SELECT에 지정된 세그먼트와 동일할 필요가 없습니다.
예
유효하지 않음: segments.date가 SELECT 절에 있으므로 segments.date, segments.week, segments.month, segments.quarter, 또는 segments.year의 WHERE 절에 유한 날짜 범위를 지정해야 합니다.
|
SELECT campaign.name, metrics.clicks, segments.date FROM campaign |
유효함: 이 쿼리는 날짜 범위 동안 발생한 캠페인 이름과
클릭수를 반환합니다. segments.date는 SELECT 절에 표시되지 않아도 됩니다.
|
SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
| 유효함: 이 쿼리는 날짜 범위의 모든 날짜에 대해 날짜별로 세분화된 캠페인 이름과 클릭수를 반환합니다. |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
| 유효함: 이 쿼리는 날짜 범위의 모든 날짜에 대해 월별로 세분화된 캠페인 이름과 클릭수를 반환합니다. |
SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date > '2024-01-01' AND segments.date < '2024-02-01' |
| 유효함: 이 쿼리는 연도 범위의 모든 월에 대해 분기별로 세분화된 후 월별로 세분화된 캠페인 이름과 클릭수를 반환합니다. |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year > 2019 AND segments.year < 2024 |
search_term_view
search_term_view 리소스는 검색어뿐만 아니라 광고그룹도 포함하는 리소스 이름의 구조에 반영된 대로 광고그룹별로도 암시적으로
세분화됩니다. 따라서 결과에 동일한 검색어가 표시되는 중복된 행이 표시되지만 이러한 행은 다른 광고그룹에 속합니다.
{
"results":[
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"3"
},
"segments":{
"date":"2024-06-15"
}
},
{
"searchTermView":{
"resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
"searchTerm":"google photos"
},
"metrics":{
"impressions":"2"
},
"segments":{
"date":"2024-06-15"
}
}
]
}
이 예에서 반환된 두 객체는 중복된 것으로 보이지만 리소스 이름은 실제로 다르며 특히 '광고그룹' 부분에서 다릅니다. 즉, 검색어 'google photos'는 동일한 날짜(2024-06-15)에 두 광고그룹 (ID 2222222222 및 33333333333)에 기여합니다. 따라서 API가 의도한 대로 작동했으며 이 경우 중복된 객체를 반환하지 않았다고 결론 내릴 수 있습니다.