Transferencias de Google Merchant Center

El Servicio de transferencia de datos de BigQuery para Google Merchant Center te permite programar y administrar trabajos de carga recurrentes para los datos de informes de Google Merchant Center de manera automática.

Informes compatibles

Por el momento, en el Servicio de transferencia de datos de BigQuery para Google Merchant Center se admiten los siguientes datos:

Productos y problemas de productos

  • Esto incluye los datos de productos que se porcionan a Merchant Center mediante feeds o a través de la Content API for Shopping. También se incluyen los problemas de nivel de artículo que Google detecta para tus productos. Estos datos se pueden ver en Google Merchant Center o mediante una consulta a la Content API for Shopping.

  • Para obtener información sobre cómo se cargan estos datos en BigQuery, consulte el esquema de la tabla de productos de Google Merchant Center.

Comparativas de precios

  • Esto incluye datos de Comparativas de precios a nivel de producto y se basa en las mismas definiciones que el informe de competitividad de precios disponible a través de Google Merchant Center.

  • Para obtener información sobre cómo se cargan estos datos en BigQuery, consulte el esquema de tabla de puntos de Comparativas de precios de Google Merchant Center.

Los más vendidos

  • Esto incluye los datos sobre los productos y las marcas más populares en los anuncios de Shopping y las fichas no pagadas, además de saber si los tienes en tu inventario.

  • Se basa en el informe de los mejores vendedores disponible mediante Google Merchant Center.

  • Los informes de los mejores vendedores se componen de las siguientes tablas:

    1. BestSellers_TopProducts_ es una lista clasificada de productos principales por país y categoría de producto de Google. En esta tabla, se representan los datos de todos los comercios en los anuncios de Shopping y las fichas no pagadas.
    2. BestSellers_TopProducts_Inventory_ es una tabla de asignación entre los productos principales y tu inventario.
    3. BestSellers_TopBrands_ es una lista clasificada de marcas principales, calculadas por país y categoría de producto de Google. Representa los datos de todos los comercios en los anuncios de Shopping y las fichas no pagadas.
  • Para obtener información sobre cómo se cargan los datos de los más vendidos en BigQuery, consulta los esquemas de tablas de productos principales, inventario de productos y marcas principales de Google Merchant Center.

Por el momento, el Servicio de transferencia de datos de BigQuery para Google Merchant Center admite las siguientes opciones de informes:

Opción de informe Asistencia
Programa

Configurable con información diaria, semanal, mensual o personalizada. De forma predeterminada, se configura a diario cuando se crea la transferencia. El intervalo mínimo entre transferencias es de 6 horas.

Limitaciones

Las transferencias de Merchant Center están sujetas a las siguientes limitaciones:

  • Después de crear una transferencia para tu ID de Merchant Center, puede que tengas que esperar hasta 90 minutos antes de que los datos de tu cuenta de Merchant estén listos para la transferencia.
  • No puedes configurar una duración máxima de reabastecimiento. Por el momento, los reabastecimientos históricos no son compatibles. Puedes configurar un reabastecimiento solo por hoy.

Productos y problemas con productos

  • Los datos de productos y de problemas de productos en BigQuery no representan la vista en tiempo real de tu cuenta del comerciante. Para ver el cronograma de tus datos, consulta el campo product_data_timestamp en el esquema.

Comparativas de precios

  • Los datos de las Comparativas de precios no representan la vista en tiempo real de las Comparativas de precios. Para ver el cronograma de tus datos, consulta el campo price_benchmark_timestamp en el esquema de comparativas de precios.
  • No todos los productos tendrán una comparativa de precios.

Los más vendidos

  • No todos los países contendrán los datos de clasificación. Países incluidos en el informe: US, DE, FR, UK, NL, JP, AU, CA, SE, IT, ES, CH, DK, CZ, BE, y RU.
  • Los datos de los más vendidos no representan una vista en tiempo real de las clasificaciones de la marca. Para ver el cronograma de tus datos, consulta el campo rank_timestamp en el esquema BestSellers_TopProducts_ y BestSellers_TopBrands_.
  • Solo los artículos más populares en los anuncios de Shopping y las fichas no pagadas se incluyen en la tabla BestSellers_TopProducts_.
  • En la tabla BestSellers_TopBrands_, solo se incluyen las marcas más populares en los anuncios de Shopping y las fichas no pagadas. Puede haber filas en la tabla Products_ con un google_brand_id que no se mapea a ninguna marca en la tabla BestSellers_TopBrands_.
  • Los ID de marca en el campo google_brand_id pueden cambiar con el tiempo para reflejar la naturaleza cambiante de las empresas y marcas. Debido a esto, no se garantiza el seguimiento de un conjunto de marcas durante un período prolongado.
  • Si bien las marcas se clasifican en muchas categorías diferentes, todos los productos de la tabla Products_ están en categorías de hoja. Para unirte a marcas y productos en categorías que no sean de hoja, usa el campo google_product_category_ids, como se muestra en Consultas de muestra de los más vendidos.

Asistencia para cuenta de varios clientes (MCA)

Se recomienda a los clientes existentes con varios ID de Merchant que configuren una cuenta de varios clientes principal. La configuración de un MCA te permite crear una única transferencia para todos tus ID de Merchant.

Usar las MCA de Google Merchant Center tiene varios beneficios en comparación con los ID de Merchant individuales:

  • Ya no es necesario que administres varias transferencias para transferir datos de informes de varios ID de comerciante.
  • Las consultas que implican varios ID de Merchant son mucho más fáciles de escribir porque todos los datos de ID de Merchant se almacenan en la misma tabla.
  • Usar las MCA alivia los posibles problemas de cuota de trabajo de carga de BigQuery porque todos los datos del ID de Merchant se cargan en el mismo trabajo.

Una posible desventaja de usar las MCA es la probabilidad de que los costos posteriores de consulta sean más altos. Debido a que todos tus datos se almacenan en la misma tabla, las consultas que recuperan datos para un ID de Merchant individual deben analizar toda la tabla.

Si usas una MCA, el ID de la MCA aparece en aggregator_id y las cuentas secundarias individuales se muestran en merchant_id. En el caso de las cuentas que no usan una MCA, aggregator_id se establece en null.

Antes de comenzar

Antes de crear una transferencia de Google Merchant Center:

Permisos necesarios

Asegúrate de que la persona que crea la transferencia tenga los siguientes permisos requeridos:

  • BigQuery:

    • Los permisos bigquery.transfers.update para crear la transferencia
    • Los permisos bigquery.datasets.update en el conjunto de datos de destino

    La función predefinida de IAM bigquery.admin incluye los permisos bigquery.transfers.update y bigquery.datasets.update. Para obtener más información sobre las funciones de IAM en el Servicio de transferencia de datos de BigQuery, consulta la referencia del control de acceso.

  • Google Merchant Center

    • Acceso a la cuenta de Google Merchant Center que se usa en la configuración de la transferencia Para verificar el acceso, haz clic en la sección Usuarios de la IU de Google Merchant Center.

    • Para acceder a la competitividad de los precios y a los datos de los más vendidos, primero debe habilitar el Programa Estadísticas de mercado.

Configura una transferencia de Google Merchant Center

La configuración de una transferencia de datos para los informes de Google Merchant Center requiere lo siguiente:

Si quieres crear una transferencia de datos para los informes de Google Merchant Center, haz lo siguiente:

Console

  1. Ve a la página de BigQuery en Cloud Console.

    Ir a la página de BigQuery

  2. Haz clic en Transferencias.

  3. Haz clic en Crear transferencia.

  4. En la página Crear transferencia, sigue estos pasos:

    • En la sección Tipo de fuente, en Fuente, elige Google Merchant Center.

    • En la sección Nombre de la configuración de transferencia (Transfer config name), en Nombre visible (Display name), ingresa el nombre de la transferencia, como My Transfer. El nombre de la transferencia puede ser cualquier valor que te permita identificarla con facilidad si es necesario hacerle modificaciones más tarde.

      Nombre de la transferencia

    • En la sección Opciones de programa (Schedule options), en Programa (Schedule), haz clic en Comenzar a una hora determinada (Start at set time).

      • En Repeticiones (Repeats), selecciona una opción para la frecuencia con la que se ejecutará la transferencia.

        • Diaria (predeterminada)
        • Semanal
        • Mensual
        • Personalizada
        • A pedido
      • En Fecha de inicio y hora de ejecución (Start date and run time), ingresa la fecha y hora para iniciar la transferencia. Este valor debe estar al menos a 90 minutos de la hora UTC actual. Si seleccionaste Comenzar ahora (Start now), esta opción está inhabilitada.

        Programa de la transferencia

        Si dejas las opciones de programación establecida como Comenzar ahora (Start now), la primera ejecución de transferencia comenzará de inmediato, fallará y mostrará el siguiente mensaje de error: 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 esto ocurre, espera 90 minutos y luego configura un reabastecimiento para hoy o espera hasta la próxima ejecución programada (mañana).

    • En la sección Configuración de destino (Destination settings), en Conjunto de datos de destino (Destination dataset), selecciona el conjunto de datos que creaste para almacenar tus datos.

      Conjunto de datos de la transferencia

    • En la sección Detalles de la fuente de datos (Data source details), en ID de Merchant (Merchant ID), ingresa tu ID de comerciante o tu ID de MCA.

      Selecciona los informes que deseas transferir. Consulta Informes compatibles para obtener más detalles.

      Datos de transferencia de Google Merchant Center.

    • (Opcional) En la sección Opciones de notificación:

      • Haz clic en el botón de activación para habilitar las notificaciones por correo electrónico. Cuando habilitas esta opción, el administrador de transferencias recibe una notificación por correo electrónico cuando falla una ejecución de transferencia.
      • En Seleccionar un tema de Cloud Pub/Sub (Select a Cloud Pub/Sub topic), elige el nombre de tu tema o haz clic en Crear un tema (Create a topic). Con esta opción, se configuran las notificaciones de ejecución de Pub/Sub para tu transferencia.
  5. Haga clic en Save.

bq

Ingresa el comando bq mk y suministra la marca de creación de transferencias --transfer_config. También se requieren las siguientes marcas:

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

También puedes proporcionar la marca --project_id para especificar un proyecto en particular. Si no se especifica --project_id, se usa el proyecto predeterminado.

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

Aquí:

  • project_id es el ID del proyecto.
  • dataset es el conjunto de datos de destino para la configuración de la transferencia.
  • name es el nombre visible de la configuración de transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla con facilidad si necesitas modificarla más tarde.
  • parameters contiene los parámetros para la configuración de la transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}'
    • Para Google Merchant Center, debes proporcionar el parámetro merchant_id.
    • El parámetro export_products especifica si se deben transferir los datos de productos y problemas de productos. Este parámetro se incluye de forma predeterminada, incluso si no especificas el parámetro export_products. Google recomienda incluir este parámetro de forma explícita y configurarlo como “true”.
    • El parámetro export_price_benchmarks especifica si se transfieren datos de comparativa de precios.
    • El parámetro export_best_sellers especifica si se deben transferir los datos de los más vendidos.
  • data_source es la fuente de datos: merchant_center.

Por ejemplo, con el siguiente comando se crea una transferencia de Google Merchant Center llamada My Transfer con el ID de Merchant 1234 y el conjunto de datos de destino mydataset. La transferencia se crea en tu proyecto predeterminado.

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 primera vez que ejecutes el comando, recibirás un mensaje similar al siguiente:

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

Sigue las instrucciones del mensaje y pega el código de autenticación en la línea de comandos.

Si acabas de crear esta transferencia, es posible que debas esperar hasta 90 minutos antes de que los datos de tu cuenta de Merchant estén listos para la transferencia. Si esto ocurre, espera 90 minutos y luego configura un reabastecimiento para hoy o espera hasta la próxima ejecución programada (mañana).

API

Usa el método projects.locations.transferConfigs.create y suministra una instancia del recurso TransferConfig.

Soluciona problemas relacionados con la configuración de la transferencia de Google Merchant Center

Si tienes problemas con la configuración de la transferencia, consulta la sección sobre problemas de transferencia de Google Merchant Center en la página sobre cómo solucionar problemas relacionados con la transferencia del Servicio de transferencia de datos de BigQuery.

Consulta tus datos

Cuando tus datos se transfieren a BigQuery, se escriben en tablas particionadas por tiempo de transferencia. Para obtener más información, consulta Introducción a tablas con particiones.

Cuando consultes tu tabla de Google Merchant Center, debes usar la seudocolumna _PARTITIONTIME o _PARTITIONDATE en tu consulta. Para obtener más información, lee Consulta tablas particionadas.

La tabla Products_ contiene campos anidados y repetidos. Para obtener información sobre cómo controlar datos anidados y repetidos, consulta Diferencias en el manejo de campos repetidos en la documentación de SQL estándar.

Consultas de muestra de Google Merchant Center

Puedes usar las siguientes consultas de muestra de Google Merchant Center para analizar los datos transferidos. También puedes usar las consultas en una herramienta de visualización, como Google Data Studio.

En cada una de las siguientes consultas, reemplaza dataset por el nombre de tu conjunto de datos. Reemplaza merchant_id por tu ID de Merchant Center. Si usas una MCA, reemplaza merchant_id por tu ID de MCA.

Consultas de muestra de productos y problemas de productos

Estadísticas de los productos y sus problemas

La siguiente consulta de muestra proporciona la cantidad de productos, productos con problemas y problemas por día.

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

bq

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'

Productos rechazados para anuncios de Shopping

La siguiente consulta de muestra proporciona la cantidad de productos que no están aprobados para mostrarse en los anuncios de Shopping. El rechazo puede ser el resultado de una exclusión o de un problema con el producto.

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

bq

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'

Productos con problemas rechazados

La siguiente consulta de muestra recupera la cantidad de productos con problemas rechazados.

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

bq

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 muestra de precios de comparativas

Compare precios de productos con las comparativas

La siguiente consulta une los datos Products y Price Benchmarks para devolver la lista de productos y los puntos de comparativas asociados.

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

bq

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 muestra de los más vendidos

Principales productos para una categoría y un país determinados

La siguiente consulta muestra los mejores productos para la categoría de teléfonos inteligentes en los EE. UU.

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

bq

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'

Productos principales en tu inventario

La siguiente consulta une los datos BestSellers_TopProducts_Inventory_ y BestSellers_TopProducts_ para mostrar una lista de los principales productos que tiene actualmente en su inventario.

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
    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)

bq

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
    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)'

Principales marcas para una categoría y un país determinados

La siguiente consulta muestra las principales marcas de la categoría de smartphones en EE.UU.

Console

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

bq

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

Productos de las principales marcas en tu inventario

En la siguiente consulta, se muestra una lista de productos del inventario de las mejores marcas, enumeradas por categoría y país.

Console

  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
    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.target_country

bq

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