Google Merchant Center 転送

BigQuery Data Transfer Service for Google Merchant Center を使用すると、Google Merchant Center レポートデータのための定期的な読み込みジョブのスケジュールと管理を自動的に行うことができます。

サポートされるレポート

BigQuery Data Transfer Service for Google Merchant Center は、次のデータをサポートしています。

商品と商品の問題

商品と商品の問題レポートには、フィードを通じてまたは Content API for Shopping を使用して Merchant Center に提供された商品データが含まれます。このレポートには、Google が商品に関して検出したアイテムレベルの問題も含まれます。商品と商品の問題に関するデータは、Google Merchant Center で確認できます。また、Content API for Shopping に対してクエリを実行して確認することもできます。このデータの BigQuery への読み込み方法については、Google Merchant Center の商品テーブル スキーマをご覧ください。

地域別在庫

地域別在庫レポートには、地域別の在庫状況と価格のオーバーライドに関する追加の商品データが含まれます。このデータの BigQuery への読み込み方法については、Google Merchant Center の地域別在庫テーブル スキーマをご覧ください。

ローカル在庫

ローカル在庫レポートには、商品のローカル在庫に関する追加の商品データが含まれます。このレポートには、ローカル価格、在庫状況、在庫数、受け取り、店舗の商品場所に関するデータが含まれています。このデータの BigQuery への読み込み方法については、Google Merchant Center のローカル在庫テーブル スキーマをご覧ください。

パフォーマンス

パフォーマンス レポートでは、広告と無料リスティングの両方にわたってパフォーマンス データのきめ細かいセグメンテーションを取り上げています。このデータの BigQuery への読み込み方法については、Google Merchant Center のパフォーマンス テーブル スキーマをご覧ください。

ベストセラー

ベストセラー レポートでは、Google Merchant Center UI に表示されるものと同じデータが提供されます。国やカテゴリのデータを最大 2 年間バックフィルできます。これには、ショッピング広告と無料リスティングで最も人気が高い商品とブランドのほか、その商品アイテムの在庫の有無に関するデータも含まれます。このレポートは、Google Merchant Center で入手できるベストセラー レポートに基づいています。このデータの BigQuery への読み込み方法については、Google Merchant Center のベストセラー テーブル スキーマをご覧ください。

価格競争力

価格競争力レポート(旧称: 価格ベンチマーク レポート)には、商品単位の属性と価格ベンチマーク データが含まれます。このレポートは、Google Merchant Center で入手できる価格競争力レポートと同じ定義に基づいています。このデータの BigQuery への読み込み方法については、Google Merchant Center の価格競争力テーブル スキーマをご覧ください。

価格分析

価格分析レポートを使用すると、商品の提案セール価格と、商品の価格を更新した場合に期待できるパフォーマンスの予測を確認できます。価格分析レポートを使用して、商品の価格設定をより効果的に行うことができます。このレポートのデータの使用方法の詳細については、価格分析レポートを使用して商品の価格を改善するをご覧ください。このデータの BigQuery への読み込み方法については、Google Merchant Center の価格分析テーブル スキーマをご覧ください。

商品ターゲティング

転送を設定する際に商品ターゲティング レポートを有効にすると、Google ショッピングから BigQuery にデータを読み込む際に広告のターゲティング情報を公開できます。BigQuery にデータを読み込む方法については、Google Merchant Center の商品ターゲティング テーブル スキーマをご覧ください。

レポート オプション

Google Merchant Center の BigQuery Data Transfer Service は、次のレポート オプションをサポートしています。

レポート オプション サポート
スケジュール

Daily、Weekly、Monthly、Custom に構成できます。デフォルトでは、転送の作成時に Daily に設定されます。転送間の最小間隔は 6 時間です。

Google Merchant Center の転送からのデータの取り込み

Google Merchant Center から BigQuery にデータを転送すると、データは日付でパーティション分割された BigQuery テーブルに読み込まれます。データが読み込まれるテーブル パーティションは、データソースの日付に対応します。同じ日付の複数の転送をスケジュールすると、BigQuery Data Transfer Service により、対象の日付のパーティションが最新のデータで上書きされます。同じ日に複数回の転送やバックフィルを実行しても、データは重複せず、他の日付のパーティションに対する影響はありません。

制限事項

レポートによっては、過去のバックフィルのサポート期間が異なるなど、独自の制約がある場合があります。以降のセクションでは、各レポートの制限事項について説明します。

過去のバックフィルのサポート

すべてのレポートで同様の方法で過去のバックフィルがサポートされているわけではありません。レポートのリストと過去のバックフィルのサポートレベルは次のとおりです。

  • 商品と商品の問題 - 14 日
  • ローカル在庫 - 14 日
  • 地域別在庫 - 14 日
  • パフォーマンス - 2 年
  • ベストセラー - 2 年
  • 価格競争力 - バックフィルのサポートなし
  • 価格分析 - バックフィルのサポートなし

自動バックフィルの転送実行

パフォーマンス レポートの「今日」のデータには遅延が生じることがあります。そのため、データ エクスポートがリクエストされると、修正に対応するために過去 3 日前までのデータが更新される場合があります。

この機能をサポートするため、レポートで転送がトリガーされるたびに、today - 1today - 2 の転送実行がさらに 2 つ作成されます。これらの転送実行は、パフォーマンス テーブルにのみ影響します。他のテーブルには影響しません。

自動バックフィルを無効にすることはできません。

商品と商品問題

  • BigQuery 内の商品と商品の問題に関するデータは、販売アカウントのリアルタイムのデータではありません。データのタイムラインを確認するには、スキーマの product_data_timestamp フィールドを参照してください。

価格ベンチマーク

  • 価格ベンチマーク データは、価格ベンチマークのリアルタイムのデータを表すものではありません。データのタイムラインを確認するには、価格ベンチマーク スキーマのprice_benchmark_timestampフィールドを参照してください。
  • すべての商品に価格ベンチマークがあるわけではありません。

ベストセラー

  • すべての国がランキング データに含まれるわけではありません。レポートに含まれる国(ISO 3166-1 alpha-2 を使用): AT、AU、BE、BR、CA、CH、CZ、DE、DK、ES、FI、FR、GB、HU、IE、IN、IT、JP、MX、NL、NO、NZ、PL、PT、RO、RU、SE、SK、TR、UA、US。
  • ベストセラー データは、ブランド ランキングのリアルタイム ビューを表しません。データのタイムラインを確認するには、BestSellers_TopProducts_ スキーマと BestSellers_TopBrands_ スキーマの rank_timestamp フィールドを参照してください。
  • Products_ テーブルには、BestSellers_TopBrands_ テーブル内のブランドにマッピングされていない google_brand_id を持つ行が存在する場合があります。
  • google_brand_id フィールドのブランド ID は、ビジネスやブランドの性質の変化を反映して変更される可能性があります。このため、長期にわたって一連のブランドをトラッキングすることは保証されません。
  • ブランドはさまざまなカテゴリにまたがってランク付けされ、Products_ テーブル内のすべての商品はリーフカテゴリに分類されます。リーフ以外のカテゴリのブランドや商品を結合するには、ベストセラーのサンプルクエリに示すように、google_product_category_ids フィールドを使用します。

マルチクライアント アカウント(MCA)のサポート

複数の販売者 ID を持つ既存のお客様は、親マルチクライアント アカウント(MCA)を構成することをおすすめします。MCA を構成すると、すべての販売者 ID に対して 1 つの転送を作成できます。

個々の販売者 ID を使用する場合と比べ、Google Merchant Center の MCA を使用すると次のメリットがあります。

  • 複数の販売者 ID のレポートデータを転送する際に、複数の転送を管理する必要がなくなります。
  • すべての販売者 ID データが同じテーブルに保管されるため、複数の販売者 ID を使用したクエリを作成する作業が大幅に簡素化されます。
  • MCA を使用すると、すべての販売者 ID データが同じジョブで読み込まれるため、BigQuery 読み込みジョブの割り当ての問題が発生する可能性が減ります。

MCA を使用する場合に考えられる 1 つのデメリットとして、以降のクエリ費用が高くなる可能性があります。すべてのデータが同じテーブル内に保管されるため、クエリで個々の販売者 ID のデータを取得する場合でも、テーブル全体をスキャンしなければならないためです。

MCA を使用している場合、MCA ID は aggregator_id の一覧に表示され、個々のサブアカウントは merchant_id の一覧に表示されます。MCA を使用しないアカウントの場合、aggregator_idnull に設定されます。

すべてのレポートで MCA がサポートされているわけではありません。MCA は、次のレポートでサポートされています。

  • 商品と商品の問題
  • ローカル在庫
  • 地域別在庫
  • 商品の販売状況
  • 価格競争力
  • 価格分析
  • 商品ターゲティング

データに対するクエリを実行する

データが BigQuery に転送されると、取り込み時間パーティション分割テーブルにそのデータが書き込まれます。詳細については、パーティション分割テーブルの概要をご覧ください。

Google Merchant Center テーブルのクエリを実行する際は、そのクエリで _PARTITIONTIME または _PARTITIONDATE の疑似列を使用する必要があります。詳細については、パーティション分割テーブルのクエリをご覧ください。

Products_ テーブルにはネストされたフィールドと繰り返しフィールドが含まれています。ネストされたデータと繰り返しデータの処理については、GoogleSQL ドキュメントの繰り返しフィールド処理の違いをご覧ください。

Google Merchant Center のサンプルクエリ

転送されたデータを分析するには、以下の Google Merchant Center サンプルクエリを使用できます。このクエリは、Looker Studio などの可視化ツールでも使用できます。

以下の各クエリでは、dataset をデータセット名で置き換えてください。merchant_id は、販売者 ID に置き換えます。MCA を使用している場合は、merchant_id を MCA ID に置き換えます。

商品と商品問題のサンプルクエリ

商品と商品に関する統計情報

次の SQL サンプルクエリでは、商品の数、問題のある商品の数、日付ごとの問題の数を取得します。

SELECT
  _PARTITIONDATE AS date,
  COUNT(*) AS num_products,
  COUNTIF(ARRAY_LENGTH(issues) > 0) AS num_products_with_issues,
  SUM(ARRAY_LENGTH(issues)) AS num_issues
FROM
  dataset.Products_merchant_id
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date
ORDER BY
  date DESC

ショッピング広告で承認されなかった商品

次の SQL サンプルクエリでは、ショッピング広告での掲載が承認されていない商品の数を国別に取得します。商品が承認されなかった原因として、掲載先が除外対象であったか、商品に問題があることが考えられます。

SELECT
  _PARTITIONDATE AS date,
  disapproved_country,
  COUNT(*) AS num_products
FROM
  dataset.Products_merchant_id,
  UNNEST(destinations) AS destination,
  UNNEST(disapproved_countries) AS disapproved_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date, disapproved_country
ORDER BY
  date DESC

問題が承認されなかった商品

次の SQL サンプルクエリでは、不承認の問題がある商品の数を国別に取得します。

SELECT
  _PARTITIONDATE AS date,
  applicable_country,
  COUNT(DISTINCT CONCAT(CAST(merchant_id AS STRING), ':', product_id))
      AS num_distinct_products
FROM
  dataset.Products_merchant_id,
  UNNEST(issues) AS issue,
  UNNEST(issue.applicable_countries) as applicable_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD' AND
  issue.servability = 'disapproved'
GROUP BY
  date, applicable_country
ORDER BY
  date DESC

価格ベンチマーク サンプル クエリ

商品価格をベンチマークと比較する

次の SQL クエリは、Products データと Price Benchmarks データを結合し、商品と関連のベンチマークのリストを返します。

WITH products AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    dataset.Products_merchant_id
  WHERE
   _PARTITIONDATE >= 'YYYY-MM-DD'
),
benchmarks AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    dataset.Products_PriceBenchmarks_merchant_id
  WHERE
    _PARTITIONDATE >= 'YYYY-MM-DD'
)
SELECT
  products.date,
  products.product_id,
  products.merchant_id,
  products.aggregator_id,
  products.price,
  products.sale_price,
  benchmarks.price_benchmark_value,
  benchmarks.price_benchmark_currency,
  benchmarks.country_of_sale
FROM
  products
INNER JOIN
  benchmarks
ON products.product_id = benchmarks.product_id AND
   products.merchant_id = benchmarks.merchant_id AND
   products.date = benchmarks.date

ベストセラーのサンプルクエリ

特定のカテゴリと国の上位の商品

次の SQL クエリは、米国の「スマートフォン」カテゴリの上位の商品を返します。

SELECT
  rank,
  previous_rank,
  relative_demand.bucket,
  (SELECT name FROM top_products.product_title WHERE locale = 'en-US') AS product_title,
  brand,
  price_range
FROM
  dataset.BestSellers_TopProducts_merchant_id AS top_products
WHERE
  _PARTITIONDATE = 'YYYY-MM-DD' AND
  ranking_category = 267 /*Smartphones*/ AND
  ranking_country = 'US'
ORDER BY
  rank

上位の商品の在庫数

次の SQL クエリは、BestSellers_TopProducts_Inventory_ データと BestSellers_TopProducts_ データを結合して、在庫にある上位の商品のリストを返します。

WITH latest_top_products AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
),
latest_top_products_inventory AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_Inventory_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
)
SELECT
  top_products.rank,
  inventory.product_id,
  (SELECT ANY_VALUE(name) FROM top_products.product_title) AS product_title,
  top_products.brand,
  top_products.gtins
FROM
  latest_top_products AS top_products
INNER JOIN
  latest_top_products_inventory AS inventory
USING (rank_id)

特定のカテゴリと国の上位ブランド

次の SQL クエリは、米国の「スマートフォン」カテゴリのトップブランドを返します。

SELECT
  rank,
  previous_rank,
  brand
FROM
  dataset.BestSellers_TopBrands_merchant_id
WHERE
  _PARTITIONDATE = 'YYYY-MM-DD' AND
  ranking_category = 267 /*Smartphones*/ AND
  ranking_country = 'US'
ORDER BY
  rank

上位ブランド商品の在庫数

次の SQL クエリは、カテゴリと国別の上位ブランドの商品在庫のリストを返します。

  WITH latest_top_brands AS
  (
    SELECT
      *
    FROM
      dataset.BestSellers_TopBrands_merchant_id
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
  ),
  latest_products AS
  (
    SELECT
      product.*,
      product_category_id
    FROM
      dataset.Products_merchant_id AS product,
      UNNEST(product.google_product_category_ids) AS product_category_id,
      UNNEST(destinations) AS destination,
      UNNEST(destination.approved_countries) AS approved_country
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
  )
  SELECT
    top_brands.brand,
    (SELECT name FROM top_brands.ranking_category_path
    WHERE locale = 'en-US') AS ranking_category,
    top_brands.ranking_country,
    top_brands.rank,
    products.product_id,
    products.title
  FROM
    latest_top_brands AS top_brands
  INNER JOIN
    latest_products AS products
  ON top_brands.google_brand_id = products.google_brand_id AND
     top_brands.ranking_category = product_category_id AND
     top_brands.ranking_country = products.approved_country