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

# よくある質問

### Reporting APIは安全ですか？

BigQueryに保存されるすべてのデータは、保存時および転送時に暗号化されます。つまり、データがGoogleのサーバーに保存されているときや、それらのサーバーとクライアントの間で送信されるとき、強力な暗号化によって保護されます。

さらに、BigQueryには組み込みのアクセス制御機能があり、ユーザーの役割や権限に基づいてデータへのアクセスを制限できます。これにより、誰がお客様のデータにアクセスでき、どのような操作を実行できるかを正確に指定できます。

BigQueryは、OAuth 2.0やAPIキーなどの標準的なメカニズムによる認証と認可もサポートしています。

Googleのインフラストラクチャは、サービス拒否（DoS）攻撃、データ侵害、不正アクセスなどの一般的な脅威から保護するように設計されています。これはファイアウォール、侵入検知システム、定期的なセキュリティ監査などのさまざまなセキュリティ対策を使用して行われており、BigQuery APIはセキュリティを考慮して設計され、お客様のデータが常に保護されるようさまざまな対策を採用しています。

### データはどのくらいの頻度で更新されますか？

毎日更新されます。更新はUTC+0の午前0時に開始され、最大更新時間は12時間です。更新には、前日の午前0時（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 データセット: 「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 プロジェクト内ではクエリの実行権限はなく、データセットの読み取り権限のみを持っているためです）。シンプルなCloud Shellコマンドの例（<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形式の関連資格情報を提供します。

### Reporting API のみ（BigQuery UI を使わずに）でクエリをデバッグできますか？

はい、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のクエリデータスキャンが既定値として設定されます。

また、契約には1日あたりの最大API呼び出し回数が含まれる場合があります。個別の定義がない場合、1日あたり100回のAPI呼び出しが既定値となります。

クォータ（データスキャン量または呼び出し回数）を超過した場合、ユースケースを確認するためにご連絡いたします。ご契約内容によっては、超過料金が発生する場合があります。

契約条件（または既定の制限）を大きく逸脱する重大な不正利用があった場合、アクセスを停止する権利を留保します。

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

### AWSなどのGoogle Cloud以外の環境にいる場合でも、認証して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"
    }
  ]
}
```

### ベストプラクティスに関するヒントはありますか？

一般的に言って、データを多用する予定がある場合、特に非集計データ（リクエスト/配信済み広告/注文/エンハンスド アトリビューションなど）にアクセスできる場合は、テーブルを独自のデータウェアハウスにコピー（ステージング）してから、それらのコピーに対して必要なビジネスロジックのクエリを実装するのが最善です。

利用頻度が低いユーザーの場合は、特定の結果を得るためにテーブルを直接クエリすることを選択しても構いません。

円滑な動作を確保するために、許可されたクォータ内に収まるようにすることが重要です。

また、各クエリでダウンロードできる上限は 1 GB です。それを超えるとエラーメッセージが表示されます。非常に大規模なダウンロードが必要な場合は、代わりに複数の小規模なクエリを実行してください（例：1日ごとやサプライヤーごとなどのデータのサブセット）。

### 適切な SQL 文の作成に関してヘルプが必要な場合はどうすればよいですか？

試行したクエリを指定してチケットを発行してください。弊社でレビューをお手伝いし、コメントがあれば返信いたします。

### Pandas パッケージを使用するためのヒントはありますか？

Pandas は最も人気のある分析ツールの1つです。動作させるには、依存関係である 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 を提供する必要があります。

### クエリでフィルターを要求するエラーが発生しますか？

パーティション分割されたテーブルではフィルターが必須であり、フィルターがない場合は以下のようなエラーメッセージがスローされます:

> ‘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. さらに、インテグレーターは、ケースバイケースでリテーラーによって合意された場合、特定のサプライヤーチーム ID またはグループのレベルに加えて、フルリテーラープロダクトカタログにアクセスできます。
2. トランザクションファクトデータは、全般基準 1a または 1b の資格を持つ候補者にのみ提供できます。
3. トランザクションファクトデータの資格を満たさない候補者には、事前集計されたファクトデータへのアクセスのみが提供されます。データは日次サマリーに集計されます（集計のタイムゾーンは UTC+0）。
4. 全般基準 1d のみの資格を持つ候補者は、Ad Request データを受信できません（提供される Realised Ad データとは異なります）。サプライヤーによる Realised Ads で広告されている特定の Products のプロダクトデータが提供されます。ただし、ケースバイケースでリテーラーによって合意された場合に Retailer Product Catalogs を受信できるインテグレーターは除きます。
5. 次元データは、当該レコードの現在のバージョンのみが含まれることが保証されます。必要に応じて、過去の変更のトラッキングは候補者によって実装されることが期待されます。
6. データは毎日更新され、前日（UTC+0）までのデータについて、遅くとも 12:00 UTC+0 までに更新されます。
7. アクセスは本質的に読み取り専用であることが理解されています。API は、いかなる目的であれ、弊社のデータウェアハウス内にオブジェクトを作成するために使用してはなりません。
8. 他のデータソースとのブレンドは、候補者自身の環境で行う必要があります。
9. 候補者は、Google BigQuery API にアクセスするために使用できる SDK（または同等のもの）を持っている必要があります。
10. 候補者は SQL の十分な知識を持っています。
11. 候補者は以下の概念に習熟している必要があります。 Epsilon Retail Media 概念に詳しくない場合は、カスタマーサポートマネージャーまたはテクニカルアカウントマネージャーを通じて標準の製品トレーニングが提供されるよう手配します。
12. 提供されたドキュメントに基づいて、候補者は自社のソリューションを開発することが期待されます。ドキュメントどおりに SQL が動作しない問題が見つかった場合は、通常のサポートチャネルを通じてチケットを発行する必要があります。以下の情報を提供する必要があります。
    1. 接続が行われているアカウント。
    2. 呼び出されている正確な SQL。
    3. 発生しているエラーメッセージの詳細な説明。
13. 候補者がリテーラーの場合、Impressions/Clicks/Orders を以下に提供することが求められます: Epsilon Retail Media 広告のライフサイクルの完全な図を確立できるようにするためのプラットフォーム。
14. 定期的に、 Epsilon Retail Media は、スキーマを変更する権利を留保します。これらの変更には通常、既存のテーブルやビューへの新しい列の追加が含まれ、下位互換性があります。候補者はワイルドカードなどを使用せず、列名を明記するようにSQLを構成する必要があります。変更に列やテーブルの非推奨化が含まれる場合、 Epsilon Retail Media は、変更が実装される少なくとも12週間前に通知します。通知は、プラットフォームユーザーへの標準のリリースアップデートを通じて行われます。

候補者が既存のGoogle Cloud Platform（GCP）ユーザーであることは必須ではありません。ただし、候補者がGCPユーザーか非GCPユーザーかに応じて、追加の基準が存在します。

**非GCP候補者**

別途合意がない限り、 Epsilon Retail Media は、当社環境内の単一のサービスアカウントの認証情報を候補者に提供します。

別途合意がない限り、以下のデフォルト条件が適用されます。

1. 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. 1回の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)
```

デコードすると、 `service-account.json` ファイルを取得でき、前の例で示したようにBigQueryクライアントライブラリで使用できます。

**GCP候補者**

別途合意がない限り、候補者は必要なアクセスを割り当てられるように Epsilon Retail Media 最大5つのGCPアカウントの詳細を提供します。

アカウントにはBigQueryジョブユーザーロール（roles/bigquery.jobUser）が割り当てられている必要があることに注意してください。

以下の制限が適用されます：

1. 1日あたり最大100回のAPI呼び出し。
2. GCP候補者の基準1を超えた場合、 Epsilon Retail Media 当社の独自の裁量によりアクセスを停止する権利を留保します。
3. 1回のAPI呼び出しで1GBを超えるデータをダウンロードすることはできません。

### 用語集

#### 環境

物理的環境の名前 Epsilon Retail Media プラットフォームがデプロイされている物理環境の名前。それぞれが1つ以上のネームスペースをホストします。

#### ネームスペース

実装に含まれるすべてのエンティティの論理グループ化 Epsilon Retail Media ソリューションの実装に含まれるすべてのエンティティの論理的なグループ。これにはチームとチームが所有するすべてのオブジェクトが含まれます。通常、ネームスペースは、小売業者（チーム）と複数のサプライヤー（チーム）、および各チームのユーザーとその他の関連設定（小売業者はカタログを所有し、サプライヤーはキャンペーンを設定するなど）で構成されます。チーム（およびその所有物）は単一のネームスペースに専属で所属します（複数のネームスペースにまたがって存在するチームはありません）。

#### ユーザー

次のユーザーの一意の識別子: Epsilon Retail Media システム内のユーザーの一意の識別子。1つのメールアドレスに複数のuserIdが存在する場合があります。各userIdはネームスペースごとに一意です。各ユーザーは、名、姓、メールアドレス、およびidを持ちます。ユーザーは、 Epsilon Retail Media プラットフォーム内の複数のチームのメンバーになり、アクセスできます。

#### チーム

〜内のチーム Epsilon Retail Media システム内のチーム。サプライヤー（広告主）または小売業者のいずれかです。サプライヤーチームは通常キャンペーンを作成し、小売業者はキャンペーンをレビューして管理機能を実行します。 Epsilon Retail Media システム内のユーザーは、多くのチームのメンバーになることも、1つのチームのみのメンバーになることもできます。チームには通常、ユーザー、キャンペーン、ウォレットが関連付けられます。

#### サプライヤー

～内のサプライヤーチーム Epsilon Retail Media システム内のサプライヤーチーム。サプライヤーは通常、ブランドの親会社、または個々のブランドごとの一連のチームです。サプライヤーは通常、キャンペーンの維持やウォレット残高の管理などを行います。

#### リテール企業

リテール企業内のチーム Epsilon Retail Media システム内の小売業者チーム。ほとんどのネームスペースには1つの小売業者チームのみが存在します。小売業者は通常、商品カタログの維持やキャンペーンのレビューなどを行います。

#### キャンペーン

特定の商品の選択に対する配置とターゲティング戦略で設定された単一の一意のキャンペーン。たとえば、 Epsilon Retail Media システム内のキャンペーンでは、上限入札額$0.60で検索語句「チョコレート」と「チョコ」をターゲットにして商品AとBを宣伝できます。通常、1つのチームが多数のキャンペーンを所有します。

#### カタログ

小売業者の固有の商品カタログ： Epsilon Retail Media システム内の固有の小売業者の商品カタログ。小売業者が単一のネームスペース内で1つの商品カタログのみを Epsilon Retail Media と同期させるのが一般的です。カタログには、小売業者のカタログ内のすべての商品のリスト、その名前、ブランド、カテゴリー、および Epsilon Retail Media システムに取り込まれるその他の関連属性が含まれます。

#### 商品

〜内の単一のユニーク商品 Epsilon Retail Media システム内の単一の一意の商品。商品には、商品カタログ内で同期される一意の商品コードがあります。商品には、カテゴリー、タクソノミー、ブランドなどの属性がある場合があります。

#### ウォレット

ウォレットとは Epsilon Retail Media システム内のウォレットは、支払いを行う目的（実現された広告の支払いなど）で広告主の資金を保持します。各ウォレットには単一の通貨コードがあり、その同じ通貨コードのカタログに対してのみ支出できます。ウォレットはチームによって所有されます。チームは任意の数のウォレットを持つことができます。ウォレットはアーカイブできます。ウォレットをアーカイブすると、プラットフォーム上での表示/非表示が切り替わるだけで、アーカイブされたウォレットでもクレジットを使用できます。

#### Ledger

トランザクションにつながったイベントの台帳 Epsilon Retail Media システムでトランザクションを発生させたイベントの台帳。これは最も一般的には、スポンサープロダクトやバナー広告などの広告イベント（デビットが発生）です。これには、サプライヤーによるチャージや残高の調整（クレジット）も含まれます。各イベントには、スポンサープロダクト、バナー広告、チャージなどの「理由」があります。

#### リクエスト

広告のために Epsilon Retail Media システムに対して行われるリクエスト。リクエストにおいて、小売業者は配置のほか、顧客の sessionId やリクエストに関連するフィルターなどのコンテキストを指定します。リクエストに応じて、 Epsilon Retail Media は関連するAdType（カテゴリーや検索語句など）の広告を小売業者に返し、顧客にレンダリングします。

#### (実現された) 広告

広告とは、顧客に配信するために小売業者に送り返される単一の広告イベントです。小売業者が広告が少なくともインプレッションされたという確認（広告が実際に使用された、つまり実現されたという明示的な確認）を返したときに、実現された広告になります。 Epsilon Retail Media システムでは、すべての広告に単一の一意のイベントの参照となる一意のrealisedad idが付与されます。

#### カテゴリー

カテゴリーとは、小売りサイト上の「ベーカリー」や「乳製品」といったサイトタクソノミーの一部となるページです。小売りは通常、カテゴリーページ上で広告をリクエストし、リクエスト内でこの関連属性を指定して Epsilon Retail Media. If Epsilon Retail Media がそのカテゴリーに対してアクティブで有効なキャンペーンを持っている場合、広告が返されます。

#### 検索語句

顧客が小売りウェブサイトに入力した検索語句。この検索語句は次に Epsilon Retail Media に送信され、関連する広告をリクエストします。もし Epsilon Retail Media がその検索語句に対してアクティブで有効なキャンペーンを持っている場合、広告が返されます。

#### 注文

小売りシステム内のユニークな注文で、以下と同期されます: Epsilon Retail Media。1つの注文の中に複数の注文アイテムを含めることができます（顧客のカゴに複数のアイテムが入るのと同様です）。顧客の注文が完了すると、これらは以下に送信されます: Epsilon Retail Media 以下を推進するため: Epsilon Retail Mediaのアトリビューション。これにより、広告費用対効果（ROAS）やその他の重要なKPIを小売りや広告主に提供できます。

#### アトリビューション

アトリビューションとは、以下のシステムで処理されるプロセスのことです: Epsilon Retail Media システム内で、顧客に配信された広告を送信された注文に割り当てます。典型的な顧客ジャーニーは、広告を見る（インプレッション）、クリックする（クリック）、カートに追加する、そしてそのアイテムを購入する（コンバージョン）という流れです。注文は、顧客がクリックした固有の広告に「帰属（アトリビュート）」します。以下において注文がアトリビューションされるには: Epsilon Retail Media システムでは、広告に対してインタラクション（統合方法に応じて表示またはクリック）が行われ、その後顧客が広告に関連するアイテムを購入する必要があります。 Epsilon Retail Media は通常、「sessionId' を使用して注文を広告にアトリビューションします。ここでは小売業者が 'sessionId' を広告ジャーニーのすべての関連するタッチポイントで指定します。これにより、 Epsilon Retail Media は、単一の顧客に配信された単一の広告が特定の注文につながったことを特定できます。

#### 日付

集計されたすべてのデータは、UTC+0 のタイムゾーンに変換されます。

#### 上限

実装の Epsilon Retail Media プラットフォームの実装では、多くの場合、実際にインプレッション（実現）されるよりも多くの広告を小売業者がリクエストすることが含まれます。分析の観点からは、これにより特定の指標が実際にどのように機能しているかについて、不正確な印象を与える可能性があります。 たとえば、20 件の広告リクエスト（AdType=Product）が行われ、プラットフォームがそれに対して 2 件の広告を配信した場合、そのリクエストの「フィルレート」は 10%（20 件中 2 件）を表します。ただし、実際には 4 件の広告のみが使用される（実現される）可能性が高いと分かっている場合は、50% が充填された（4 件中 2 件）と解釈する方が望ましいでしょう。 したがって、レポート内でのキャップという概念が存在します。 キャップは小売業者ごとに設定され、プロダクト広告用とバナー広告用にそれぞれ 1 つのキャップが利用可能です（通常、プロダクト広告のリクエストは、バナーよりもはるかに多くの広告をリクエストし、使用するためです）。 例に戻ると、小売業者のプロダクトキャップ = 4 の場合、リクエスト指標は次のように報告されます:- NumAdRequests = 1 NumAdsRequested = 20 CappedNumAdsRequested = 4 NumAdsServed = 2 CappedNumAdsServed = 2 なお、5 件の広告が配信された場合（つまり、配信された広告がキャップ自体を超えた場合）、最後の 2 つの指標は次のように報告されます:- NumAdsServed = 5 CappedNumAdsServed = 4（キャップに合わせて削減） キャップは必須ではありません。指定されていない場合、キャップありとキャップなしの結果は同じになります。

#### Enhanced Attribution

The Epsilon Retail Media プラットフォームは、アトリビューションセクション（上記参照）で説明されているようにアトリビューションを実行します。 レポートサブシステムは、小売業者に応じて他のアトリビューションシナリオ（拡張アトリビューション）を検出してフラグを立てることもできます。

シナリオは次のとおりです:

* インプレッションビュースルーアトリビューション
  * 同じセッション ID 内で、同じ Product に対して閲覧された（つまり、クリックではなくインプレッションであった）広告に注文がアトリビューションされました。
* ハロークリックアトリビューション
  * 同じセッション ID 内で、同じハローレベルに属する Product に対してクリックされた広告に注文がアトリビューションされました。最も一般的なハローレベルは Brand です（つまり、広告の Product と注文の Product は異なりますが、同じ Brand に属しています）。実装に応じて、他のハロータイプも可能です。たとえば、ハローがより具体的であり、広告と注文が共通の Brand に加えて共通の Category を持つ Product であることを要求する場合があります。Catalog 内の Product ごとに設定された小売業者の分類法を使用して、Halo におけるこの追加レベルの詳細を定義します。

バージョン: 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/ja/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.
