Google Ads 使用者介面會以獨立選單的形式提供區隔功能。如要在 Google Ads API 中導入區隔,請在查詢中加入適當的欄位。舉例來說,假設您將 segments.device 新增至查詢。這樣一來,報表就會為FROM 子句中指定的裝置和資源組合各列出一個資料列,並在這些組合之間分配統計值 (曝光、點擊、轉換等)。
在 Google Ads 使用者介面中,一次只能使用一個區隔,但透過 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 子句中指定的資源進行區隔。即使查詢中未明確納入 resource_name 欄位,系統仍會傳回 FROM 子句中資源的 resource_name 欄位,並依該欄位區隔指標。舉例來說,如果您在 FROM 子句中將 ad_group 指定為資源,系統就會自動傳回 ad_group.resource_name,並在 ad_group 層級對其隱含區隔指標。
因此,這項查詢:
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"
}
}
]
}
adGroup 的 resource_name 欄位一律會傳回,因為 ad_group 在 FROM 子句中指定為資源。
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"
}
}
]
}
雖然這個範例中傳回的兩個物件看似重複,但其實資源名稱不同,特別是廣告群組 ID 部分。這表示搜尋字詞 "google photos" 在同一天 (2024-06-15) 歸給兩個廣告群組 (ID 2222222222 和 33333333333)。因此,API 運作正常,並未傳回重複物件。
可選取的區隔欄位
在 FROM 子句中,並非所有區隔欄位都可供特定資源選取。
舉例來說,假設您繼續從 ad_group 資源查詢。如要從 ad_group 資源選取區隔欄位,該欄位必須存在於 ad_group 的 Segments 清單中。Segments 清單是ad_group 資源中繼資料頁面可用欄位表格的黃色部分。
區隔資源
選取部分資源時,您可以一併選取 FROM 子句中的資源欄位,隱含地加入相關資源。您可以在FROM子句的中繼資料頁面中,找到資源的Attributed Resources清單,其中列有相關資源。如果是 ad_group 資源,您會看到也可以從 campaign 資源選取欄位。即使查詢中未明確納入 resource_name 欄位,系統也會自動傳回 SELECT 子句中至少有一個欄位的任何 Attributed Resources 的 resource_name 欄位。
選取 Attributed Resource 欄位的方式與選取 Segmenting Resource 欄位類似。如果特定資源的中繼資料頁面有 Segmenting Resources 清單,選取其中一個列出的資源中的欄位,會導致查詢依該 Segmenting Resource 傳回的 resource_name 進一步區隔。舉例來說,您會發現 campaign 資源列為 campaign_budget 資源的 Segmenting
Resource。從 campaign_budget 資源選取任何廣告活動欄位 (例如 campaign.name),不僅會傳回 campaign.name 欄位,還會傳回 campaign.resource_name 欄位並進行區隔。
區隔和指標之間的選取性
特定區隔欄位可能與其他區隔欄位或部分指標欄位不相容。如要找出彼此相容的區隔欄位,請查看 SELECT 子句中的區隔selectable_with清單。
如果是 ad_group 資源,則有 50 多個可選取的區隔。不過,segments.hotel_check_in_date 的 selectable_with 清單是相容區隔的一小部分。也就是說,如果您將 segments.hotel_check_in_date 欄位加入 SELECT 子句,可選取的區隔就會受限於這兩個清單的交集。
聯合區隔限制
部分區隔欄位有明確的選取限制,必須在 SELECT 子句中與上層區隔一起要求:
- 選取
segments.ad_sub_network_type(會細分 YouTube 廣告子聯播網,例如串流內廣告、動態內廣告和 Shorts) 時,您也必須選取segments.ad_network_type。 - 在第 25 版和後續版本中,選取
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.*欄位,結果就會受到限制,只會顯示與搜尋聯播網關鍵字廣告群組條件直接相關的資料列。 - 受影響的廣告活動類型:因此,如果廣告活動類型或廣告群組不使用搜尋關鍵字,系統會排除這些廣告活動/群組的資料。
包括但不限於:
- 動態搜尋廣告:動態搜尋廣告目標是根據網站內容而非關鍵字。
- 購物廣告活動:使用產品群組,而非關鍵字。
- 最高成效廣告活動:雖然最高成效廣告活動可能會在搜尋聯播網上放送,但報表通常不會依相同的關鍵字條件劃分。
- 多媒體廣告聯播網:
segments.keyword.*欄位與搜尋聯播網使用的關鍵字有關。不會依多媒體廣告聯播網關鍵字或其他多媒體指定方式區隔。
WHERE 子句中的區隔規則
如果區隔位於 WHERE 子句中,也必須位於 SELECT 子句中。
但下列日期區隔不適用這項規則,這些區隔稱為核心日期區隔:
segments.datesegments.weeksegments.monthsegments.quartersegments.year
核心日期區隔欄位的規則
segments.date、segments.week、segments.month、segments.quarter 和 segments.year 區隔的功能如下:
- 您可以在
WHERE子句中篩選這些區隔,而不必顯示在SELECT子句中。 - 如果這些區隔位於
SELECT子句中,則必須在WHERE子句中指定由核心日期區隔組成的有限日期範圍。日期區隔不一定要與SELECT中指定的日期區隔相同。
範例
無效:由於 segments.date 位於 SELECT 子句中,因此您需要在 WHERE 子句中為 segments.date、segments.week、segments.month、segments.quarter 或 segments.year 指定有限的日期範圍。 |
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-01-31' |
| 有效:這項查詢會傳回廣告活動名稱,以及在指定日期範圍內,按日期區隔的點擊次數。 |
SELECT campaign.name, metrics.clicks, segments.date FROM campaign WHERE segments.date >= '2024-01-01' AND segments.date <= '2024-01-31' |
| 有效:這項查詢會傳回廣告活動名稱,以及在包含的日期範圍內,按月份區隔的所有日期點擊次數。 |
SELECT campaign.name, metrics.clicks, segments.month FROM campaign WHERE segments.date >= '2024-01-01' AND segments.date <= '2024-01-31' |
| 有效:這項查詢會傳回廣告活動名稱和點擊次數,並依季度和月份細分,適用於包含在指定年份範圍內的所有月份。 |
SELECT campaign.name, metrics.clicks, segments.quarter, segments.month FROM campaign WHERE segments.year >= 2020 AND segments.year <= 2024 |