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,並在廣告群組層級對其隱含區隔指標。
因此,這項查詢
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 子句中指定為資源。
可選取的區隔欄位
在 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 子句中加入 segments.hotel_check_in_date 欄位,可選取的區隔就會受限,只剩下這兩個清單的交集。SELECT
新增特定區隔後,摘要列中的指標可能會減少。將 segments.keyword.info.match_type 新增至含有 FROM ad_group_ad 的查詢時,該區隔會指示查詢只取得含有關鍵字的資料列,並移除任何與關鍵字無關的資料列。在這種情況下,指標會較低,因為當中不含任何非關鍵字指標。
WHERE 子句中的區隔規則
如果區隔位於 WHERE 子句中,也必須位於 SELECT 子句中。但下列日期區隔不適用這項規則,這些區隔稱為「核心日期區隔」:
- segments.date
- segments.week
- segments.month
- segments.quarter
- segments.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-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 相簿」在同一天 (2024 年 6 月 15 日) 歸給兩個廣告群組 (ID 2222222222 和 33333333333)。因此,我們可以斷定 API 運作正常,並未傳回重複物件。