區隔

區隔 (在 Google Ads 使用者介面中是獨立選單) 只要在 Google Ads API 中導入適當的欄位,即可導入。舉例來說,在查詢中加入 segments.device 會產生一個資料列,當中包含每組裝置與 FROM 子句中的指定資源組合,然後產生的統計資料值 (曝光次數、點擊次數、轉換次數等) 則會分配給這些項目。

雖然在 Google Ads UI 中一次只能使用一個區隔,但透過 API,您可以在同筆查詢中指定多個區隔。

SELECT
  campaign.name,
  campaign.status,
  segments.device,
  metrics.impressions
FROM campaign

將這項查詢傳送至 GoogleAdsService.SearchStream 後的結果,看起來會像這樣:

{
  "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 欄位,並依資源區隔指標,即使 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"
      }
    }
  ]
}

請注意,由於 ad_group 已在 FROM 子句中指定為資源,因此系統一律會傳回 adGroupresource_name 欄位。

可選取的區隔欄位

您無法為 FROM 子句中的指定資源選取部分區隔欄位。例如,我們將繼續從 ad_group 資源查詢。若要從 ad_group 資源中選取區隔欄位,該欄位需要存在於 ad_group 的 Segments 清單中。Segments 清單是 ad_group 資源中繼資料頁面中可用欄位表格的黃色部分。

區隔資源

選取某些資源時,您可以選擇在 FROM 子句中,選取資源欄位及其欄位,藉此對相關資源進行隱含彙整。您可以在 FROM 子句中繼資料頁面的資源上的 Attributed Resources 清單中找到這些相關資源。針對 ad_group 資源,您可以看到可以從 campaign 資源中選取欄位。系統會自動傳回任何 Attributed Resources 的 resource_name 欄位,且 SELECT 子句中至少有 1 個欄位,即使 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_dateselectable_with 清單是較小型的相容區隔組合。也就是說,如果您在 SELECT 子句中加入 segments.hotel_check_in_date 欄位,就會將剩餘的可用區隔限制為這兩份清單的交集。

新增部分區隔時,摘要列中的指標可能會減少
在含有 FROM ad_group_ad 的查詢中加入 segments.keyword.info.match_type 時,該區隔指示查詢「只」取得含有關鍵字的資料列,並移除與關鍵字無關的任何資料列。在這種情況下,由於指標會排除任何非關鍵字指標,因此指標會較低。

WHERE 子句中區隔的規則

如果區段位於 WHERE 子句中,也必須在 SELECT 子句中。這項規則的例外情形是下列日期區隔,這稱為「核心日期區隔」

  • segments.date
  • segments.week
  • segments.month
  • segments.quarter
  • segments.year

核心日期區隔欄位的規則

區隔 segments.datesegments.weeksegments.monthsegments.quartersegments.year 函式如下:

  • 這些區隔可以直接在 WHERE 子句中進行篩選,而不必顯示在 SELECT 子句中。

  • 如果其中任何區隔位於 SELECT 子句中,則必須在 WHERE 子句中指定由核心日期區隔組成的有限日期範圍 (日期區隔不必與 SELECT 中指定的日期區隔相同)。

示例

無效:由於 segments.date 位於 SELECT 子句中,因此您必須在 WHERE 子句中為 segments.datesegments.weeksegments.monthsegments.quartersegments.year 指定有限的日期範圍。
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
有效:這項查詢會傳回日期範圍內累積的廣告活動名稱和點擊次數。請注意,segments.date 不需要出現在 SELECT 子句中,
SELECT
  campaign.name,
  metrics.clicks
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
有效:這項查詢會傳回日期範圍內按日期區隔的廣告活動名稱和點擊次數。
SELECT
  campaign.name,
  metrics.clicks,
  segments.date
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
有效:這項查詢會傳回日期範圍內按月份區隔的廣告活動名稱和點擊次數。
SELECT
  campaign.name,
  metrics.clicks,
  segments.month
FROM campaign
WHERE segments.date > '2020-01-01'
  AND segments.date < '2020-02-01'
有效:這項查詢會傳回季度區隔的廣告活動名稱和點擊次數,再依月份區隔,最後篩選出該年度範圍內所有月份的廣告活動名稱和點擊次數。
SELECT
  campaign.name,
  metrics.clicks,
  segments.quarter,
  segments.month
FROM campaign
WHERE segments.year > 2015
  AND segments.year < 2020

search_term_view

請注意,針對 search_term_view 資源,這項資訊也是按照廣告群組 (而不只是搜尋字詞) 進行區隔,而是按照其資源名稱的結構反映 (同樣包含廣告群組)。因此,在實際情況下,您會得到一些重複且搜尋字詞相同的資料列,這些資料列就屬於不同的廣告群組:

{
  "results":[
    {
      "searchTermView":{
        "resourceName":"customers/1234567890/searchTermViews/111111111~2222222222~Z29vZ2xlIHBob3RvcyBpb3M",
        "searchTerm":"google photos"
      },
      "metrics":{
        "impressions":"3"
      },
      "segments":{
        "date":"2015-06-15"
      }
    },
    {
      "searchTermView":{
        "resourceName":"customers/1234567890/searchTermViews/111111111~33333333333~Z29vZ2xlIHBob3RvcyBpb3M",
        "searchTerm":"google photos"
      },
      "metrics":{
        "impressions":"2"
      },
      "segments":{
        "date":"2015-06-15"
      }
    }
  ]
}

雖然本例中的兩個傳回物件似乎重複,但其資源名稱實際上不同,在「廣告群組」部分更是如此。也就是說,「google 相簿」這個搜尋字詞會歸因於同一天 (2015 年 6 月 15 日) 的兩個廣告群組 (ID 222222222233333333333)。 因此,我們可以斷定 API 正常運作,且在這種情況下不會傳回重複的物件。