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 の価格分析テーブル スキーマをご覧ください。
価格ベンチマーク
このデータの BigQuery への読み込み方法については、Google Merchant Center の価格ベンチマーク テーブル スキーマをご覧ください。
ベストセラー
ベストセラー レポートには、ショッピング広告と無料リスティングで最も人気が高い商品とブランドのほか、その商品アイテムの在庫の有無に関するデータも含まれます。このレポートは、Google Merchant Center で入手できるベストセラー レポートに基づいています。
ベストセラー レポートは、次のテーブルで構成されています。
BestSellers_TopProducts_
は、国と Google 商品カテゴリごとの上位の商品のランキングのリストです。このテーブルは、ショッピング広告と無料リスティングのすべての販売者からのデータを表しています。BestSellers_TopProducts_Inventory_
は、上位の商品と在庫のマッピング テーブルです。BestSellers_TopBrands_
は、国および Google 商品カテゴリ別に計算された上位ブランドのランキングのリストです。ショッピング広告と無料リスティングのすべての販売者からのデータを表しています。
ベストセラー データの BigQuery への読み込み方法については、Google Merchant Center の上位の商品、商品在庫、上位ブランドのテーブル スキーマをご覧ください。
BigQuery Data Transfer Service for Google Merchant Center は、次のレポート オプションをサポートしています。
レポート オプション | サポート |
---|---|
スケジュール | Daily、Weekly、Monthly、Custom に構成できます。デフォルトでは、転送の作成時に Daily に設定されます。転送間の最小間隔は 6 時間です。 |
制限事項
レポートによっては、過去のバックフィルのサポート期間が異なるなど、独自の制約がある場合があります。以降のセクションでは、各レポートの制限事項について説明します。
過去のバックフィルのサポート
すべてのレポートで同様の方法で過去のバックフィルがサポートされているわけではありません。レポートのリストと過去のバックフィルのサポートレベルは次のとおりです。
- 商品と商品の問題 - 14 日
- ローカル在庫 - 14 日
- 地域別在庫 - 14 日
- パフォーマンス - 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_id
は null
に設定されます。
すべてのレポートで MCA がサポートされているわけではありません。MCA は、次のレポートでサポートされています。
- 商品と商品の問題
- ローカル在庫
- 地域別在庫
始める前に
Google Merchant Center の転送を作成する前に、次のことを行ってください。
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- Google Merchant Center のデータを保存する BigQuery データセットを作成します。
- Pub/Sub の転送実行通知を設定する場合は、
pubsub.topics.setIamPolicy
権限が必要です。メール通知を設定するだけの場合、Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。
必要な権限
転送を作成するユーザーに、次の必要な権限が付与されていることを確認します。
BigQuery:
bigquery.transfers.update
(転送を作成する権限)- 抽出先データセットに対する
bigquery.datasets.get
とbigquery.datasets.update
の両方の権限
bigquery.transfers.update
権限、bigquery.datasets.update
権限、bigquery.datasets.get
権限は、IAM 事前定義ロールbigquery.admin
に含まれています。BigQuery Data Transfer Service での IAM ロールについて、詳しくはアクセス制御をご覧ください。Google Merchant Center
転送構成で使用されている Google Merchant Center アカウントへのアクセス。Google Merchant Center UI の [Users] セクションをクリックすると、アクセス権を確認できます。
価格競争力とベストセラーのデータにアクセスするには、まずマーケット インサイト プログラムを有効にする必要があります。
Google Merchant Center の転送を設定する
Google Merchant Center レポートのデータ転送を設定するには、以下が必要です。
- 販売者 ID またはマルチクライアント アカウント ID: これは、Google Merchant Center UI に表示されている販売者 ID です。
Google Merchant Center レポートのデータ転送を作成するには:
コンソール
Google Cloud コンソールの [BigQuery] ページに移動します。
[転送] をクリックします。
[転送を作成] をクリックします。
[転送の作成] ページで、次の操作を行います。
[ソースタイプ] セクションの [ソース] で、[Google Merchant Center] を選択します。
[転送構成名] セクションの [表示名] に、転送名(例:
My Transfer
)を入力します。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。[スケジュール オプション] セクションで:
[繰り返しの頻度] を選択します。[時間]、[日]、[週]、[月] を選択する場合は、頻度も指定する必要があります。[カスタム] を選択して、カスタムの繰り返しの頻度を指定することもできます。[オンデマンド] を選択した場合、手動で転送をトリガーすると、この転送が実行されます。
必要に応じて、[すぐに開始可能] を選択するか、[設定した時刻に開始] を選択して開始日と実行時間を指定します。
[開始日と実行時間] に、転送を開始する日付と時刻を入力します。現在の UTC 時刻から 24 時間以上後の値を指定してください。[すぐに開始可能] を選択した場合、このオプションは無効になります。
スケジュール オプションの設定を [今すぐ開始] のままにすると、最初の転送実行が直ちに開始され、
No data to transfer found for the Merchant account. If you have just created this transfer, you may need to wait for up to a day before the data of your Merchant account are prepared and available for the transfer.
というエラー メッセージで失敗します。スケジュールされている次回の転送は正常に実行されます。販売アカウントのデータが UTC 時間の同じ日に準備されている場合は、当日の実行のためのバックフィルを設定できます。
[転送先の設定] セクションの [宛先データセット] で、データを保存するために作成したデータセットを選択します。
[データソースの詳細] セクションの [販売者 ID] に、販売者 ID または MCA ID を入力します。
転送するレポートを選択します。詳細については、サポートされるレポートをご覧ください。
[サービス アカウント] メニューで、Google Cloud プロジェクトに関連付けられたサービス アカウントからサービス アカウントを選択します。ユーザー認証情報を使用する代わりに、サービス アカウントを転送に関連付けることができます。データ転送でサービス アカウントを使用する方法の詳細については、サービス アカウントの使用をご覧ください。
- フェデレーション ID でログインした場合、転送を作成するにはサービス アカウントが必要です。Google アカウントでログインした場合、転送用のサービス アカウントは省略可能です。
- サービス アカウントには必要な権限が付与されている必要があります。
(省略可)[通知オプション] セクションで、次の操作を行います。
[保存] をクリックします。
bq
bq mk
コマンドを入力して、転送作成フラグ --transfer_config
を指定します。次のフラグも必要です。
--data_source
--target_dataset
--display_name
--params
--project_id
フラグを指定して、特定のプロジェクトを指定することもできます。--project_id
を指定しない場合は、デフォルトのプロジェクトが使用されます。
bq mk \ --transfer_config \ --project_id=project_id \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source --service_account_name=service_account_name
ここで
- project_id は、プロジェクト ID です。
- dataset は、転送構成の抽出先データセットです。
- name は、転送構成の表示名です。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- parameters には、作成される転送構成のパラメータを JSON 形式で指定します。例:
--params='{"param":"param_value"}'
。- Google Merchant Center では、
merchant_id
パラメータを指定する必要があります。 export_products
パラメータは、商品と商品問題のデータを転送するかどうかを指定します。export_products
パラメータを指定しなくても、このパラメータはデフォルトで含まれています。このパラメータを明示的に含めて、true に設定することをおすすめします。export_regional_inventories
パラメータは、地域別在庫データを転送するかどうかを指定します。export_local_inventories
パラメータは、ローカル在庫データを転送するかどうかを指定します。export_price_benchmarks
パラメータは、価格ベンチマーク データを転送するかどうかを指定します。export_best_sellers
パラメータは、ベストセラー データを転送するかどうかを指定します。
- Google Merchant Center では、
- data_source は、データソース(
merchant_center
)です。 - service_account_name は、転送の認証に使用されるサービス アカウント名です。サービス アカウントは、転送の作成に使用した
project_id
が所有している必要があります。また、必要な権限がすべて付与されている必要があります。
たとえば、次のコマンドは、販売者 ID 1234
とターゲット データセット mydataset
を使用して、My Transfer
という名前の Google Merchant Center の転送を作成します。この転送はデフォルトのプロジェクト内に作成されます。
bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"merchant_id":"1234","export_products":"true","export_regional_inventories":"true","export_local_inventories":"true","export_price_benchmarks":"true","export_best_sellers":"true"}' \
--data_source=merchant_center
コマンドの初回実行時に、次のようなメッセージが表示されます。
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
メッセージの指示に従って、認証コードをコマンドラインに貼り付けます。
この転送を作成したばかりの場合は、販売アカウントのデータが準備されて転送に使用できるようになるまでに最長で 1 日間かかることがあります。スケジュールされている次回の転送は正常に実行されます。販売アカウントのデータが UTC 時間の同じ日に準備されている場合は、当日の実行のためのバックフィルを設定できます。
API
projects.locations.transferConfigs.create
メソッドを使用して、TransferConfig
リソースのインスタンスを指定します。
Google Merchant Center の転送設定のトラブルシューティング
転送を設定する際に問題が発生した場合は、BigQuery Data Transfer Service 転送設定のトラブルシューティングの Google Merchant Center の転送に関する問題をご覧ください。
データに対するクエリを実行する
データが 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
価格ベンチマーク サンプル クエリ
商品価格をベンチマークと比較する
次のクエリは、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