查詢結構和子句

查詢是由多個子句組成: SELECT、 FROM、 WHERE、 ORDER BY、 LIMIT 和 PARAMETERS。

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

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

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

SELECT 子句

SELECT 子句:

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

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

SELECT
  campaign.id,
  campaign.name
FROM campaign

多種欄位類型

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

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

  • 資源欄位:campaign.id、campaign.name、bidding_strategy.id 和 bidding_strategy.name。

  • 區隔欄位:segments.device 和 segments.date。

  • 指標欄位:metrics.impressions 和 metrics.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 資源的 impressions 和 clicks 指標。

SELECT
  metrics.impressions,
  metrics.clicks
FROM campaign

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

區隔欄位

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

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

SELECT segments.device
FROM campaign

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

違禁欄位

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

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

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

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

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

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

FROM 子句

FROM 子句:

  • 查詢 SearchAds360Service (Search 和 SearchStream 方法) 時,為必要子句。

  • 查詢 SearchAds360FieldService 時不應包含。

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

  • 只能指定單一資源。

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

已歸因的資源

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

這個範例查詢會同時傳回廣告群組 ID 和廣告活動 ID,因為 campaign 是 ad_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_MATCH 和 NOT REGEXP_MATCH 的預設感應度變更為不區分大小寫,例如:

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

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

核心日期區隔

下列區隔欄位稱為核心日期區隔: segments.date、segments.week、segments.month、segments.quarter 和 segments.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

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

禁止篩選

不允許篩選:

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

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

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

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_name 和 customer.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.name、bidding_strategy.type 和 metrics.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

瞭解詳情