查詢結構

指標和區隔欄位的查詢可以傳送至 reports.search 方法。如要使用 Merchant Center 查詢語言建構查詢,您必須先使用語言文法撰寫查詢。查詢是由多個子句組成:

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • LIMIT

子句使用「欄位名稱」、「資料表名稱」、「運算子」、「條件」和「排序」來協助您選取所需資料。合併為單一查詢之後,就能使用 Google Content API for Shopping 提出要求。以下說明每個子句的使用方式

子句

SELECT

SELECT 子句會指定要在要求中擷取的一組欄位。SELECT 會採用以逗號分隔的區隔欄位和指標清單,在回應中傳回值。在查詢中,SELECT 子句是必要子句。

以下查詢範例會從特定資料表選取點擊指標:

SELECT
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’

您也可以在單一要求中查詢不同的欄位類型:

SELECT
  segments.date,
  segments.program,
  metrics.impressions,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’
  • 區隔欄位

    • segments.date
    • segments.program
  • 指標

    • metrics.impressions
    • metrics.clicks

由於以下限制,SELECT 子句不允許部分欄位:

  • 查詢區隔欄位,但沒有至少一個指標欄位。

關於上述條件的資訊,請參閱我們的參考文件。

FROM

FROM 子句會指定要在要求中擷取資料的資料表。FROM 子句中的資料表定義了特定查詢的所有其他子句可以使用哪些欄位。FROM 子句中只能指定單一資料表。目前僅支援 MerchantPerformanceView 資料表。在 reports 服務對 search 方法的查詢中,必須使用 FROM 子句。

WHERE

WHERE 子句指定篩選要求資料時要套用的條件。使用 WHERE 子句時,您可以使用 AND 指定一或多個條件來分隔。每個條件都應遵循 field_name Operator value 模式。任何區隔欄位都可以在 WHERE 子句中使用,但指標欄位必須在 SELECT 子句中指定,才能在 WHERE 子句中使用。在查詢中,必須使用 WHERE 子句,因為您必須一律指定可傳回效能資料的日期範圍。

以下範例說明如何使用 WHERE 傳回指定時間範圍內的指標:

SELECT
  segments.offer_id,
  metrics.impressions
FROM MerchantPerformanceView
WHERE segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’

你可以結合多個條件來篩選資料,本例會傳回 SHOPPING_ADS 計畫每項商品的點擊次數,其中點擊次數在指定 30 天內超過 100。

SELECT
  segments.offer_id,
  segments.program,
  metrics.clicks
FROM MerchantPerformanceView
WHERE metrics.clicks > 100
  AND segments.program = SHOPPING_ADS
  AND segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’;

在下列查詢中,您會發現已選取 segments.date。無論您選取 segments.date 為何,WHERE 子句中的日期範圍限制都要提供,才能擷取成效資料。

SELECT
  segments.date,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’

篩選時,請務必注意運算子的區分大小寫。

如需運算子的完整清單,請參閱語言文法

ORDER BY

ORDER BY 子句會指定結果的傳回順序。如此一來,您就可以根據欄位名稱,以遞增或遞減順序排列資料。每筆訂單都會指定為 field_name,後面接著 ASCDESC。如果未指定 ASCDESC,訂單會預設為 ASC。只有 SELECT 子句中指定的欄位可用於 ORDER BY 子句。在查詢中,ORDER BY 子句是「選用」

以下查詢會根據點擊次數由高至低排序傳回的資料列:

SELECT
  segments.offer_id,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’
ORDER BY metrics.clicks DESC

您可以使用以逗號分隔的清單,在 ORDER BY 子句中指定多個欄位。順序將與查詢中指定的順序相同。 舉例來說,以下查詢會先依 offer_id 遞增順序排序結果,然後依曝光次數遞減排序,再依點擊次數遞減排序:

SELECT
  segments.offer_id,
  metrics.impressions,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’
ORDER BY
  segments.offer_id,
  metrics.impressions DESC,
  metrics.clicks DESC

LIMIT

LIMIT 子句可讓您指定要傳回的結果數量。如果您只想查看摘要,這個方法就很實用。

舉例來說,LIMIT 可用於限制以下查詢的結果總數:

SELECT
  segments.program,
  segments.offer_id,
  metrics.impressions
FROM MerchantPerformanceView
WHERE segments.date BETWEEN ‘2020-08-01’ AND ‘2020-08-31’
ORDER BY metrics.impressions DESC
LIMIT 50