> 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/ko/reporting/reporting-faq.md).

# 자주 묻는 질문

### 리포팅 API는 안전한가요?

BigQuery에 저장된 모든 데이터는 저장 시 및 전송 중에 암호화됩니다. 즉, 데이터가 Google 서버에 저장될 때와 해당 서버와 클라이언트 간에 전송될 때 강력한 암호화로 보호됩니다.

또한 BigQuery에는 사용자 역할 및 권한을 기반으로 데이터에 대한 액세스를 제한할 수 있는 액세스 제어 기능이 내장되어 있습니다. 즉, 당사는 귀하의 데이터에 액세스할 수 있는 사람과 해당 데이터에 대해 수행할 수 있는 작업을 정확하게 지정합니다.

BigQuery는 OAuth 2.0 및 API 키와 같은 표준 메커니즘을 통한 인증 및 권한 부여도 지원합니다.

Google의 인프라는 서비스 거부 공격, 데이터 침해, 무단 액세스와 같은 일반적인 위협으로부터 보호하도록 설계되었습니다. 이는 방화벽, 침입 탐지 시스템, 정기적인 보안 감사와 같은 다양한 보안 조치를 사용하여 수행되며, BigQuery API는 보안을 염두에 두고 설계되어 데이터가 항상 보호되도록 다양한 조치를 취합니다.

### 데이터는 얼마나 자주 업데이트되나요?

매일 업데이트됩니다. 새로고침은 UTC+0 자정에 시작되며 최대 업데이트 시간은 12시간입니다. 업데이트는 전날 자정(UTC+0)까지 수신된 모든 데이터를 다룹니다.

### 데이터는 얼마나 오래 전 것까지 제공되나요?

지정된 조직에 대해 승인된 모든 기록 데이터가 제공됩니다.

### Direct Access 사용자인 경우 어떻게 연결하나요?

이미 GCP를 사용 중이라면 원활하게 연결됩니다. 로그인 후 UI 또는 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>

#### "User does not have bigquery.jobs.create permission in project" 오류가 발생합니다. 무엇이 잘못되었나요?

귀하가 당사에 제공한 계정에 대해 Epsilon Retail Media 관련 데이터세트에 대한 BigQuery 뷰어 권한을 부여했습니다. 이를 통해 해당 데이터세트 내의 테이블을 읽을 수 있습니다. 프로젝트에서 이러한 원격 테이블을 실제로 쿼리하려면 몇 가지 작업이 필요합니다.

다음과 같이 가정해 보겠습니다.

* 귀하의 프로젝트 = "client-project-123456"
* 귀하의 사용자 = <client-user@client-project-123456.iam.gserviceaccount.com>
* Epsilon Retail Media dataset: "insight-platform-external-iam.client\_insight\_reporting"

수행해야 할 작업:

1. client-project-123456 프로젝트( Epsilon Retail Media 프로젝트가 아님) 내에서 <client-user@client-project.iam-123456.gserviceaccount.com>에 bigquery.jobs.create 권한을 부여합니다. BigQuery Job User 역할을 할당하여 이 작업을 수행할 수 있습니다.
2. 쿼리를 실행할 때 해당 프로젝트 내에서 쿼리를 실행해야 합니다(귀하는 Epsilon Retail Media 프로젝트 내의 데이터세트를 읽을 수 있는 권한만 있고 해당 프로젝트 내에서 쿼리를 실행할 수는 없음). 간단한 클라우드 셸 명령 예시(<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;'
```

클라이언트 프로젝트가 insight-platform-external-iam이 아닌 귀하의 프로젝트로 설정되어 있음을 유의하세요.

사용되는 다른 모든 도구에서도 유사한 방식을 취해야 합니다. 자세한 정보는 해당 도구의 설명서 및 GCP 온라인 설명서의 팁을 참조하세요!

#### 해당 Epsilon Retail Media 데이터가 내 위치에 없습니다. 데이터를 내 위치로 가져오려면 어떻게 해야 하나요?

다양한 방법이 있지만, 당사의 위치와 동일한 위치에 데이터세트를 생성한 후 해당 데이터세트의 테이블로 변환, 쿼리 등을 수행한 다음 이를 원하는 위치로 복사하는 것이 가장 쉽습니다.

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

UI, BQ 명령줄 도구 및 API 자체를 사용하여 위치 간에 복사하는 방법은 다양합니다. 자세한 내용은 다음 Google Cloud 설명서 페이지를 참조하세요.

* [Manage datasets | BigQuery](https://cloud.google.com/bigquery/docs/managing-datasets)
* [bq 명령줄 도구 참조](https://cloud.google.com/bigquery/docs/bq-command-line-tool)
* [단일 소스 테이블 복사](https://cloud.google.com/bigquery/docs/copying-datasets)

### 비 GCP API 사용자인 경우 어떻게 연결하나요?

Epsilon Retail Media 인증 메커니즘에 통합할 수 있는 JSON 형식의 관련 자격 증명을 제공합니다.

### BigQuery UI가 아닌 리포팅 API만 사용하여 쿼리를 디버그할 수 있나요?

예, BigQuery API는 문제가 있는지 여부를 나타내는 코드를 반환하며 오류 메시지도 확인할 수 있습니다.

### 쿼리 비용이 얼마나 들지 추정할 수 있나요?

예, API에는 쿼리가 실행될 경우 스캔할 바이트 추정치를 가져오는 메커니즘이 있습니다. 이 추정치에 쿼리 호출 빈도를 곱하여 할당량에 얼마나 근접하는지 파악할 수 있습니다.

자세한 내용은 GCP 설명서에서 확인할 수 있습니다.

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

### 할당량 제한을 초과하면 어떻게 되나요?

할당량이 얼마인지 파악하려면 Epsilon Retail Media 과의 계약 내용을 참조하세요. 특별히 정의되지 않은 경우 기본적으로 월별 10TB의 쿼리 데이터 스캔으로 설정됩니다.

계약에 일일 최대 API 호출 수가 포함될 수도 있습니다. 특별히 정의되지 않은 경우 기본적으로 하루 100회의 API 호출로 설정됩니다.

할당량(데이터 스캔 또는 호출 수)을 초과하는 경우 사용 사례를 파악하기 위해 당사에서 연락을 드립니다. 계약에 따라 초과 요금이 적용될 수 있습니다.

계약 약관(또는 기본 제한)을 벗어난 중대한 오용이 발생하는 경우 당사는 액세스를 중단할 수 있는 권리를 보유합니다.

### 리포팅 API 사용 예시는 무엇인가요?

다음은 일반적인 방법을 사용한 몇 가지 예시입니다.

#### Python용 Google SDK

이 예시에서는 다음을 수행합니다.

1. BigQuery에 연결
2. 쿼리 실행
3. 결과를 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")
```

쿼리를 실행하기 전에 스캔한 바이트 등을 추정하는 다른 방법도 사용할 수 있습니다.

BigQuery 설명서를 참조하세요.

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

GCP에 있지 않은 경우 환경 변수를 통해 JSON 자격 증명 파일을 참조할 수 있습니다.

#### Python용 일반 API

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

### Google Cloud가 아닌 AWS 등에 있는 경우에도 인증하고 API를 사용할 수 있나요?

예, 작동합니다. 당사에서 서비스 계정 자격 증명을 제공해 드리며, 애플리케이션에서 해당 자격 증명을 참조할 수 있습니다. 다음은 예시입니다.

```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}
# ...
```

### 나와 공유되는 각 데이터세트의 위치를 어떻게 확인할 수 있나요?

이 API 호출을 통해 각 데이터세트가 어떤 위치에 있는지 확인할 수 있습니다.

`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"
    }
  ]
}
```

### 모범 사례 팁이 있나요?

일반적으로 데이터 사용량이 많고 특히 집계되지 않은 데이터(요청/실현된 광고/주문/향상된 기여도 등)에 대한 액세스 권한이 있는 경우, 테이블을 자체 데이터 웨어하우스로 복사(스테이징)한 다음 해당 복사본에서 필요한 비즈니스 로직에 대한 쿼리를 구현하는 것이 가장 좋습니다.

사용량이 적은 사용자는 특정 결과를 위해 테이블을 직접 쿼리하도록 선택할 수 있습니다.

원활한 작동을 보장하기 위해 허용된 쿼터를 넘지 않는 것이 중요합니다.

또한 각 쿼리는 최대 1GB까지 다운로드할 수 있으며, 그렇지 않으면 오류 메시지가 수신됩니다. 매우 큰 규모의 다운로드가 필요한 경우 대신 여러 개의 더 작은 쿼리를 실행하세요(예: 일별 또는 공급업체별 데이터의 서브셋).

### 적절한 SQL 문을 작성하는 데 도움이 필요한 경우는 어떻게 하나요?

시도한 쿼리를 명시하여 티켓을 제출하면 검토를 도와드릴 수 있습니다. 검토 후 의견을 전달해 드리겠습니다.

### Pandas 패키지 사용에 대한 팁이 있나요?

Pandas는 가장 인기 있는 분석 도구 중 하나입니다. 이를 작동하려면 종속성 pandas-gbq 및 pydata-google-auth를 설치해야 합니다.

아래 스니펫은 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
)
```

Pandas 함수에 대한 자세한 정보는 다음에서 확인할 수 있습니다 [여기](https://pandas.pydata.org/docs/reference/api/pandas.read_gbq.html).

### PySpark 패키지 사용에 대한 팁이 있나요?

작동하는 PySpark 환경이 있다고 가정하면 PySpark 버전에 적합한 BigQuery 커넥터의 올바른 jar 파일을 제공해야 합니다. 예를 들어 PySpark 3.2.\*에는 spark-3.2-bigquery-0.30.0.jar이 필요합니다. jar 파일 목록과 실용적인 코드 스니펫 및 파라미터는 다음에서 확인할 수 있습니다 [여기](https://github.com/GoogleCloudDataproc/spark-bigquery-connector).

아래 코드 스니펫은 쿼리를 실행하는 방법에 대한 예시를 제공합니다.

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

중요: 파라미터 viewsEnabled는 true여야 합니다.

뷰의 데이터는 PySpark에서 읽기 전에 임시 테이블에 구체화되며, 이때 bigquery.tables.create 권한이 필요합니다. 따라서 사용자가 쓰기 액세스 권한을 가진 materializationProject 및 materializionDataset을 제공해야 합니다.

### 쿼리에 필터가 필요하다는 오류가 발생하나요?

파티션된 테이블에는 필터가 필수이며, 필터가 없으면 아래와 같은 오류 메시지가 발생합니다.

> partition elimination에 사용할 수 있는 ‘partitioned\_column' 컬럼에 대한 필터 없이는 ‘dataset\_id.table\_id' 테이블에 대해 쿼리할 수 없습니다

오류를 해결하려면 대상 범위를 포함하는 합리적인 필터를 추가하면 됩니다(예:)

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

테이블이 어떤 컬럼을 기준으로 파티션되어 있는지 확인하려면(위 예시의 ingressed\_at과 같이) 해당 테이블의 설명을 참조하세요.

### 액세스는 어떻게 요청할 수 있나요?

#### 프로세스

티켓을 제출해야 하며 적격성 기준에 서면으로 동의해야 합니다.

당사는 잠재적 지원자와 협력하여 필요한 액세스 수준 및 보안 설정을 파악하고 적용될 수 있는 쿼터와 비용을 결정합니다.

#### 적격성 기준

지원자가 Reporting API 액세스 적격자로 고려되려면 다음 기준을 준수해야 합니다: -

**일반**

1. 지원자는 이미 멤버이거나 일반 액세스 권한을 보유한 Epsilon Retail Media 네임스페이스 및 팀의 데이터에 대해서만 액세스를 요청할 수 있습니다. 지원자는 다음 시나리오 중 어느 것에 신청하는지 명시해야 합니다(및 기존 액세스 권한에 대한 증빙 제공):
   1. 환경 수준(전체 Epsilon Retail Media 플랫폼의 구현이 지원자 전용으로 할당됨).
   2. 네임스페이스 수준(지원자가 개별 네임스페이스 또는 네임스페이스 목록 내의 소매업체 및 공급업체 팀 전체를 볼 수 있는 권한을 가짐).
   3. 특정 소매업체 팀 ID 또는 그룹 수준.
   4. 특정 공급업체 팀 ID 또는 그룹 수준.
      1. 추가로, 통합업체(Integrator)는 소매업체가 건별로 동의한 경우 특정 공급업체 팀 ID 또는 그룹 수준 외에 전체 소매업체 제품 카탈로그에 액세스할 수 있습니다.
2. 트랜잭션 팩트 데이터는 일반 기준 1a 또는 1b의 자격이 있는 지원자에게만 제공될 수 있습니다.
3. 트랜잭션 팩트 데이터 자격을 갖추지 못한 지원자에게는 사전 집계된 팩트 데이터에 대한 액세스만 제공됩니다. 데이터는 일별 요약으로 집계됩니다(집계 시간대는 UTC+0).
4. 일반 기준 1d만 충족하는 지원자는 광고 요청 데이터를 받을 수 없습니다(제공되는 실현된 광고 데이터와 대조됨). 공급업체의 실현된 광고에서 광고 중인 특정 제품에 대한 제품 데이터가 제공됩니다. 단, 소매업체가 건별로 동의하여 소매업체 제품 카탈로그를 받을 수 있는 통합업체(Integrator)는 예외입니다.
5. 차원 데이터는 해당 레코드의 현재 버전만 포함하도록 보장됩니다. 지원자는 필요에 따라 과거 변경 사항의 추적을 직접 구현해야 합니다.
6. 데이터는 매일 업데이트되며, 이전 완료된 UTC+0 일자까지의 데이터에 대해 늦어도 12:00 UTC+0까지 업데이트됩니다.
7. 액세스는 본질적으로 읽기 전용이라는 점을 이해해야 합니다. 이 API는 어떠한 목적으로든 당사 데이터 웨어하우스에 개체를 생성하는 데 사용할 수 없습니다.
8. 다른 데이터 소스와의 혼합(blending)은 지원자의 자체 환경에서 수행되어야 합니다.
9. 지원자는 Google BigQuery API에 액세스하기 위해 사용할 수 있는 SDK(또는 이에 상응하는 기능)를 보유해야 합니다.
10. 지원자는 SQL에 대한 우수한 지식을 보유하고 있습니다.
11. 지원자는 Epsilon Retail Media 개념에 익숙해야 하며, 익숙하지 않은 경우 고객 지원 매니저 또는 테크니컬 어카운트 매니저를 통해 표준 제품 교육을 제공받도록 조치해야 합니다.
12. 제공된 문서를 바탕으로 지원자는 자체 솔루션을 개발해야 합니다. 문서에 기재된 예상대로 작동하지 않는 SQL의 문제가 발견되면 정기 지원 채널을 통해 티켓을 제출해야 합니다. 다음 정보를 제공해야 합니다.
    1. 연결이 이루어지고 있는 계정.
    2. 호출 중인 정확한 SQL.
    3. 발생하는 오류 메시지에 대한 자세한 설명.
13. 지원자가 소매업체인 경우, 광고 수명 주기의 완전한 그림을 확립할 수 있도록 노출수/클릭수/주문수를 Epsilon Retail Media 플랫폼에 제공해야 합니다.
14. 때때로, Epsilon Retail Media 스키마를 변경할 권리를 보유합니다. 이러한 변경 사항에는 일반적으로 기존 테이블 및 뷰에 새 컬럼을 추가하는 작업이 포함되며 이전 버전과 호환됩니다. 후보자는 와일드카드 등을 사용하는 대신 컬럼 이름을 지정하도록 SQL을 구성해야 합니다. 컬럼 또는 테이블을 더 이상 사용하지 않는 변경이 발생하는 경우, Epsilon Retail Media 변경 사항이 적용되기 전 최소 12주 전에 이에 대해 공지합니다. 플랫폼 사용자에게 전달되는 표준 릴리스 전달 메커니즘을 통해 알림이 제공됩니다.

후보자가 기존 Google Cloud Platform(GCP) 사용자일 필요는 없습니다. 그러나 후보자가 GCP 사용자인지 여부에 따라 추가 기준이 존재합니다.

**비 GCP 후보자**

달리 합의되지 않는 한, Epsilon Retail Media 후보자에게 당사 환경 내 단일 서비스 계정에 대한 자격 증명을 제공합니다.

달리 합의되지 않는 한 다음 기본 조건이 적용됩니다.

1. 하루 최대 100회의 API 호출.
2. 월간 데이터 스캔량 10TB 이하(API에는 실행 전 쿼리 스캔 크기를 추정하는 방법이 있습니다. Google 문서를 참조하세요) [Dry run query | BigQuery | Google Cloud](https://cloud.google.com/bigquery/docs/samples/bigquery-query-dry-run)).
3. 비 GCP 후보자 기준 1 및/또는 2를 초과하는 경우, Epsilon Retail Media 당사의 단독 재량으로 액세스를 일시 중단할 권리를 보유합니다.
4. 개별 API 호출은 한 번에 1GB 이상의 데이터를 다운로드할 수 없습니다.

#### 서비스 계정 파일을 디코딩하려면 어떻게 해야 하나요?

안전한 전송을 위해 서비스 계정 자격 증명이 base64 인코딩 형식으로 제공됩니다. 사용하기 전에 이 자격 증명을 디코딩해야 합니다. 다음은 파일을 디코딩하는 방법에 대한 예시입니다.

bash 사용 시:

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

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

디코딩이 완료되면 이전 예시와 같이 BigQuery 클라이언트 라이브러리와 함께 사용할 수 있는 `service-account.json` 파일을 갖게 됩니다.

**GCP 후보자**

달리 합의되지 않는 한 후보자는 다음 정보를 제공해야 합니다. Epsilon Retail Media 필요한 액세스 권한을 할당할 수 있도록 최대 5개의 GCP 계정 세부정보를 제공해야 합니다.

계정에 BigQuery 작업 사용자 역할(roles/bigquery.jobUser)이 할당되어 있어야 합니다.

다음 제한 사항이 적용됩니다.

1. 하루 최대 100회의 API 호출.
2. GCP 후보자 기준 1을 초과하는 경우, Epsilon Retail Media 당사의 단독 재량으로 액세스를 일시 중단할 권리를 보유합니다.
3. 개별 API 호출은 1GB 이상의 데이터를 다운로드할 수 없습니다.

### 용어집

#### 환경

물리적 환경의 이름 Epsilon Retail Media 플랫폼이 배포됩니다. 각 환경은 하나 이상의 네임스페이스를 호스팅합니다.

#### 네임스페이스

구현의 일부인 모든 엔티티의 논리적 그룹화 Epsilon Retail Media 솔루션. 여기에는 팀과 팀이 소유한 모든 개체가 포함됩니다. 일반적으로 네임스페이스는 각 팀의 사용자 및 기타 관련 구성과 함께 리테일러(팀) 및 여러 공급업체(팀)로 구성될 수 있습니다(리테일러는 카탈로그를 소유하고 공급업체는 캠페인 등을 구성함). 팀(및 팀이 소유한 항목)은 단일 네임스페이스에만 배타적으로 속합니다(여러 네임스페이스에 걸쳐 팀이 존재할 수 없음).

#### 사용자

사용자의 고유 식별자 Epsilon Retail Media 시스템. 단일 이메일이 여러 userId를 가질 수 있습니다. 각 userId는 네임스페이스별로 고유합니다. 각 사용자는 이름, 성, 이메일 및 id를 갖게 됩니다. 사용자는 여러 팀의 구성원이 될 수 있으며 해당 팀에 액세스할 수 있습니다. Epsilon Retail Media 플랫폼.

#### 팀

내 내의 팀 Epsilon Retail Media 시스템. 공급업체(광고주) 또는 리테일러가 될 수 있습니다. 공급업체 팀은 일반적으로 캠페인을 생성하고 리테일러는 캠페인을 검토하고 관리 기능을 수행합니다. 사용자는 Epsilon Retail Media 시스템에서 여러 팀의 구성원이 될 수도 있고 하나에만 속할 수도 있습니다. 팀에는 일반적으로 관련 사용자, 캠페인 및 월렛이 연결되어 있습니다.

#### 공급업체

내의 공급업체 팀 Epsilon Retail Media 시스템. 공급업체는 일반적으로 브랜드 모회사이거나 개별 브랜드별 일련의 팀일 수 있습니다. 공급업체는 일반적으로 캠페인을 유지 관리하고 월렛 잔액 등을 관리합니다.

#### 리테일러

내의 리테일러 팀 Epsilon Retail Media 시스템. 대부분의 네임스페이스에는 하나의 리테일러 팀만 존재합니다. 리테일러는 일반적으로 상품 카탈로그를 유지 관리하고 캠페인을 검토하는 등의 작업을 수행합니다.

#### 캠페인

특정 상품 선택 항목에 대한 게재위치 및 타겟팅 전략으로 구성된 단일 고유 캠페인입니다. 예를 들어 캠페인은 Epsilon Retail Media 시스템에서 최대 입찰가 $0.60로 검색어 '초콜릿' 및 '초콜릿들'을 타겟팅하여 상품 A 및 B를 프로모션할 수 있습니다. 단일 팀은 일반적으로 여러 캠페인을 보유합니다.

#### 카탈로그

고유한 리테일러의 상품 카탈로그 Epsilon Retail Media 시스템. 리테일러가 하나의 상품 카탈로그만 동기화하는 것이 일반적입니다. Epsilon Retail Media 단일 네임스페이스 내에서 카탈로그에는 리테일러 카탈로그에 있는 모든 상품의 목록, 이름, 브랜드, 카테고리 및 수집되는 기타 관련 속성이 포함됩니다. Epsilon Retail Media 시스템.

#### 상품

내의 단일 고유 상품 Epsilon Retail Media 시스템. 상품은 상품 카탈로그에 동기화된 고유한 상품 코드를 갖게 됩니다. 상품에는 카테고리, 분류, 브랜드 등의 속성이 있을 수 있습니다.

#### 월렛

월렛은 Epsilon Retail Media 시스템에서 결제 목적(예: 집행된 광고에 대한 비용 지불)으로 광고주의 자금을 저장합니다. 각 월렛은 단일 통화 코드를 보유하며 동일한 통화 코드의 카탈로그에 대해서만 지출할 수 있습니다. 월렛은 팀이 소유합니다. 팀은 수에 제한 없이 월렛을 가질 수 있습니다. 월렛은 보관 처리될 수 있습니다. 월렛을 보관 처리하면 플랫폼에서 숨김/표시만 되며, 보관 처리된 월렛도 여전히 크레딧을 지출할 수 있습니다.

#### 원장

트랜잭션을 발생시킨 이벤트의 원장 Epsilon Retail Media 시스템. 가장 일반적으로 후원 상품 또는 배너 광고에 대한 노출 또는 클릭과 같은 광고 이벤트입니다(차변 발생). 공급업체의 잔액 충전 및 조정일 수도 있습니다(대변). 각 이벤트에는 후원 상품, 배너 광고, 충전과 같은 '사유'가 있습니다.

#### 요청

에 이루어진 요청 Epsilon Retail Media 광고 시스템. 요청에서 리테일러는 게재위치뿐만 아니라 고객의 차원과 같은 컨텍스트도 지정합니다. sessionId 또는 요청과 관련된 필터. 요청에 따라 Epsilon Retail Media 은 리테일러가 고객에게 렌더링할 수 있도록 관련 AdType(예: 카테고리 또는 검색어)의 광고를 다시 보냅니다.

#### (집행된) 광고

광고는 고객에게 노출하기 위해 리테일러에게 다시 전송되는 단일 광고 이벤트입니다. 리테일러가 광고가 최소한 노출되었다는 확인(광고가 실제로 사용되었음, 즉 집행되었음에 대한 명시적 확인)을 반환하면 집행된 광고가 됩니다. 이 Epsilon Retail Media 시스템에서 모든 광고는 고유한 realisedad id를 가지며, 이는 단일 고유 이벤트에 대한 참조입니다.

#### 카테고리

카테고리는 '베이커리' 또는 '유제품'과 같이 리테일러 웹사이트 분류 체계의 일부인 리테일러 사이트의 페이지입니다. 리테일러는 일반적으로 카테고리 페이지에서 광고를 요청하고 요청 시 관련 속성을 지정하여 Epsilon Retail Media. If Epsilon Retail Media 에 해당 카테고리에 대한 활성화되고 유효한 캠페인이 있는 경우 광고가 반환됩니다.

#### SearchTerm

고객이 리테일러의 웹사이트에 입력한 검색어입니다. 이 검색어는 이후 Epsilon Retail Media 로 전송되어 관련 광고를 요청합니다. 만약 Epsilon Retail Media 에 해당 검색어에 대한 활성화되고 유효한 캠페인이 있는 경우 광고가 반환됩니다.

#### 주문

소비자의 장바구니에 여러 품목이 담길 수 있는 것처럼 단일 주문에는 여러 주문 품목이 포함될 수 있으며, Epsilon Retail Media와(과) 동기화된 리테일러 시스템 내의 고유한 주문입니다. 고객의 주문이 완료되면 이는 Epsilon Retail Media 로 전송되어 Epsilon Retail Media의 기여도 분석에 활용됩니다. 이를 통해 광고비 대비 매출액(ROAS) 및 기타 중요한 KPI가 리테일러와 광고주에게 제공될 수 있습니다.

#### 기여도 분석

기여도 분석은 Epsilon Retail Media 시스템에서 운영되는 프로세스로, 고객에게 노출된 광고를 제출된 주문에 할당합니다. 일반적인 고객 여정은 광고를 보고(노출), 클릭하고(클릭), 장바구니에 담은 후 해당 품목을 구매하는(전환) 과정입니다. 주문은 고객이 클릭한 고유한 광고에 '귀속'됩니다. Epsilon Retail Media 시스템에서 주문이 귀속되려면 광고와의 상호작용(연동 방식에 따라 노출 또는 클릭)이 있어야 하며, 이후 고객이 해당 광고와 관련된 품목을 구매해야 합니다. Epsilon Retail Media 은(는) 일반적으로 'sessionId'를 사용하여 주문을 광고에 귀속시키며, 여기서 리테일러는 'sessionId'를 광고 여정의 모든 관련 접점에서 지정합니다. 이렇게 하면 Epsilon Retail Media 은 단일 고객에게 게재된 단일 광고가 특정 주문으로 이어졌음을 식별할 수 있습니다.

#### 날짜

집계된 경우 모든 데이터는 UTC+0 시간대로 변환됩니다.

#### Cap

다음의 구현: Epsilon Retail Media 플랫폼의 구현에는 리테일러가 실제로 노출(실현)될 수 있는 것보다 더 많은 광고를 요청하는 경우가 종종 포함됩니다. 분석 관점에서 이는 특정 지표가 실제 어느 정도의 실적을 내고 있는지에 대해 부정확한 인상을 줄 수 있습니다. 예를 들어 20개의 광고(AdType=Product)를 요청하고 플랫폼이 이에 대한 응답으로 2개의 광고를 게재한 경우, 이는 요청에 대해 10%의 '충족률'(20개 중 2개)을 나타냅니다. 그러나 실제로는 4개의 광고만 사용(실현)될 가능성이 높다는 점을 이해한다면 이를 50% 충족(4개 중 2개)으로 해석하는 것이 더 바람직합니다. 따라서 리포팅 내의 캡 개념이 도입됩니다. 캡은 리테일러별로 설정되며, 상품 광고용 캡 하나와 배너 광고용 캡 하나를 사용할 수 있습니다(상품 광고 요청은 일반적으로 배너보다 훨씬 더 많은 광고를 요청하고 사용하기 때문입니다). 앞서의 예로 돌아가서, 해당 리테일러의 상품 캡이 4인 경우 요청 지표는 다음과 같이 보고됩니다:- NumAdRequests = 1 NumAdsRequested = 20 CappedNumAdsRequested = 4 NumAdsServed = 2 CappedNumAdsServed = 2 5개의 광고가 게재된 경우(즉, 게재된 광고가 캡 자체를 초과한 경우) 마지막 2개의 지표는 다음과 같이 보고됩니다:- NumAdsServed = 5 CappedNumAdsServed = 4 (캡 크기로 조정됨) 캡은 필수 사항이 아닙니다. 지정하지 않은 경우 캡이 적용된 결과와 적용되지 않은 결과는 동일합니다.

#### 향상된 기여도

해당 Epsilon Retail Media 플랫폼은 귀속 섹션(위 참조)에 설명된 대로 귀속을 수행합니다. 리포팅 하위 시스템은 리테일러에 따라 다른 귀속 시나리오(향상된 귀속)를 감지하고 표시할 수도 있습니다.

시나리오는 다음과 같습니다:

* 노출 뷰스루 귀속
  * 동일한 세션 ID에서 동일한 상품에 대해 조회된(즉, 클릭이 아닌 노출이었던) 광고에 주문이 귀속되었습니다.
* 후광 클릭 귀속
  * 동일한 세션 ID에서 동일한 후광 수준에 속하는 상품에 대해 클릭된 광고에 주문이 귀속되었습니다. 가장 일반적인 후광 수준은 브랜드입니다(즉, 광고의 상품과 주문의 상품은 다르지만 동일한 브랜드에 속함). 구현에 따라 다른 후광 유형이 가능합니다. 예를 들어 후광이 더 구체적이어서 광고와 주문이 공통 브랜드 외에도 공통 카테고리를 갖는 상품이어야 할 수 있습니다. 카탈로그의 상품별로 설정된 리테일러 분류체계가 후광의 이러한 추가 세부 수준을 정의하는 데 사용됩니다.

버전: 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/ko/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.
