Transferts Google Merchant Center

Le service de transfert de données BigQuery pour Google Merchant Center vous permet de programmer et de gérer automatiquement des tâches de chargement récurrentes pour les données de rapports Google Merchant Center.

Rapports acceptés

Le service de transfert de données BigQuery pour Google Merchant Center accepte actuellement les données suivantes :

Produits et problèmes de produits

  • Cela inclut les données produit fournies à Merchant Center via des flux ou via l'API Content pour Shopping. Sont également inclus les problèmes détectés par Google au niveau des articles pour vos produits. Vous pouvez consulter ces données dans Google Merchant Center ou interroger l'API Content pour Shopping.

  • Pour plus d'informations sur le chargement de ces données dans BigQuery, consultez le schéma de la table des produits de Google Merchant Center.

Comparatif des prix

Meilleures ventes

  • Cela inclut les données sur les produits les plus populaires dans les annonces Shopping, ainsi que si vous avez ou non l'article dans votre inventaire.

  • Elles sont basées sur le rapport sur les meilleures ventes disponible via Google Merchant Center.

  • Les rapports sur les meilleurs ventes sont composés des tables suivantes :

    1. BestSellers_TopProducts_ est une liste classée des meilleurs produits par pays et catégorie de produits Google. Cette table représente les données de tous les marchands des annonces Shopping.
    2. BestSellers_ProductInventory_ est une table de mappage pour les meilleurs produits des annonces Shopping et votre inventaire.
  • Pour plus d'informations sur le chargement des données des meilleures ventes dans BigQuery, consultez les schémas des tables produits populaires et inventaire des produits Google Merchant Center.

Le service de transfert de données BigQuery pour Google Merchant Center est actuellement compatible avec les options de création de rapports suivantes :

Option de création de rapports Support
Horaires

Tous les jours, à l'heure de création du transfert (par défaut).

Vous pouvez configurer une heure spécifique.

Limites

Tous les transferts Merchant Center sont soumis aux limitations suivantes :

  • Après avoir créé un transfert pour votre ID de marchand, vous devrez peut-être attendre 90 minutes avant que les données de votre compte marchand soient préparées et disponibles pour le transfert.
  • Vous ne pouvez pas configurer de durée maximale de remplissage. Actuellement, les remplissages historiques ne sont pas compatibles. Vous ne pouvez configurer un remplissage que pour ce jour même.

Produits et problèmes sur les produits

  • Les données relatives aux produits et aux problèmes qui y sont associés dans BigQuery ne fournissent pas une représentation en temps réel de votre compte marchand. Elles sont transférées en mode de traitement par lot et peuvent accuser un retard pouvant aller jusqu'à 15 heures. Pour voir la fraîcheur de vos données dans BigQuery, affichez l'horodatage Data freshness (Fraîcheur des données) dans l'onglet Details (Détails) de la table Produits. Horodatage de la fraîcheur des données pour les tables de produits

Comparatif des prix

  • Les données du comparatif des prix ne représentent pas une vue en temps réel des comparatifs des prix. Reportez-vous au champ price_benchmark_timestamp du schéma du comparatif des prix pour comprendre quand elles ont été mises à jour.
  • Tous les produits ne disposent pas d'un comparatif des prix.

Meilleures ventes

  • Tous les pays ne contiendront pas de données de classement. Pays inclus dans le rapport : US, DE, FR, UK, NL, JP, AU, CA, SE, IT, ES, CH, DK, CZ, BE et RU.
  • Seuls les articles les plus populaires dans les annonces Shopping sont inclus dans la table BestSellers_TopProducts_.

Compatibilité avec les multicomptes (MC)

Les clients existants détenant plusieurs ID de marchand sont invités à configurer un multicompte (MC) parent. La configuration d'un MC vous permet de créer un seul transfert pour tous vos ID de marchand.

La création d'un multicompte Google Merchant Center offre plusieurs avantages par rapport à l'utilisation de plusieurs ID de marchand :

  • Vous n'avez plus besoin de gérer plusieurs transferts pour transférer les données de rapport de plusieurs ID de marchand.
  • Les requêtes impliquant plusieurs ID de marchand sont beaucoup plus simples à écrire car toutes les données d'ID de marchand sont stockées dans la même table.
  • L'utilisation d'un multicompte atténue les problèmes potentiels de quota de tâche de chargement BigQuery, car toutes vos données d'ID de marchand sont chargées dans la même tâche.

Un inconvénient possible de l'utilisation d'un MC est le risque d'augmentation des coûts de requête ultérieurs. Étant donné que toutes vos données sont stockées dans la même table, les requêtes qui extraient les données pour un ID de marchand individuel doivent toujours analyser la table entière.

Si vous utilisez un MC, l'ID de ce multicompte apparaît sous aggregator_id et les sous-comptes individuels sont répertoriés sous merchant_id. Pour les comptes qui n'utilisent pas de MC, aggregator_id est défini sur null.

Avant de commencer

Avant de créer un transfert Google Merchant Center :

  • Vérifiez que vous avez effectué toutes les actions requises pour activer le service de transfert de données BigQuery.
  • Créez un ensemble de données BigQuery pour stocker les données Google Merchant Center.
  • Si vous envisagez de créer des transferts à l'aide de l'UI Web classique de BigQuery, autorisez les pop-ups de bigquery.cloud.google.com pour pouvoir afficher la fenêtre des autorisations. Vous devez autoriser le service de transfert de données BigQuery pour permettre à Google Merchant Center de gérer vos fiches produit et vos comptes dans Google Shopping.
  • Si vous avez l'intention de configurer des notifications d'exécution de transfert pour Pub/Sub, vous devez disposer des autorisations pubsub.topics.setIamPolicy. Les autorisations Pub/Sub ne sont pas nécessaires si vous ne configurez que des notifications par e-mail. Pour en savoir plus, consultez la page Notifications d'exécution du service de transfert de données BigQuery.

Autorisations requises

Assurez-vous que la personne qui crée le transfert dispose des autorisations requises suivantes :

  • BigQuery :

    • Autorisations bigquery.transfers.update pour créer le transfert
    • Autorisations bigquery.datasets.update sur l'ensemble de données cible

    Le rôle Cloud IAM prédéfini bigquery.admin inclut les autorisations bigquery.transfers.update et bigquery.datasets.update. Pour en savoir plus sur les rôles Cloud IAM dans le cadre du service de transfert de données BigQuery, consultez la documentation de référence sur le Contrôle des accès.

  • Google Merchant Center :

Configurer un transfert Google Merchant Center

La configuration d'un transfert de données pour les rapports Google Merchant Center nécessite les éléments suivants :

  • ID de marchand ou ID de multicompte : il s'agit de l'ID de marchand indiqué dans la section supérieure gauche de l'interface utilisateur de Google Merchant Center.

Pour créer un transfert de données pour les rapports Google Merchant Center, procédez comme suit :

Console

  1. Accédez à l'UI Web de BigQuery dans Cloud Console.

    Accéder à Cloud Console

  2. Cliquez sur Transferts.

  3. Cliquez sur Créer un transfert.

  4. Sur la page Create Transfer (Créer un transfert) :

    • Dans la section Source type (Type de source), sous Source sélectionnez Google Merchant Center.

    • Dans la section Transfer config name (Nom de la configuration de transfert), sousDisplay name (Nom à afficher), saisissez un nom pour le transfert, tel que My Transfer. Ce nom peut correspondre à n'importe quelle valeur permettant d'identifier facilement le transfert si vous devez le modifier ultérieurement.

      Nom du transfert

    • Dans la section Schedule Options (Options de programmation), sous Programmation, cliquez sur Start at a set time (Démarrer à une heure définie).

      • Pour le champ Repeats (Périodicité), choisissez l'une des options suivantes pour la fréquence d'exécution du transfert :

        • Daily (Tous les jours) (par défaut)
        • Weekly (Toutes les semaines)
        • Monthly (Tous les mois)
        • Custom (Personnalisé)
        • On-demand (À la demande)
      • Pour le champ Start date and run time (Date de début et heure d'exécution), saisissez la date et l'heure de début du transfert. Cette valeur doit être d'au moins 90 minutes à partir de l'heure UTC actuelle. Si vous avez choisi Start now (Démarrer maintenant), cette option est désactivée.

        Planning de transfert

        Si vous laissez les options de programmation définies sur Start now (Démarrer maintenant), le premier transfert commencera immédiatement et échouera avec le message d'erreur suivant : No data to transfer found for the Merchant account. If you have just created this transfer, you may need to wait for up to 90 minutes before the data of your Merchant account are prepared and available for the transfer.. Si tel est le cas, attendez 90 minutes, puis configurez un remplissage pour aujourd'hui ou attendez jusqu'à demain pour la prochaine exécution programmée.

    • Dans la section Destination settings (Paramètres de destination), pour le champ Destination dataset (Ensemble de données de destination), choisissez l'ensemble de données que vous avez créé pour stocker vos données.

      Transférer un ensemble de données

    • Dans la section Data Source Details (Détails de la source de données), sous Merchant ID (ID de marchand), entrez votre ID de marchand ou votre ID de MC.

      Sélectionnez le ou les rapports que vous souhaitez transférer. Voir Rapports acceptés pour plus de détails.

      Données de transfert de Google Merchant Center.

    • (Facultatif) Dans la section Options de notification :

      • Cliquez sur le bouton pour activer les notifications par e-mail. Lorsque vous activez cette option, l'administrateur de transfert reçoit une notification par e-mail en cas d'échec de l'exécution du transfert.
      • Pour le champ Select a Pub/Sub topic (Sélectionner un sujet Pub/Sub), choisissez le nom de votre sujet ou cliquez sur Create a topic (Créer un sujet). Cette option configure les notifications d'exécution Cloud Pub/Sub pour votre transfert.
  5. Cliquez sur Enregistrer.

UI classique

  1. Accédez à l'UI Web classique de BigQuery.

    Accéder à l'UI Web classique de BigQuery

  2. Cliquez sur Transfers (Transferts).

  3. Cliquez sur Add Transfer (Ajouter un transfert).

  4. Sur la page New Transfer (Nouveau transfert) :

    • Pour le champ Source, sélectionnez Google Merchant Center.
    • Pour le champ Display name (Nom à afficher), saisissez le nom du transfert, par exemple My Transfer. Ce nom peut correspondre à n'importe quelle valeur permettant d'identifier facilement le transfert si vous devez le modifier ultérieurement.
    • Pour le champ Schedule (Programmation), cliquez sur Edit (Modifier) et définissez Starting (UTC) (Heure de début [UTC]) sur au moins 90 minutes après l'heure actuelle.

      Planning de transfert

      Si vous laissez les paramètres de programmation par défaut, la première exécution du transfert démarrera immédiatement et échouera avec le message d'erreur suivant : No data to transfer found for the Merchant account. If you have just created this transfer, you may need to wait for up to 90 minutes before the data of your Merchant account are prepared and available for the transfer.. Si tel est le cas, attendez 90 minutes, puis configurez un remplissage pour aujourd'hui ou attendez jusqu'à demain pour la prochaine exécution programmée.

    • Pour le champ Destination dataset (Ensemble de données de destination), choisissez l'ensemble de données que vous avez créé pour stocker vos données Google Merchant Center.

    • Pour le champ Merchant ID (ID de marchand), saisissez votre ID de marchand ou votre ID de multicompte.

      Transfert Google Merchant Center

    • Sélectionnez le ou les rapports que vous souhaitez transférer. Voir Rapports acceptés pour plus de détails.

      Données de transfert de Google Merchant Center.

    • (Facultatif) Développez la section Advanced (Avancé), puis configurez les notificationsd'exécution pour votre transfert.

      • Pour le champ Pub/Sub topic (Sujet Pub/Sub), saisissez le nom de votre sujet(par exemple, projects/myproject/topics/mytopic).
      • Cochez la case Send email notifications (Envoyer des notifications par e-mail) pour autoriser les notifications par e-mail en cas d'échec de l'exécution des transferts.
      • Ne cochez pas la case Disabled (Désactivé) lorsque vous configurez un transfert. Pour désactiver les transferts existants, consultez la page Utiliser les transferts.

        Sujet Pub/Sub

  5. Cliquez sur Ajouter.

  6. Lorsque vous y êtes invité, cliquez sur Allow (Autoriser) pour autoriser le service de transfert de données BigQuery à gérer vos listes de produits et vos comptes marchands pour Google Shopping, ainsi qu'à accéder aux données dans BigQuery et à les gérer. Vous devez autoriser les fenêtres pop-up de bigquery.cloud.google.com pour afficher la fenêtre des autorisations.

    Boîte de dialogue des autorisations de transfert pour Merchant Center

CLI

Saisissez la commande bq mk, puis spécifiez l'indicateur de création de transfert --transfer_config. Les paramètres suivants sont également requis :

  • --data_source
  • --target_dataset
  • --display_name
  • --params

Vous pouvez également indiquer l'option --project_id pour spécifier un projet particulier. Si --project_id n'est pas spécifié, le projet par défaut est utilisé.

bq mk \
--transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source

Où :

  • project_id est l'ID du projet.
  • dataset est l'ensemble de données cible de la configuration de transfert.
  • name est le nom à afficher pour la configuration de transfert. Ce nom peut correspondre à toute valeur permettant d'identifier facilement le transfert si vous devez le modifier ultérieurement.
  • parameters contient les paramètres de la configuration de transfert créée au format JSON. Exemple : --params='{"param":"param_value"}'.
    • Pour le champ Google Merchant Center, vous devez indiquer le paramètre merchant_id.
    • Le paramètre export_products spécifie s'il faut transférer les données du produit et des problèmes de produit. Ce paramètre est inclus par défaut, même si vous ne spécifiez pas le paramètre export_products. Google vous recommande d'inclure ce paramètre explicitement et de le définir sur "true".
    • Le paramètre export_price_benchmarks indique si les données du comparatif des prix doivent être transférées.
    • Le paramètre export_best_sellers indique si les données des meilleures ventes doivent être transférées.
  • data_source représente la source de données : merchant_center.

Par exemple, la commande suivante crée un transfert Google Merchant Center nommé My Transfer utilisant l'ID de marchand 1234 et l'ensemble de données cible mydataset. Le transfert est créé dans le projet par défaut.

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"merchant_id":"1234","export_products":"true","export_price_benchmarks":"true","export_best_sellers":"true"}' \
--data_source=merchant_center

La première fois que vous exécutez la commande, vous recevez un message de ce type :

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

Suivez les instructions du message et collez le code d'authentification sur la ligne de commande.

Si vous venez de créer ce transfert, vous devrez peut-être attendre 90 minutes maximum avant que les données de votre compte marchand ne soient préparées et disponibles pour le transfert. Si cela se produit, attendez 90 minutes, puis configurez un remplissage pour aujourd'hui ou attendez jusqu'à demain pour la prochaine exécution programmée.

API

Utilisez la méthode projects.locations.transferConfigs.create et fournissez une instance de la ressource TransferConfig.

Résoudre des problèmes de configuration de transfert Google Merchant Center

Si vous rencontrez des problèmes lors de la configuration de votre transfert, reportez-vous à la section Problèmes de transfert avec Google Merchant Center à la page Résolution des problèmes de configuration du transfert avec le service de transfert de données BigQuery.

Interroger les données

Lorsque les données sont transférées vers BigQuery, elles sont écrites dans des tables partitionnées avec date d'ingestion. Pour plus d'informations, consultez la page Présentation des tables partitionnées.

Lorsque vous interrogez votre table Google Merchant Center, vous devez utiliser la pseudo-colonne _PARTITIONTIME ou _PARTITIONDATE dans votre requête. Pour en savoir plus, consultez la page Interroger des tables partitionnées.

La table Products_ contient des champs imbriqués et répétés. Pour en savoir plus sur la gestion des données imbriquées et répétées, consultez la section Différences dans la gestion des champs répétés dans la documentation SQL standard.

Exemples de requêtes Google Merchant Center

Vous pouvez utiliser les exemples de requêtes Google Merchant Center suivants pour analyser les données transférées. Vous pouvez également interroger les données dans un outil de visualisation tel que Google Data Studio.

Dans chacune des requêtes suivantes, remplacez dataset par le nom de votre ensemble de données. Remplacez merchant_id par votre ID de marchand. Si vous utilisez un MC, remplacez merchant_id par votre ID de MC.

Exemples de requêtes sur les produits et les problèmes de produits

Statistiques sur les produits et les problèmes de produits

L'exemple de requête suivant fournit le nombre de produits, de produits présentant des problèmes et de problèmes par jour.

Console

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

CLI

bq query --use_legacy_sql=false '
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'

Produits refusés pour les annonces Shopping

L'exemple de requête suivant fournit le nombre de produits dont l'affichage n'est pas approuvé dans les annonces Shopping. Le refus de ces produits peut résulter d'une exclusion ou d'un problème avec le produit.

Console

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

CLI

bq query --use_legacy_sql=false '
SELECT
  _PARTITIONDATE AS date,
  COUNT(*) AS num_products
FROM
  dataset.Products_merchant_id,
  UNNEST(destinations) AS destination
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD' AND
  destination.status = 'disapproved'
GROUP BY
  date
ORDER BY
  date DESC'

Produits présentant des problèmes de refus

L'exemple de requête suivant récupère le nombre de produits présentant des problèmes de refus.

Console

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

CLI

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

Exemples de requêtes de comparatif de prix

Comparer les prix des produits par rapport aux comparatifs

La requête suivante joint les données Products et Price Benchmarks pour renvoyer la liste des produits et des comparatifs associés.

Console

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

CLI

bq query --use_legacy_sql=false '
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'

Exemples de requêtes de meilleures ventes

Produits populaires pour une catégorie et un pays donnés

La requête suivante renvoie les produits populaires de la catégorie des smartphones aux États-Unis.

Console

SELECT
  rank,
  previous_rank,
  (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

CLI

bq query --use_legacy_sql=false '
SELECT
  rank,
  previous_rank,
  (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'

Produits populaires de votre inventaire

La requête suivante joint les données BestSellers_ProductInventory_ et BestSellers_TopProducts_ pour renvoyer une liste des produits populaires que vous avez actuellement dans votre inventaire.

Console

WITH latest_top_products AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
),
latest_top_products_inventory AS
(
  SELECT
    *
  FROM
    data_best_sellers.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
ON top_products.rank_id = inventory.rank_id

CLI

bq query --use_legacy_sql=false '
WITH latest_top_products AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
),
latest_top_products_inventory AS
(
  SELECT
    *
  FROM
    data_best_sellers.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
ON top_products.rank_id = inventory.rank_id'