クエリの構造

指標フィールドとセグメント フィールドのクエリは、reports.search メソッドに送信できます。Merchant Center のクエリ言語でクエリを作成するには、まず言語文法を使用してクエリを作成する必要があります。クエリは、次のようにいくつかの句で構成されます。

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • LIMIT

句では、目的のデータを選択できるように、フィールド名、テーブル名、演算子、条件、順序を使用します。1 つのクエリに統合すると、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’

1 回のリクエストでさまざまなフィールド タイプをクエリすることもできます。

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 句で使用できません。

  • 指標フィールドが 1 つもないセグメント フィールドをクエリしています。

上記の条件に関する情報は、リファレンス ドキュメントをご覧ください。

FROM

FROM 句では、リクエストでデータを取得するテーブルを指定します。FROM 句の表は、指定されたクエリの他のすべての句で使用できるフィールドを定義します。FROM 句で指定できるテーブルは 1 つのみです。現時点では、MerchantPerformanceView テーブルのみがサポートされています。reports サービスの search メソッドへのクエリでは、FROM 句が必須です。

WHERE

WHERE 句では、リクエストのデータをフィルタリングする場合に適用する条件を指定します。WHERE 句を使用する場合は、AND を使用して 1 つ以上の条件を区切り、指定します。各条件はパターン field_name Operator value に従う必要があります。WHERE 句では任意のセグメント フィールドを使用できますが、WHERE 句で使用する指標フィールドは、SELECT 句で指定する必要があります。パフォーマンス データを返す期間は常に指定する必要があります。そのため、クエリでは WHERE 句が必須です。

以下は、与えられた期間の指標を返すために WHERE を使用したサンプルです。

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

複数の条件を組み合わせてデータをフィルタできます。この例では、指定された 30 日間のクリック数が 100 を超える SHOPPING_ADS プログラムについて、商品あたりのクリック数が返されます。

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 の後に ASC または DESC を続けるように指定します。ASCDESC も指定されていない場合、順序はデフォルトで ASC になります。ORDER BY 句で使用できるのは、SELECT 句で指定されたフィールドのみです。クエリでは 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