查詢結構和子句

查詢是由多個子句組成: SELECTFROMWHEREORDER BYLIMITPARAMETERS

子句會使用欄位名稱資源名稱運算子條件排序,合併為單一查詢要求。

簡單來說,建立查詢的步驟如下:

  • 指定要從哪個資源擷取資料。
  • 新增欄位和指標,定義要傳回的資料。
  • 新增區隔,將結果分組。
  • 新增已歸因的資源,即可隱含地彙整相關資源資料。
  • 篩選、排序及限制結果數量。

SELECT 子句

SELECT 子句:

  • 查詢中的必要子句。
  • 指定要在要求中擷取的一組欄位。
  • 接受以半形逗號分隔的資源欄位、自訂資料欄、自訂 Floodlight 變數、區隔欄位和指標清單,並在回應中傳回值。

以下查詢範例說明如何選取 campaign 資源的屬性:

SELECT
  campaign.id,
  campaign.name
FROM campaign

多種欄位類型

您可以在同一個要求中要求不同類型的欄位。

以下查詢範例顯示單一查詢,其中包含:

  • 資源欄位:campaign.idcampaign.namebidding_strategy.idbidding_strategy.name

  • 區隔欄位:segments.devicesegments.date

  • 指標欄位:metrics.impressionsmetrics.clicks

SELECT
  campaign.id,
  campaign.name,
  bidding_strategy.id,
  bidding_strategy.name,
  segments.device,
  segments.date,
  metrics.impressions,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

如要進一步瞭解如何區隔搜尋報表,請參閱「區隔」。

主要資源欄位

通常您會在 SELECT 子句中加入主要資源欄位,但這是選用項目 (是必要項目)。

這個查詢範例使用主要資源欄位 (ad_group.status) 篩選結果。

SELECT campaign.id
FROM ad_group
WHERE ad_group.status = PAUSED

Floodlight 自訂變數

您可以使用 Floodlight 自訂變數的 ID,在 SELECT 子句中加入這些變數。

在本範例中,查詢會為廣告活動資源加入 ID 為 123454321 的自訂變數。

SELECT
  conversion_custom_metrics.id[123454321]
FROM campaign
SELECT
  conversion_custom_dimensions.id[123454321]
FROM campaign

自訂欄

您可以使用自訂資料欄的 ID,在 SELECT 子句中加入自訂資料欄。

在本範例中,查詢包含廣告活動資源的自訂資料欄,ID 為 12345678。

SELECT
  custom_columns.id[12345678]
FROM campaign

請參閱如何取得自訂欄 ID

指標欄位

您可以選取特定資源的指標欄位,而不必在 SELECT 子句中加入資源的其他欄位。

這個範例查詢會選取 campaign 資源的 impressionsclicks 指標。

SELECT
  metrics.impressions,
  metrics.clicks
FROM campaign

如需可在查詢中使用的指標欄位清單,請參閱 metrics

區隔欄位

您可以在 SELECT 子句中選取區隔欄位,而不必指定隨附的資源欄位或指標。

這個查詢範例會依裝置區隔結果。

SELECT segments.device
FROM campaign

如需可在查詢中使用的區隔欄位清單,請參閱 segments

違禁欄位

您無法在 SELECT 子句中使用下列欄位:

  • 無法選取的欄位,也就是 Selectable 中繼資料屬性標示為 false 的欄位。

  • 重複欄位,也就是標示為 trueRepeated 中繼資料屬性欄位。

  • FROM 子句中不適用於指定資源的欄位。 部分資源的屬性無法同時選取。部分資源只會提供所有指標和區隔的子集。

  • 不相容的區隔或指標。詳情請參閱「區隔」。

如要瞭解如何為各項資源尋找這項資訊,請參閱參考說明文件

FROM 子句

FROM 子句:

  • 查詢 SearchAds360Service (SearchSearchStream 方法) 時,必要子句。

  • 查詢 SearchAds360FieldService應包含。

  • 指定查詢傳回的主要資源。

  • 只能指定單一資源。

  • 定義可在查詢中所有其他子句中使用的欄位。

已歸因的資源

如果可使用已歸因的資源,系統會與您在 FROM 子句中指定的資源隱含聯結。你只需要將屬性新增至 SELECT 子句,即可傳回屬性值。

這個範例查詢會同時傳回廣告群組 ID 和廣告活動 ID,因為 campaignad_group 資源的歸因資源。

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

resource_name 欄位

FROM 子句中主要資源的 resource_name 欄位一律會傳回。

在這個範例查詢中,即使查詢中未明確選取 ad_group.resource_name,回應中仍會包含該欄位:

SELECT ad_group.id
FROM ad_group

選取至少一個欄位時,系統會傳回已歸因資源resource_name 欄位。

在這個查詢範例中,由於選取了 campaign.id,回應中會包含 campaign.resource_name

SELECT
  campaign.id,
  ad_group.id
FROM ad_group

WHERE 子句

WHERE 子句:

  • 查詢中的選用子句。
  • 指定篩選和區隔要求資料的條件。 條件遵循以下模式:FIELD_NAME OPERATOR VALUE (以空白字元分隔)。

  • 可包含多個條件,並以 AND 分隔符號分隔。

以下查詢範例說明如何使用 WHERE 子句,傳回特定時間範圍的 impressions 指標:

SELECT
  campaign.id,
  campaign.name,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

如要進一步瞭解如何區隔搜尋報表,請參閱「區隔」。

如要進一步瞭解如何在查詢中指定日期範圍,請參閱「日期範圍」。

依「resource_name」欄位篩選

您可以使用 resource_name 欄位篩選或排序資料。

這個查詢範例會使用 campaign.resource_name 欄位,依指定廣告活動篩選結果:

SELECT
  campaign.id,
  campaign.name
FROM campaign
WHERE campaign.resource_name = 'customers/1234567/campaigns/987654'

多個條件

您可以組合多個條件來篩選資料。

這個查詢範例會要求過去 30 天內,所有廣告活動在行動裝置上的 clicks 指標數量。impressions

SELECT
  campaign.id,
  campaign.name,
  segments.device,
  metrics.clicks
FROM campaign
WHERE metrics.impressions > 0
  AND segments.device = MOBILE
  AND segments.date DURING LAST_30_DAYS

如要進一步瞭解如何區隔報表,請參閱「區隔」。

區分大小寫

篩選字串值時,每個運算子的預設大小寫區分設定,在正確篩選結果方面扮演重要角色。

下表列出各運算子的預設大小寫區分設定。

預設區分大小寫
=/!= Case sensitive
IN/NOT IN Case sensitive
LIKE/NOT LIKE Case insensitive
CONTAINS (...) Case sensitive
REGEXP_MATCH/NOT REGEXP_MATCH Case sensitive

您可以使用 (?i) 修飾符,將 REGEXP_MATCHNOT REGEXP_MATCH 的預設感應度變更為不區分大小寫,例如:

SELECT campaign.id
FROM campaign
WHERE campaign.name REGEXP_MATCH "(?i).*test.*"

如需可用於篩選資料的運算子完整清單,請參閱「查詢文法參考資料」。

核心日期區隔

下列區隔欄位稱為核心日期區隔segments.datesegments.weeksegments.monthsegments.quartersegments.year

您可以在 WHERE 子句中使用核心日期區隔,指定日期或時間範圍。

這個查詢範例會在 WHERE 子句中,為 segments.date 欄位指定 DURING LAST_30_DAYS

SELECT
  campaign.id,
  campaign.name,
  segments.date,
  metrics.clicks
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

如要詳細瞭解如何使用核心日期區隔,請參閱「區隔」>「核心日期區隔」

禁止篩選

不允許篩選:

  • 在未選取的區隔欄位上,除了核心日期區隔

  • 在任何訊息類型的欄位中,原始型別除外 (例如 Int64ValueStringValue 等)。

  • 任何訊息類型的重複欄位屬性,原始型別除外 (例如 Int64ValueStringValue 等)。

ORDER BY 子句

ORDER BY 子句:

  • 查詢中的選用子句。
  • 指定結果的傳回順序。排序方式如下:FIELD_NAME ORDERING_OPTION (以空格分隔)。
  • 允許兩種選項:ASC (遞增) 或 DESC (遞減)。預設為遞增。

這個範例查詢會依點擊次數遞減排序廣告活動 (從最高到最低):

SELECT
  campaign.name,
  metrics.clicks
FROM campaign
ORDER BY metrics.clicks DESC

多個排序

您可以在 ORDER BY 子句中指定多個欄位,方法是以逗號分隔清單。結果會按照您在查詢中指定的順序排序。

這個查詢範例會選取廣告群組資料,並依廣告活動名稱以遞增順序排序結果,然後依曝光次數以遞減順序排序,最後依點擊次數以遞減順序排序:

SELECT
  campaign.name,
  ad_group.name,
  metrics.impressions,
  metrics.clicks
FROM ad_group
ORDER BY
  campaign.name,
  metrics.impressions DESC,
  metrics.clicks DESC

合併排序和限制

您可以將 ORDER BY 子句與 LIMIT 子句搭配使用,進一步篩選結果。

這個查詢範例會傳回過去 30 天內曝光次數最高的五個廣告活動:

SELECT
  campaign.id,
  campaign.name,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
LIMIT 5

禁止訂購

不允許訂購:

  • 依據未選取資源的屬性。
  • 未選取的指標。
  • 未選取的區隔。
  • 適用於下列欄位類型:
    • MESSAGE
    • 重複欄位
    • 重複欄位的屬性。

LIMIT 子句

LIMIT 子句:

  • 查詢中的選用子句。
  • 可限制查詢傳回的結果數量。

舉例來說,如果您只對結果樣本或摘要感興趣,這個子句就非常實用。

這個查詢範例將結果總數限制為 50:

SELECT
  campaign.name,
  ad_group.name,
  segments.device,
  metrics.impressions
FROM ad_group
ORDER BY metrics.impressions DESC
LIMIT 50

PARAMETERS 子句

PARAMETERS 子句可讓您指定要求的 meta 參數。

包括草稿

include_drafts 參數可控制結果是否包含草稿實體。預設值為 false。設為 true 即可納入草稿實體。

這個範例查詢會傳回草稿廣告活動和一般廣告活動:

SELECT campaign.name
FROM campaign
PARAMETERS include_drafts=true

省略未選取的 resource_name

omit_unselected_resource_names 參數可讓您排除 SELECT 子句中未明確要求的所有資源的 resource_name 欄位。預設值為 false。如果將這個參數設為 true,建議您在 SELECT 子句中明確要求主要資源和任何已歸因資源的資源名稱。

這個查詢範例不會傳回 campaign.resource_namecustomer.resource_name 欄位,因為這些欄位未納入 SELECT 子句:

SELECT
  campaign.name,
  customer.id
FROM campaign
PARAMETERS omit_unselected_resource_names = true

這個查詢範例會傳回 campaign.resource_name 欄位,因為 SELECT 子句中明確要求了這個欄位:

SELECT
  campaign.name,
  campaign.resource_name
FROM campaign
PARAMETERS omit_unselected_resource_names = true

變更指標使用的貨幣

metrics_currency 參數可讓您指定計算 SELECT 子句中指標時要使用的幣別。預設值為使用 customer_id 指定帳戶的幣別。如要設定這個參數,請使用 ISO 4217 3 字元貨幣代碼。例如:USD、 EUR。

這個範例查詢會以 customer_id 指定的帳戶幣別,傳回 cost_micros 指標。

SELECT
  campaign.name,
  metrics.cost_micros
FROM campaign
WHERE segments.date >= "2018-08-15"
AND segments.date < "2018-08-16"

這個範例查詢會以智利披索 (CLP) 傳回 cost_micros 指標。

SELECT
  campaign.name,
  metrics.cost_micros
FROM campaign
WHERE segments.date >= "2018-08-15"
AND segments.date < "2018-08-16"
PARAMETERS metrics_currency = "CLP"

啟用 MCC 擴展功能

如果將 enable_mcc_expansion 參數設為 true,您就能在 FROM 子句的資源中,納入以 customer_id 為根的所有帳戶的指標、欄位和區隔。除非在 metrics_currency 參數中明確指定,否則回應會使用 customer_id 的幣別。

在這個範例查詢中,enable_mcc_expansion 參數設為 true,因此系統會從以 customer_id 為根目錄的帳戶階層中,傳回所有帳戶的 bidding_strategy.namebidding_strategy.typemetrics.cost_micros

SELECT
  bidding_strategy.name,
  bidding_strategy.type,
  metrics.cost_micros
FROM bidding_strategy
WHERE segments.date DURING LAST_14_DAYS
PARAMETERS enable_mcc_expansion = true

瞭解詳情