Transferências do Google Merchant Center

Com o serviço de transferência de dados do BigQuery para o Google Merchant Center, você programa e gerencia automaticamente jobs de carregamento recorrentes relacionados a dados de relatórios do Google Merchant Center.

Relatórios compatíveis

No momento, o serviço de transferência de dados do BigQuery para Google Merchant Center aceita os dados a seguir:

Produtos e problemas relacionados

  • Isso inclui dados do produto fornecidos ao Merchant Center por meio de feeds ou da API Content for Shopping. Também inclui problemas no nível do item detectados nos seus produtos pelo Google. É possível visualizar esses dados no Google Merchant Center ou consultando a API Content for Shopping.

  • Para ver informações sobre como esses dados são carregados no BigQuery, consulte o esquema da tabela de produtos do Google Merchant Center.

Benchmarks de preço

Mais vendidos

  • Isso inclui dados sobre os produtos mais populares nos anúncios do Shopping, bem como se você tem ou não o item no seu inventário.

  • Ele se baseia no relatório de mais vendidos disponível no Google Merchant Center.

  • Os relatórios de mais vendidos são compostos das seguintes tabelas:

    1. BestSellers_TopProducts_ é uma lista classificada dos principais produtos por país e categoria Google do produto. Esta tabela representa dados de todos os comerciantes nos anúncios do Shopping.
    2. BestSellers_ProductInventory_ é uma tabela de mapeamento para os principais produtos dos anúncios do Shopping e seu inventário.
  • Para ve rinformações sobre como os dados dos melhores vendedores são carregados no BigQuery, consulte os esquemas de tabela principais produtos e inventário de produtos do Google Merchant Center.

No momento, o serviço de transferência de dados do BigQuery para o Google Merchant Center é compatível com as opções de relatório a seguir:

Opção de relatório Suporte
Programação

Diariamente, no horário em que a transferência é criada pela primeira vez (padrão).

Você pode configurar a hora do dia.

Limitações

Todas as transferências do Merchant Center estão sujeitas às limitações a seguir:

  • Depois de criar uma transferência para o seu ID do comerciante, pode ser necessário aguardar até 90 minutos para que os dados da sua conta do comerciante estejam preparados e disponíveis para transferência.
  • Não é possível configurar a duração de um preenchimento máximo. No momento, os preenchimentos históricos não são compatíveis. É possível configurar um preenchimento somente para o dia atual.

Produto e problemas do produto

  • Os dados de produtos e de problemas relacionados no BigQuery não representam a visualização em tempo real da conta do Merchant. Os dados são transferidos em lote e podem estar até 15 horas atrasados. Para ver se os dados são recentes no BigQuery, confira o carimbo de data/hora "Atualização de dados" na guia "Detalhes" da tabela "Produtos". Carimbo de data/hora da atualização dos dados nas tabelas de

Benchmarks de preço

  • Os dados dos benchmarks de preço não representam uma visualização em tempo real desses benchmarks. Confira o campo price_benchmark_timestamp no esquema de benchmarks de preço para saber quando eles foram atualizados.
  • Nem todos os produtos terão um benchmark de preço.

Mais vendidos

  • Nem todos os países conterão dados de classificação. Países incluídos no relatório: EUA, DE, FR, UK, NL, JP, AU, CA, SE, IT, ES, CH, DK, CZ, BE e RU.
  • Somente os itens mais frequentemente mostrados nos anúncios do Shopping estão incluídos na tabela BestSellers_TopProducts_.

Compatibilidade com a conta de múltiplos clientes (MCA)

É recomendável que os clientes com vários IDs de comerciante configurem uma conta de múltiplos clientes (MCA, na sigla em inglês) mãe. Assim, é possível criar uma única transferência para todos os IDs do comerciante.

O uso de MCAs do Google Merchant Center oferece vários benefícios em comparação com IDs do comerciante individuais:

  • Não será mais necessário gerenciar várias transferências para mover dados de relatórios de vários IDs do comerciante.
  • Consultas que envolvem vários IDs do comerciante serão muito mais fáceis de escrever porque todos os dados deles são armazenados na mesma tabela.
  • O uso de MCAs reduzirá os possíveis problemas na cota de jobs de carregamento do BigQuery porque todos os dados do ID do comerciante são carregados no mesmo job.

Uma desvantagem do uso de MCAs é que os custos de consultas posteriores provavelmente serão mais altos. Como todos os dados são armazenados na mesma tabela, as consultas que recuperam dados de um ID do comerciante individual ainda precisarão verificar a tabela inteira.

Se você estiver usando uma MCA, o ID dela será listado em aggregator_id, e as subcontas individuais serão listadas em merchant_id. Para as contas que não usam uma MCA, aggregator_id está definido como null.

Antes de começar

Antes de criar uma transferência do Google Merchant Center:

  • Verifique se você realizou todas as ações necessárias para ativar o serviço de transferência de dados do BigQuery.
  • Crie um conjunto de dados do BigQuery para armazenar os dados do Google Merchant Center.
  • Se você quiser criar transferências usando a IU clássica da Web do BigQuery, permita os pop-ups de bigquery.cloud.google.com. Assim, será possível ver a janela de permissões. É necessário permitir que o serviço de transferência de dados do BigQuery para Google Merchant Center gerencie suas contas e informações de produtos no Google Shopping.
  • Se você pretende configurar notificações de execução de transferência do Pub/Sub, é preciso ter permissões pubsub.topics.setIamPolicy. As permissões do Pub/Sub não serão necessárias se você configurar notificações por e-mail. Para mais informações, consulte Notificações de execução do serviço de transferência de dados do BigQuery.

Permissões exigidas

A pessoa que está criando a transferência precisa ter as seguintes permissões necessárias:

  • BigQuery:

    • Permissões bigquery.transfers.update para criar a transferência
    • Permissões bigquery.datasets.update no conjunto de dados de destino

    O papel predefinido bigquery.admin do Cloud IAM inclui as permissões bigquery.transfers.update e bigquery.datasets.update. Para mais informações sobre os papéis do Cloud IAM no serviço de transferência de dados do BigQuery, consulte a Referência do controle de acesso.

  • Google Merchant Center:

    • Acesso à conta do Google Merchant Center usada na configuração da transferência. Para verificar o acesso, clique na seção Usuários na IU do Google Merchant Center.

    • Para acessar a competitividade de preços e os dados dos melhores vendedores, primeiro você deve ativar o Programa Informações de mercado.

Como configurar uma transferência do Google Merchant Center

A configuração de uma transferência de dados do relatório do Google Merchant Center requer o seguinte:

  • ID do comerciante ou da conta de múltiplos clientes: é o ID do comerciante mostrado na seção superior à esquerda da IU do Google Merchant Center.

Para criar uma transferência de dados do relatório do Google Merchant Center:

Console

  1. Acesse a IU da Web do BigQuery no Console do Cloud.

    Acessar o Console do Cloud

  2. Clique em Transferências.

  3. Clique em Criar transferência.

  4. Na página Criar transferência:

    • Na seção Tipo de origem, em Origem, escolha Google Merchant Center.

    • No campo Nome de exibição da seção Nome da configuração de transferência, insira um nome para a transferência, como My Transfer. Esse nome pode ter qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la futuramente.

      Nome da transferência

    • Em Programação, na seção Opções de programação, clique em Começar em um horário definido.

      • Em Repetições, escolha uma opção para a frequência de execução da transferência.

        • Diário (padrão)
        • Semanal
        • Mensal
        • Personalizada
        • Sob demanda
      • Em Data e hora de início, insira a data e a hora para iniciar a transferência. Esse valor precisa ser pelo menos 90 minutos a partir do horário atual em UTC. Se você escolheu Começar agora, essa opção estará desativada.

        Programação da transferência

        Se você deixar as opções de programação definidas como Começar agora, a primeira execução da transferência será iniciada imediatamente e falhará com esta mensagem de erro: 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. Se isso ocorrer, aguarde 90 minutos e configure um preenchimento para hoje ou aguarde até amanhã pela próxima execução programada.

    • Na seção Configurações de destino, em Conjunto de dados de destino, escolha o conjunto criado para armazenar seus dados.

      Conjunto de dados da transferência

    • Na seção Detalhes da fonte de dados, em ID do comerciante, insira o ID do comerciante ou da MCA.

      Selecione os relatórios que você quer transferir. Consulte Relatórios suportados para mais detalhes.

      Dados de transferência do Google Merchant Center.

    • Opcional: na seção Opções de notificação:

      • Clique no botão para ativar as notificações por e-mail. Quando você ativa essa opção, o administrador de transferência recebe uma notificação por e-mail se uma execução de transferência falha.
      • Em Selecionar um tópico do Pub/Sub, escolha o nome do seu tópico ou clique em Criar um tópico. Essa opção configura notificações de execução do Pub/Sub da sua transferência.
  5. Clique em Salvar.

IU clássica

  1. Acesse a IU clássica da Web do BigQuery.

    Acessar a IU clássica da Web do BigQuery

  2. Clique em Transfers.

  3. Clique em Adicionar transferência.

  4. Na página Nova transferência:

    • Em Origem, escolha Google Merchant Center.
    • Em Nome de exibição, insira um nome para a transferência, como My Transfer. Ele pode ter qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la no futuro.
    • Em Programação, clique em Editar e altere a Hora de início (UTC) para pelo menos 90 minutos a partir do horário atual.

      Programação da transferência

      Se você usar as configurações de programação padrão, a primeira transferência será iniciada imediatamente e falhará com esta mensagem de erro: 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. Se isso ocorrer, aguarde 90 minutos e configure um preenchimento para hoje ou aguarde até amanhã pela próxima execução programada.

    • Em Conjunto de dados de destino, escolha o conjunto que você criou para armazenar os dados do Google Merchant Center.

    • Em ID do comerciante, insira o ID do comerciante ou da MCA.

      Transferência do Google Merchant Center

    • Selecione os relatórios que você quer transferir. Consulte Relatórios suportados para mais detalhes.

      Dados de transferência do Google Merchant Center.

    • (Opcional) Expanda a seção Avançado e configure as notificações de execução da transferência.

      • Em Tópico do Pub/Sub, insira o nome do seu tópico. Por exemplo: projects/myproject/topics/mytopic.
      • Marque Enviar notificações por e-mail para permitir notificações por e-mail sobre falhas na execução da transferência.
      • Não marque Desativada ao configurar uma transferência. Para desativar transferências, consulte Como trabalhar com transferências.

        Tópico do Pub/Sub

  5. Clique em Adicionar.

  6. Quando solicitado, clique em Permitir para conceder ao serviço de transferência de dados do BigQuery permissão para gerenciar as informações de produto e as contas do Merchant do Google Shopping e para acessar e controlar os dados no BigQuery. É necessário permitir pop-ups do endereço bigquery.cloud.google.com para ver a janela de permissões.

    Caixa de diálogo das permissões de transferência do Merchant Center

CLI

Insira o comando bq mk e forneça a sinalização de execução da transferência --transfer_config. As sinalizações a seguir também são obrigatórias:

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

Também é possível fornecer a sinalização --project_id para especificar um projeto determinado. Se --project_id não for especificado, o projeto padrão será usado.

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

Em que:

  • project_id é o ID do projeto;
  • dataset é o conjunto de dados de destino na configuração da transferência;
  • name é o nome de exibição na configuração da transferência. Esse nome pode ser qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la futuramente;
  • parameters contém os parâmetros da configuração da transferência criada no formato JSON. Por exemplo, --params='{"param":"param_value"}'.
    • No Google Merchant Center, você precisa fornecer o parâmetro merchant_id.
    • O parâmetro export_products especifica se o produto e os dados de problemas do produto serão transferidos. Esse parâmetro está incluído por padrão, mesmo que você não especifique o parâmetro export_products. O Google recomenda que você inclua esse parâmetro explicitamente e defina-o como "true";
    • O parâmetro export_price_benchmarks especifica se os dados de benchmark de preço serão transferidos;
    • O parâmetro export_best_sellers especifica se os dados dos melhores vendedores devem ser transferidos.
  • data_source é a fonte de dados: merchant_center.

Por exemplo, com o comando a seguir, você cria uma transferência do Google Merchant Center chamada My Transfer usando o ID do comerciante 1234 e o conjunto de dados de destino mydataset. A transferência é criada no projeto padrão.

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

Ao executar o comando pela primeira vez, você recebe uma mensagem como esta:

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

Siga as instruções na mensagem e cole o código de autenticação na linha de comando.

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." Se isso ocorrer, aguarde 90 minutos e configure um preenchimento para hoje ou aguarde até amanhã pela próxima execução programada.

API

Use o método projects.locations.transferConfigs.create e forneça uma instância do recurso TransferConfig.

Solução de problemas com a configuração de transferências do Google Merchant Center

Se você tiver problemas para configurar a transferência, consulte Problemas de transferência do Google Merchant Center em Solução de problemas com a configuração do serviço de transferência de dados do BigQuery.

Como consultar dados

Quando os dados são transferidos para o BigQuery, eles são gravados em tabelas particionadas por tempo de processamento. Para mais informações, consulte Introdução às tabelas particionadas.

Ao consultar a tabela do Google Merchant Center, você precisa usar a pseudocoluna _PARTITIONTIME ou _PARTITIONDATE. Para mais informações, veja Como consultar tabelas particionadas.

A tabela Products_ contém campos aninhados e repetidos. Para mais informações sobre como gerenciar dados aninhados e repetidos, consulte Diferenças no tratamento dos campos repetidos na documentação do SQL padrão.

Amostras de consultas do Google Merchant Center

Use as amostras de consulta do Google Merchant Center a seguir para analisar os dados transferidos. Também é possível usar as consultas em uma ferramenta de visualização, como o Google Data Studio.

Em todas as consultas a seguir, substitua dataset pelo nome do conjunto de dados. Substitua merchant_id pelo ID do comerciante. Se você estiver usando uma MCA, substitua merchant_id pelo ID dela.

Consultas de amostra de produtos e problemas de produtos

Estatísticas de produtos e problemas relacionados

A amostra de consulta a seguir fornece o número de produtos, os produtos com problemas e os problemas por dia.

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'

Produtos reprovados para os anúncios do Shopping

A amostra de consulta a seguir fornece o número de produtos que não foram aprovados para serem exibidos nos anúncios do Shopping. Isso pode acontecer porque o produto foi excluído ou tem algum problema.

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'

Produtos com problemas reprovados

A amostra de consulta a seguir recupera o número de produtos com problemas reprovados.

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'

Consultas de amostra de benchmarks de preço

Comparar preços de produtos com comparativos de mercado

A consulta a seguir mescla os dados de Products e Price Benchmarks para retornar a lista de produtos e comparativos de mercado associados:

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'

Consultas de amostra dos mais vendidos

Principais produtos para uma determinada categoria e país

A consulta a seguir retorna os principais produtos para a categoria de smartphone nos EUA.

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'

Principais produtos no seu inventário

A consulta a seguir une os dados BestSellers_ProductInventory_ e BestSellers_TopProducts_ para retornar uma lista dos principais produtos que você possui atualmente no seu inventário.

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'