> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/es/reporting/reporting-faq.md).

# Preguntas frecuentes

### ¿Es segura la Reporting API?

Todos los datos almacenados en BigQuery están encriptados en reposo y en tránsito. Esto significa que cuando los datos se almacenan en los servidores de Google, y cuando se transmiten entre esos servidores y el cliente, están protegidos por un cifrado fuerte.

Además, BigQuery tiene controles de acceso integrados que le permiten restringir el acceso a sus datos en función de los roles y permisos de los usuarios. Esto significa que especificamos exactamente quién tiene acceso a sus datos y qué acciones tienen permitido realizar en ellos.

BigQuery también admite la autenticación y autorización a través de mecanismos estándar como OAuth 2.0 y claves de API.

La infraestructura de Google está diseñada para proteger contra amenazas comunes como ataques de denegación de servicio, filtraciones de datos y accesos no autorizados. Esto se realiza utilizando varias medidas de seguridad como cortafuegos, sistemas de detección de intrusiones y auditorías de seguridad periódicas, y la BigQuery API está diseñada pensando en la seguridad y emplea una serie de medidas para garantizar que sus datos estén protegidos en todo momento.

### ¿Con qué frecuencia se actualizan los datos?

Diariamente. La actualización comienza a medianoche UTC+0 con un tiempo máximo de actualización de 12 horas. La actualización cubre todos los datos recibidos hasta la medianoche (UTC+0) del día anterior.

### ¿Hasta qué fecha hacia atrás llegan los datos?

Todos los datos históricos aprobados para una organización determinada estarán disponibles.

### Si soy un usuario de Direct Access, ¿cómo me conecto?

Estando ya en GCP, será fluido. Simplemente inicie sesión e intente consultar las tablas correspondientes a través de la UI o de la API.

<figure><img src="https://storage.googleapis.com/insight-platform-docs-public/insights-iam-ui.png" alt="Insights IAM UI" width="100%"><figcaption></figcaption></figure>

#### Recibo un error "User does not have bigquery.jobs.create permission in project" – ¿qué estoy haciendo mal?

Para las cuentas que nos ha proporcionado, Epsilon Retail Media ha concedido privilegios de visor de BigQuery a los conjuntos de datos pertinentes. Esto le permitirá leer las tablas que contienen. En su proyecto, deben suceder algunas cosas para consultar realmente estas tablas remotas.

Supongamos lo siguiente:

* Su proyecto = "client-project-123456"
* Su usuario = <client-user@client-project-123456.iam.gserviceaccount.com>
* Epsilon Retail Media conjunto de datos: "insight-platform-external-iam.client\_insight\_reporting"

Necesita:

1. Conceder a <client-user@client-project.iam-123456.gserviceaccount.com> el permiso bigquery.jobs.create dentro del proyecto client-project-123456 (no en el proyecto Epsilon Retail Media ). Puede hacer esto asignando el rol BigQuery Job User.
2. Al ejecutar una consulta, debe ejecutar la consulta dentro de su proyecto (ya que solo tiene permisos para leer el conjunto de datos dentro del proyecto Epsilon Retail Media , no para ejecutar consultas dentro de él). A continuación se muestra cómo podría suceder eso utilizando un ejemplo simple de comando de cloud shell (ejecutando como <client-user@client-project-123456.iam.gserviceaccount.com>):

```bash
bq query --use_legacy_sql=false --project_id client-project-123456 'SELECT * FROM insight-platform-external-iam.client_insight_reporting.campaign limit 10;'
```

Tenga en cuenta que el proyecto del cliente está configurado en su proyecto, no en insight-platform-external-iam.

Se debe seguir un enfoque similar con cualquier otra herramienta utilizada. Consulte la documentación de las herramientas proporcionadas para obtener más información, así como la documentación en línea de GCP para obtener consejos.

#### El Epsilon Retail Media los datos no están en mi ubicación, ¿cómo puedo llevar los datos a mi ubicación?

Hay muchas posibilidades, pero es fácil crear conjuntos de datos en la misma ubicación que la nuestra, luego hacer transformaciones, consultas, etc., en tablas dentro de esos conjuntos de datos, y luego copiar eso a su propia ubicación preferida.

<figure><img src="https://storage.googleapis.com/insight-platform-docs-public/location-guide.png" alt="Location Guide" width="100%"><figcaption></figcaption></figure>

Hay muchas formas de copiar entre ubicaciones utilizando la UI, la herramienta de línea de comandos BQ y la propia API. Para obtener más información, consulte estas páginas de documentación de Google Cloud:

* [Manage datasets | BigQuery](https://cloud.google.com/bigquery/docs/managing-datasets)
* [referencia de la herramienta de línea de comandos bq](https://cloud.google.com/bigquery/docs/bq-command-line-tool)
* [Copia una tabla de origen único](https://cloud.google.com/bigquery/docs/copying-datasets)

### Si soy un usuario de API que no utiliza GCP, ¿cómo me conecto?

Epsilon Retail Media le proporcionará las credenciales pertinentes en un JSON que puede incorporar a su mecanismo de autenticación.

### ¿Puedo depurar consultas utilizando únicamente la Reporting API (no la UI de BigQuery)?

Sí, la BigQuery API devolverá un código que indica si hubo un problema y los mensajes de error también estarán disponibles.

### ¿Puedo estimar qué tan costosa será una consulta?

Sí, la API tiene un mecanismo para obtener una estimación en bytes de lo que escaneará la consulta si se ejecuta. Puede usar esa estimación multiplicada por la frecuencia con la que llama a la consulta para comprender qué tan cerca estará de la cuota.

Se puede encontrar más información en la documentación de GCP.

[Dry run query | BigQuery | Google Cloud](https://cloud.google.com/bigquery/docs/samples/bigquery-query-dry-run)

### ¿Qué pasa si excedo el límite de la cuota?

Consulte su acuerdo con Epsilon Retail Media para entender cuál es su cuota. Si no está definida específicamente, se establecerá de forma predeterminada en 10 TB de escaneos de datos de consulta por mes.

Su acuerdo también puede implicar un número máximo de llamadas a la API por día. Si no está definido específicamente, se establecerá de forma predeterminada en 100 llamadas a la API por día.

En caso de que exceda su cuota (ya sea de escaneo de datos o de número de llamadas), nos pondremos en contacto para entender sus casos de uso. Pueden aplicarse costos por exceso según su acuerdo.

En caso de un uso indebido grave fuera de los términos de su acuerdo (o de los límites predeterminados), nos reservamos el derecho de suspender el acceso.

### ¿Cuál es un ejemplo de uso de la Reporting API?

A continuación se muestran algunos ejemplos utilizando métodos comunes.

#### Google SDK para Python

Este ejemplo:

1. Conectará a BigQuery
2. Ejecutará la consulta
3. Enviará el resultado a un archivo csv

```python
import google.cloud.bigquery as bq
import pandas as pd
bq_client = bq.Client.from_service_account_json("<REPLACE>.json")
job_config = bq.QueryJobConfig(allow_large_results=True)
query_job = bq_client.query(
    'SELECT count(1) FROM insight-platform-external-iam.<REPLACE>_insight_reporting.campaign
    LIMIT 1000', job_config=job_config)
df = query_job.to_dataframe(create_bqstorage_client=False)
df.to_csv(r"C:\Users\<REPLACE>\<REPLACE>.csv", index=False)
print("Run Complete")
```

Hay otros métodos disponibles para estimar los bytes escaneados, etc., antes de ejecutar la consulta.

Consulte la documentación de BigQuery

[BigQuery API | Google Cloud](https://cloud.google.com/bigquery/docs/reference/rest)

Si no está en GCP, puede hacer referencia a un archivo de credenciales JSON a través de una variable de entorno.

#### Generic API para Python

```python
import csv
import requests
from google.oauth2 import service_account

PROJECT_ID = "insight-platform-external-iam"
DATASET = "<YOUR DATASET HERE>"
END_POINT = f"https://bigquery.googleapis.com/bigquery/v2/projects/{PROJECT_ID}/queries"
QUERY = f"""
SELECT supplier_id, campaign_id, sum(ad_spend) as ad_spend, sum(clicks) as clicks
FROM `{PROJECT_ID}.{DATASET}.realised_ad_agg`
WHERE ingressed_at BETWEEN '2022-09-01' and '2022-12-31'
group by 1,2
"""

def get_token():
    # With service account
    credentials = service_account.Credentials.from_service_account_file('./secrets/service-account.json')
    scoped_credentials = credentials.with_scopes(['https://www.googleapis.com/auth/cloud-platform'])

    # Do token request
    def req( method, url, headers, body, **kwargs):
        resp = requests.post(url, headers=headers, data=body)
        return type('obj', (object,), {'data' : resp.text, 'status': 200})

    scoped_credentials.refresh(req)
    return scoped_credentials.token

def run_job(token):
    resp = requests.post(
            END_POINT,
            json={
                "query": QUERY,
                "useLegacySql": False
            },
            headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {token}"
            }
    )
    return resp.json()['jobReference']['jobId']

def get_query_results(job_id, token):
    status_endpoint = f'{END_POINT}/{job_id}?location=australia-southeast1'
    completed = False
    while not completed:
        response = requests.get(status_endpoint, headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {token}"
            })
        completed = response.json()['jobComplete']

    data = response.json()
    rows = data['rows']
    columns = [c['name'] for c in data['schema']['fields']]

    return rows, columns

def extract():
    token = get_token()
    job_id = run_job(token)
    rows, columns = get_query_results(job_id, token)

    with open('results.csv', 'w', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(columns)

        for row in rows:
            writer.writerow([i['v'] for i in row['f']])

extract()
```

### ¿Qué pasa si estoy en AWS, etc. y no en Google Cloud? ¿Aún puedo autenticarme y usar la API?

Sí, funcionará. Le proporcionaremos credenciales de cuenta de servicio y podrá hacer referencia a ellas en su aplicación. Aquí hay un ejemplo.

```python
# TODO(developer): Set key_path to the path to the service account key
#                  file.
# key_path = "path/to/service_account.json"

credentials = service_account.Credentials.from_service_account_file(
    key_path, scopes=["https://www.googleapis.com/auth/cloud-platform"],
)

token = credentials.token

# use the token to do the API calls
# ...
# headers: Bearer ${token}
# ...
```

### ¿Cómo puedo determinar cuál es la ubicación de cada conjunto de datos que se comparte conmigo?

Esta llamada a la API le dirá en qué ubicación se encuentra cada conjunto de datos.

`GET https://bigquery.googleapis.com/bigquery/v2/projects/insight-platform-external-iam/datasets`

```json
{
  "kind": "bigquery#datasetList",
  "etag": "RLU1Ww9C5FdhlcIuRHjW0A==",
  "datasets": [
    {
      "kind": "bigquery#dataset",
      "id": "insight-platform-external-iam:acme_insight_reporting",
      "datasetReference": {
        "datasetId": "acme_insight_reporting",
        "projectId": "insight-platform-external-iam"
      },
      "location": "australia-southeast1"
    },
    {
      "kind": "bigquery#dataset",
      "id": "insight-platform-external-iam:acme_acme_analytics",
      "datasetReference": {
        "datasetId": "acme_acme_analytics",
        "projectId": "insight-platform-external-iam"
      },
      "location": "us-central1"
    }
  ]
}
```

### ¿Algún consejo sobre buenas prácticas?

En términos generales, si tiene la intención de ser un usuario intensivo de los datos, particularmente si tiene acceso a los datos no agregados (solicitudes/anuncios realizados/pedidos/atribución mejorada, etc.), es mejor copiar (stage) las tablas en su propio almacén de datos y LUEGO implementar las consultas para la lógica de negocio requerida sobre esas copias.

Los usuarios ocasionales pueden simplemente optar por consultar las tablas directamente para obtener resultados específicos.

Es importante mantenerse por debajo de la cuota permitida para garantizar un funcionamiento fluido.

Tenga en cuenta también que cada consulta puede descargar un máximo de 1 GB; de lo contrario, se recibirá un mensaje de error. En caso de que se necesite una descarga muy grande, ejecute varias consultas más pequeñas en su lugar (por ejemplo, un subconjunto de datos por día o por proveedor, etc.).

### ¿Qué pasa si necesito ayuda para redactar sentencias SQL adecuadas?

Cree un ticket especificando la consulta que intentó realizar y podemos ayudar a revisarla; le responderemos con los comentarios que podamos tener.

### ¿Algún consejo para usar el paquete Pandas?

Pandas es una de las herramientas de analítica más populares. Para que funcione, es necesario instalar las dependencias pandas-gbq y pydata-google-auth.

El siguiente fragmento es un ejemplo funcional de cómo leer datos de una tabla de BigQuery.

```python
import pandas as pd
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file('path/to/the/credential/file')

query = 'select * from project.dataset.table'

dat = pd.read_gbq(
    query,
    project_id='project_id',
    credentials=credentials
)
```

Se puede encontrar más información sobre la función de Pandas [aquí](https://pandas.pydata.org/docs/reference/api/pandas.read_gbq.html).

### ¿Algún consejo para usar el paquete PySpark?

Asumiendo que tiene un entorno PySpark funcional, debe proporcionar el archivo jar correcto para el conector de BigQuery adecuado para su versión de PySpark. Por ejemplo, PySpark 3.2.\* requiere spark-3.2-bigquery-0.30.0.jar. La lista de archivos jar, así como fragmentos de código prácticos y parámetros, se pueden encontrar [aquí](https://github.com/GoogleCloudDataproc/spark-bigquery-connector).

El siguiente fragmento de código proporciona un ejemplo de cómo ejecutar una consulta.

```python
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('BigNumeric').config('spark.jars', 'spark-3.2-bigquery-0.30.0.jar').getOrCreate()

spark.conf.set('credentialsFile', 'path/to/the/credential/file')

spark.conf.set('viewsEnabled', 'true')
spark.conf.set('materializationProject', 'yourMaterializationProject')
spark.conf.set('materializationDataset', 'yourMaterializationDataset')

query = 'select * from project.dataset.table'

df = spark.read.format('bigquery').option('query', query).load()

df.show()
```

IMPORTANTE: El parámetro viewsEnabled debe ser true.

Los datos en las vistas se materializan en tablas temporales antes de ser leídos por PySpark, donde se necesita el permiso bigquery.tables.create. Por lo tanto, debe proporcionar el materializationProject y el materializionDataset donde el usuario sí tenga acceso de escritura.

### ¿Recibo un error que exige un filtro en la consulta?

Para una tabla particionada, un filtro es obligatorio, sin el cual se arrojará un mensaje de error como el siguiente:

> Cannot query over table ‘dataset\_id.table\_id' without a filter over column(s) ‘partitioned\_column' that can be used for partition elimination

Para resolver el error, simplemente añada un filtro razonable que cubra el rango objetivo, p. ej.

```sql
-- this query returns all records available since yesterday
select
  *
from
  dataset_id.table_id
where
  ingressed_at >= date_sub(current_date, interval 1 day)
```

Para saber por qué columna está particionada la tabla (como ingressed\_at en el ejemplo anterior), consulte la descripción de la tabla dada.

### ¿Cómo puedo solicitar acceso?

#### Proceso

Se debe crear un ticket y acordar los criterios de elegibilidad por escrito.

Trabajaremos con el Candidato potencial para identificar el nivel de acceso requerido y la configuración de seguridad, y determinar qué cuotas y costos pueden aplicarse.

#### Criterios de elegibilidad

Un Candidato debe cumplir con los siguientes Criterios para ser considerado elegible para el acceso a la Reporting API: -

**General**

1. El Candidato solo puede solicitar acceso a datos de Epsilon Retail Media namespaces y equipos de los que ya sea miembro o a los que tenga acceso general. El Candidato debe especificar a cuál de los siguientes escenarios está postulando (y proporcionar evidencia del acceso existente):
   1. Nivel de entorno (una implementación completa de la Epsilon Retail Media plataforma está dedicada al Candidato).
   2. Nivel de Namespace (el Candidato tiene permiso para ver todos los equipos, tanto de minoristas como de proveedores, dentro de un Namespace individual o una lista de Namespaces).
   3. Nivel de grupo o id de equipo de minorista específico.
   4. Nivel de grupo o id de equipo de proveedor específico.
      1. adicionalmente, un Integrador puede acceder a un nivel de grupo o id de equipo de proveedor específico MÁS catálogos completos de productos de minoristas cuando un minorista lo acuerde caso por caso.
2. Los datos de hechos transaccionales solo se pueden proporcionar a los Candidatos que sean elegibles para los Criterios Generales 1a o 1b.
3. A los Candidatos que no califiquen para datos de hechos transaccionales se les proporcionará acceso únicamente a datos de hechos preagregados. Los datos se agregarán en resúmenes diarios (con UTC+0 como la zona horaria de agregación).
4. Los Candidatos elegibles únicamente para los Criterios Generales 1d no pueden recibir datos de Ad Request (a diferencia de los datos de Realised Ad que sí se proporcionarán). Los datos de productos se proporcionarán para los productos específicos que el proveedor esté anunciando en los Realised Ads, EXCEPTO para los Integradores, quienes pueden recibir catálogos de productos de minoristas cuando un minorista lo acuerde caso por caso.
5. Solo se garantiza que los datos dimensionales incluyan las versiones actuales de los registros en cuestión. Se espera que el Candidato implemente el seguimiento de los cambios históricos según lo requiera.
6. Los datos se actualizan diariamente y se actualizarán a más tardar a las 12:00 UTC+0 para los datos hasta el día UTC+0 anterior completado inclusive.
7. Se entiende que el acceso es de solo lectura por naturaleza. La API no debe utilizarse para crear objetos en nuestro almacén de datos para ningún propósito.
8. Cualquier combinación con otras fuentes de datos debe realizarse en el propio entorno del Candidato.
9. El Candidato debe tener un SDK (o equivalente) disponible para acceder a la API de Google BigQuery.
10. El Candidato tiene buenos conocimientos de SQL.
11. El Candidato estará familiarizado con los Epsilon Retail Media conceptos y, de no ser así, tomará las medidas necesarias para que se le proporcione la capacitación estándar sobre el producto a través de su Customer Support Manager o Technical Account Manager.
12. Con base en los documentos proporcionados, se espera que el Candidato desarrolle sus propias soluciones. Si se encuentra un problema con un SQL que no se comporta según lo esperado de acuerdo con la documentación, se debe crear un ticket a través de los canales de soporte regulares. Se debe proporcionar la siguiente información.
    1. La cuenta a través de la cual se realiza la conexión.
    2. El SQL exacto que se está llamando.
    3. Una descripción detallada de qué mensajes de error ocurren.
13. Si el Candidato es un minorista, se requiere que las Impressions/Clicks/Orders se proporcionen a la Epsilon Retail Media plataforma de manera que se pueda establecer una imagen completa del ciclo de vida del anuncio.
14. De vez en cuando, Epsilon Retail Media se reservan el derecho de alterar el esquema. Estos cambios suelen implicar la adición de nuevas columnas a las tablas y vistas existentes y serían compatibles con versiones anteriores. Los candidatos deben estructurar su SQL para nombrar las columnas en lugar de utilizar comodines, etc. En caso de que un cambio implique dejar en desuso una columna o tabla, Epsilon Retail Media notificará el cambio con al menos 12 semanas de antelación antes de que se implemente. Las notificaciones se realizarán a través de las comunicaciones de lanzamiento habituales dirigidas a los usuarios de la plataforma.

No es obligatorio que un candidato sea un usuario existente de Google Cloud Platform (GCP); sin embargo, existen otros criterios según si el candidato es un usuario de GCP o no.

**Candidato no perteneciente a GCP**

A menos que se acuerde lo contrario, Epsilon Retail Media proporcionará al candidato las credenciales de una única cuenta de servicio dentro de nuestro entorno.

A menos que se acuerde lo contrario, se aplican las siguientes condiciones predeterminadas:

1. Un máximo de 100 llamadas a la API por día.
2. No más de 10 TB de escaneos de datos al mes (tenga en cuenta que la API tiene una forma de estimar el tamaño del escaneo de la consulta antes de la ejecución; consulte la documentación de Google [Dry run query | BigQuery | Google Cloud](https://cloud.google.com/bigquery/docs/samples/bigquery-query-dry-run)).
3. Si se superan los criterios 1 y/o 2 del candidato no perteneciente a GCP, Epsilon Retail Media se reservan el derecho de suspender el acceso a nuestra sola discreción.
4. Ninguna llamada individual a la API puede descargar más de 1 GB de datos a la vez.

#### ¿Cómo decodifico el archivo de la cuenta de servicio?

Las credenciales de la cuenta de servicio se le proporcionarán en un formato codificado en base64 para una transmisión segura. Deberá decodificarlo antes de usarlo. A continuación se muestran ejemplos de cómo decodificar el archivo:

Usando bash:

```bash
# Replace encoded-credentials.txt with the file containing your base64 encoded credentials
base64 -d encoded-credentials.txt > service-account.json
```

Usando Python:

```python
import base64

# Replace encoded_credentials with your base64 encoded string
with open('encoded-credentials.txt', 'r') as f:
    encoded_credentials = f.read()

decoded_credentials = base64.b64decode(encoded_credentials)

with open('service-account.json', 'wb') as f:
    f.write(decoded_credentials)
```

Después de decodificar, tendrá un `service-account.json` archivo que puede utilizar con las bibliotecas de clientes de BigQuery como se muestra en los ejemplos anteriores.

**Candidato de GCP**

A menos que se acuerde lo contrario, el candidato proporcionará Epsilon Retail Media detalles de no más de 5 cuentas de GCP para que podamos asignar el acceso requerido.

Tenga en cuenta que la cuenta debe tener asignado el rol de usuario de trabajo de BigQuery (roles/bigquery.jobUser).

Se aplican las siguientes restricciones:

1. Un máximo de 100 llamadas a la API por día.
2. Si se supera el criterio 1 del candidato de GCP, Epsilon Retail Media se reservan el derecho de suspender el acceso a nuestra sola discreción.
3. Ninguna llamada individual a la API puede descargar más de 1 GB de datos.

### Glosario

#### Entorno

El nombre del entorno físico en el que está Epsilon Retail Media desplegada la plataforma. Cada uno alberga uno o más espacios de nombres.

#### Espacio de nombres

Una agrupación lógica de todas las entidades que forman parte de una implementación de la Epsilon Retail Media solución. Esto incluye equipos y todos los objetos propiedad de los equipos. Por lo general, un espacio de nombres puede consistir en un minorista (equipo) y varios proveedores (equipos) junto con usuarios para cada equipo y otra configuración relacionada (los minoristas poseen catálogos, los proveedores configuran campañas, etc.). Los equipos (y lo que poseen) pertenecen exclusivamente a un único espacio de nombres (no pueden existir equipos en varios espacios de nombres).

#### Usuario

Identificador único de un usuario en el Epsilon Retail Media sistema. Un solo correo electrónico puede tener varios userIds. Cada userId es único por espacio de nombres. Cada usuario tendrá un nombre, apellido, correo electrónico e id. Un usuario puede ser miembro de varios equipos y acceder a ellos en la Epsilon Retail Media plataforma.

#### Equipo

Un equipo dentro del Epsilon Retail Media sistema. Puede ser un proveedor (anunciante) o un minorista. Por lo general, los equipos de proveedores crearán campañas, mientras que los minoristas las revisarán y realizarán funciones administrativas. Un usuario en el Epsilon Retail Media sistema puede ser miembro de muchos equipos o de uno solo. Un equipo tendrá normalmente usuarios, campañas y monederos asociados.

#### Proveedor

Un equipo de proveedores dentro del Epsilon Retail Media sistema. Un proveedor suele ser una empresa matriz de una marca o una serie de equipos por marca individual. Por lo general, los proveedores gestionan campañas, administran saldos de monederos, etc.

#### Minorista

Un equipo de minoristas dentro del Epsilon Retail Media sistema. La mayoría de los espacios de nombres solo tendrán un equipo de minoristas. Los minoristas suelen mantener catálogos de productos, revisar campañas, etc.

#### Campaña

Una única campaña única configurada con una estrategia de ubicación y segmentación para una selección específica de productos. Por ejemplo, una campaña en el Epsilon Retail Media sistema podría estar promocionando los productos A y B segmentando los términos de búsqueda 'chocolate' y 'chocolates' con una puja máxima de $0.60. Un solo equipo suele tener muchas campañas.

#### Catálogo

Un catálogo de productos único de un minorista en el Epsilon Retail Media sistema. Es habitual que un minorista solo sincronice un catálogo de productos con Epsilon Retail Media en un solo espacio de nombres. Un catálogo tendrá una lista de todos los productos del catálogo del minorista, su nombre, marca, categorías y otros atributos relevantes que se ingieren en el Epsilon Retail Media sistema.

#### Producto

Un único producto único en el Epsilon Retail Media sistema. Un producto tendrá un código de producto único sincronizado en el catálogo de productos. Un producto puede tener atributos como categoría, taxonomía, marca, etc.

#### Monedero

Un monedero en el Epsilon Retail Media sistema almacena los fondos de un anunciante con el fin de realizar pagos (por ejemplo, pagar por anuncios realizados). Cada monedero tiene un único código de moneda y solo puede gastar en catálogos de ese mismo código de moneda. Un monedero es propiedad de un equipo. Un equipo puede tener cualquier número de monederos. Un monedero se puede archivar. Archivar un monedero solo lo mostrará u ocultará en la plataforma; un monedero archivado aún puede gastar créditos.

#### Libro mayor

Un libro mayor de eventos que han dado lugar a una transacción en el Epsilon Retail Media sistema. Lo más habitual son eventos de anuncios, como impresiones o clics para productos patrocinados o anuncios de banner (que dan lugar a un débito). Esto también puede ser recargas y ajustes de saldos por parte de un proveedor (créditos). Cada evento tendrá un 'motivo', como Productos patrocinados, Anuncios de banner, Recarga.

#### Solicitud

Una solicitud realizada al Epsilon Retail Media sistema de anuncios. En la solicitud, el minorista especifica una ubicación, así como el contexto, como el del cliente sessionId o filtros relevantes para la solicitud. Dependiendo de la solicitud, Epsilon Retail Media enviará anuncios de un AdType relevante (por ejemplo, Categoría o Término de búsqueda) al minorista para que los muestre al cliente.

#### Anuncio (Realizado)

Un anuncio es un único evento de anuncio enviado de vuelta a un minorista para que se lo sirva a su cliente. Se convierte en un anuncio realizado cuando el minorista devuelve la confirmación de que el anuncio ha recibido al menos una impresión (confirmación explícita de que el anuncio realmente se utilizó, es decir, se realizó). En el Epsilon Retail Media sistema, cada anuncio tendrá un id de anuncio realizado único que es una referencia para ese único evento único.

#### Categoría

Una categoría es una página en el sitio del minorista como parte de la taxonomía de su sitio web, como 'Panadería' o 'Lácteos'. Un minorista suele solicitar anuncios en una página de categoría y especifica este atributo relevante en su solicitud a Epsilon Retail Media. If Epsilon Retail Media tiene campañas activas y válidas para la Categoría, se devolverán anuncios.

#### SearchTerm

Un término de búsqueda introducido por un cliente en el sitio web del minorista. Este término de búsqueda se envía luego a Epsilon Retail Media para solicitar anuncios relevantes. Si Epsilon Retail Media tiene campañas activas y válidas para el término de búsqueda, se devolverán anuncios.

#### Order

Un pedido único en el sistema del minorista sincronizado con Epsilon Retail Media. Un solo pedido puede tener múltiples elementos de pedido en su interior (del mismo modo que el carrito de un cliente puede contener múltiples artículos). Una vez que se completa el pedido de un cliente, estos se envían a Epsilon Retail Media para alimentar la atribución de Epsilon Retail Media. El retorno de la inversión publicitaria (ROAS) y otros KPI importantes pueden proporcionarse luego a minoristas y anunciantes.

#### Atribución

La atribución es un proceso operado en el sistema de Epsilon Retail Media que asigna los anuncios mostrados a un cliente a un pedido enviado. El recorrido típico de un cliente sería ver un anuncio (impresión), hacer clic en él (clic), añadirlo a su carrito y comprar ese artículo (conversión). El pedido se 'atribuye' al anuncio único en el que el cliente hizo clic. Para que un pedido se atribuya en el sistema de Epsilon Retail Media , se debe interactuar con el anuncio (ya sea visto o cliqueado según la integración) y el cliente debe haber comprado un artículo relevante para el anuncio. Epsilon Retail Media suele utilizar un 'sessionId' para atribuir pedidos a anuncios, donde el minorista especifica un 'sessionId' en todos los puntos de contacto relevantes del recorrido de un anuncio. Así es como Epsilon Retail Media puede identificar que un solo anuncio, mostrado a un solo cliente, ha dado lugar a un pedido específico.

#### Fechas

Todos los datos se convierten a la zona horaria UTC+0 si se agregan.

#### Límite

Las implementaciones de la plataforma de Epsilon Retail Media a menudo implican que el minorista solicite más anuncios de los que en realidad se imprimirían (realizarían). Desde una perspectiva analítica, esto puede dar una impresión inexacta de cómo están funcionando realmente ciertas métricas. Por ejemplo, si se realizó una solicitud de 20 anuncios (AdType=Product) y la plataforma devolvió 2 anuncios en respuesta, eso representa una 'tasa de relleno' del 10% en la solicitud (2 de 20). Sin embargo, si se entiende que en la práctica solo es probable que se utilicen (realicen) 4 anuncios, sería preferible interpretarlo como un 50% de relleno (2 de 4). De ahí la noción de limitación (capping) dentro de los informes. El límite se establece por minorista, con un límite disponible para anuncios de productos y otro para anuncios de banner (dado que las solicitudes de anuncios de productos normalmente solicitarán y utilizarán muchos más anuncios que los banners). Volviendo al ejemplo, si el límite de productos = 4 para el minorista, las métricas de la solicitud se notificarían de la siguiente manera:- NumAdRequests = 1 NumAdsRequested = 20 CappedNumAdsRequested = 4 NumAdsServed = 2 CappedNumAdsServed = 2 Tenga en cuenta que, en caso de que se sirvieran 5 anuncios (es decir, los anuncios servidos superaron el límite en sí), las últimas 2 métricas se notificarían como:- NumAdsServed = 5 CappedNumAdsServed = 4 (recortado al límite) Los límites no son obligatorios. En caso de que no se especifiquen, los resultados con y sin límite serían los mismos.

#### Atribución mejorada

La plataforma de Epsilon Retail Media realiza atribuciones como se describe en la sección Atribución (ver arriba). El subsistema de informes también puede detectar y marcar otros escenarios de atribución según el minorista (atribución mejorada).

Los escenarios son:

* Atribución de visualización de impresión
  * Un Pedido se atribuyó a un Anuncio que se visualizó para el mismo Producto en la misma ID de sesión (es decir, fue una impresión y no un clic).
* Atribución de clic Halo
  * Un Pedido se atribuyó a un Anuncio en el que se hizo clic para un Producto que pertenece al mismo nivel de Halo en la misma ID de sesión. El nivel de halo más común es Brand (es decir, el Producto del Anuncio y el Producto del Pedido son diferentes, pero pertenecen a la misma Brand). Son posibles otros tipos de halo según la implementación. Por ejemplo, el halo puede ser más específico y requerir que el Anuncio y el Pedido sean para Productos que tengan una Category común además de una Brand común. La taxonomía del minorista establecida por Producto en el Catálogo se utiliza para definir este nivel extra de detalle en el Halo.

Versión: 1ace13f


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/es/reporting/reporting-faq.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
