查詢是由多個子句組成:
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_NAMEOPERATORVALUE(以空白字元分隔)。可包含多個條件,並以
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_NAMEORDERING_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