このトピックの方法を使用して、セグメント データのアップロードに関する問題を診断できます。
バッチ セグメント サービスのさまざまなフェーズ
このセクションではアップロードのフェーズについて説明するので、問題が発生している可能性のある場所を理解できます。
開始 - アップロード URL とジョブ ID の要求
このフェーズでは、クライアントはアップロード URL とジョブ ID を要求します。 このステージは 5 分でタイムアウトします。 このフェーズでジョブが停止している場合は、クライアントが URL を要求したが、割り当てられた時間内に何もアップロードできなかったことを示します。
アップロード
このフェーズでは、クライアントは指定された URL にファイルをアップロードします。 1 分あたりアップロードが 1 回を超えないようにすることをお勧めします。 クライアントに 200 を超えるジョブが待機しているときに任意の時点で処理された場合、追加のジョブのアップロードは禁止されます。
検証と処理
クライアントがファイルをアップロードすると、次のフェーズでファイルの処理が行われ、セグメント ID とユーザー ID の検証が実行されます。レコードに無効なセグメント ID またはユーザー ID が含まれている場合、プラットフォームはレコードを処理しません。 クライアントがジョブ ステータスをチェックすると、無効なユーザーの数に関する統計情報を表示できます。
完了
このフェーズでは、ファイルのデータがプラットフォームに正常にアップロードされ、ターゲットに使用できるようになります。
考えられるアップロード エラー
0.5 GB を超えるファイルをアップロードしようとしています
{"response":{"status":"ERROR","error_code":"FILESIZE_LIMIT_EXCEEDED","errors":["Member exceeds maximum byte size allowed for a file"]}}
バッチ セグメント アップロード ジョブのエラー コード
""batch_segment_upload_job": {
"phase": "error",
"start_time": "2015-08-13 18:40:32",
"uploaded_time": null,
"validated_time": null,
"completed_time": null,
"error_code": "uploading-error",
"time_to_process": "0.00",
"percent_complete": 0,
"num_valid": 0,
"num_invalid_format": 0,
"num_valid_user": 0,
"num_invalid_user": 0,
"num_invalid_segment": 0,
"num_invalid_timestamp": 0,
"num_unauth_segment": 0,
"num_past_expiration": 0,
"num_inactive_segment": 0,
"num_other_error": 0,
"error_log_lines": null,
"segment_log_lines": null,
"id": 11661553,
"job_id": "Pm3oCUf5CSVKIOt4mAqOzdt6K3qInj1431542432",
"member_id": 958,
"created_on": "2015-05-13 18:40:32",
"last_modified": "2015-05-13 18:40:33"
}
次のエラーは、次の場合に発生する可能性があります。
4 つのアップロード制限のうちの 1 つに達しました。
- 毎日のバイト数、
- 時間単位のバイト、
- 毎日の行、または
- 時間単位の明細行
1 日のバイト アップロード制限を超えようとする
{"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member exceeds maximum allowed bytes per day"]}}1 時間あたりのバイト アップロード制限を超えようとしています
{"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member exceeds maximum allowed bytes per hour"]}}1 日あたりの行のアップロード制限を超えようとする
{"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member exceeds maximum allowed number of lines per day"]}}時間単位の行のアップロード制限を超えようとする
{"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Member exceeds maximum allowed number of lines per hour"]}}アップロードをキャンセルしました。
アップロード フェーズが 90 分を超えています。 アップロードに最大時間を超過する
{"response":{"status":"ERROR","error_code":"RATE_LIMIT_EXCEEDED","errors":["Maximum upload time exceeded"]}}
考えられる処理エラー
無効な形式
num_invalid_format フィールドの値が "0" より大きい場合は、[error_log_lines] フィールドの値をチェックします。
次の例では、[ num_invalid_format ] フィールドに "1" の値が表示され、詳細が [ error_log_lines ] フィールドに表示されます。
[ error_log_lines ] フィールドで、次の操作を行います。
-
num_invalid_formatアップロードされたファイルの行の解析に問題があることを示します。 -
"failed with an illegal number of fields"segment_fieldsブロック内のフィールドの数が、バッチ セグメント構成で定義されたものと一致しなかったことを示します (詳細については、「BSS アカウントの初期設定」を参照してください)。
この場合、構成では SEG_ID、 VALUE、 EXPIRATION の 3 つのフィールドがブロックで定義されることを想定していますが、パーサーは SEG_ID と VALUE の 2 つのフィールドしか見つからなかったため、エラーが表示されます。
num_invalid_format および error_log_lines 例
"batch_segment_upload_job": {
phase": "completed",
"error_code": null,
"time_to_process": "0.01",
"percent_complete": 100,
"num_valid": 0,
"num_invalid_format": 1,
"num_valid_user": 0,
"num_invalid_user": 0,
"num_invalid_segment": 0,
"num_invalid_timestamp": 0,
"num_unauth_segment": 0,
"num_past_expiration": 0,
"num_inactive_segment": 0,
"num_other_error": 0,
"error_log_lines": "num_invalid_format-WINDOWSADID-USER-ID;SEG_ID:VALUE~9 failed with an illegal number of fields",
"segment_log_lines": null,
"start_time": "2015-08-13 18:40:32",
"uploaded_time": "2015-08-13 18:42:32",
"validated_time": "2015-08-13 18:42:32",
"completed_time": "2015-08-13 18:42:33",
"id": 123412341234,
"job_id": "Pm3oCUf5CSVKIOt4mAqOzdt6K3qInj1431542432",
"member_id": 958,
"created_on": "2015-08-13 18:40:32",
"last_modified": "2015-08-13 18:42:33"
}
ファイルのアップロード履歴を表示する
過去 30 日間にアップロードされたすべてのセグメント ファイルに関するメタデータを表示するには、クエリ文字列に指定したmember_idを使用してサービスをGET呼び出します。 JSON 応答には、 batch_segment_upload_job オブジェクトの配列が含まれます。
batch_segment_upload_job オブジェクトの特定のフィールドの詳細については、「JSON フィールド」を参照してください。
注:
ファイルのアップロード履歴は、過去 30 日間のみ表示されます。
$ curl -b cookies 'https://api.appnexus.com/batch-segment?member_id=456'
{
"response" : {
"batch_segment_upload_job" : [
{
"phase": "completed",
"start_time": "2012-05-22 16:48:55",
"uploaded_time": "2012-05-22 16:48:56",
"validated_time": "2012-05-22 16:49:01",
"completed_time": "2012-05-22 16:49:01",
"error_code": null,
"time_to_process": "0.04",
"percent_complete": 100,
"num_valid": 0,
"num_invalid_format": 0,
"num_invalid_user": 2,
"num_invalid_segment": 0,
"num_unauth_segment": 1,
"num_past_expiration": 0,
"num_inactive_segment": 0,
"num_other_error": 0,
"error_log_lines": " \n\nnum_unauth_segment-4013681496264948522;5013:0,5014:1550\nnum_invalid_user-7652266028043224430;5848:0,5849:1440,5850:1440\nnum_invalid_user-8802117132500293405;5851:0,5847:-1",
"id": 98,
"job_id": "T1v98eIOlCZndeLGSXD0nrs57L8ES11337705335",
"member_id": 456,
"created_on": "2012-05-22 16:48:55",
"last_modified": "2012-05-22 16:49:01"
},
...
}
}
}
注:
この API では、ページネーションを使用して応答を 100 オブジェクトに制限します。 次のいずれかを API 呼び出しに追加することで、追加のオブジェクトを表示できます。
&start_element=101&sort=last_modified.desc
ページネーションの詳細については、 こちらのドキュメント ポータルを参照してください。
技術的な問題が引き続き発生する場合は、 Microsoft 広告カスタマー サポート ポータルで要求を送信できます。 サポート リクエストにジョブ ID を含めることを忘れないでください。
JSON フィールド
| HTTP メソッド | エンドポイント | 説明 |
|---|---|---|
GET |
https://api.appnexus.com/batch-segment/meta |
この呼び出しを使用して、フィルター処理と並べ替えの基準にするフィールドを確認します。 |
| フィールド | 型 | 説明 |
|---|---|---|
id |
int | これは、この要求に関連付けられている batch_segment_upload_job オブジェクトの ID です。既定値: 自動的に生成された数値。 |
status |
string | API 呼び出しの状態。成功した呼び出しは "OK"を返します。 |
batch_segment_upload_job |
object | これは、アップロードおよび処理ジョブを記述するメタデータがフィールドに含まれるオブジェクトです。 Impbus API を使用している場合、これは 1 つのオブジェクトを含む配列になります。 詳細については、「 バッチ セグメント アップロード ジョブ 」を参照してください。 |
セグメントのバッチ アップロード ジョブ
処理ジョブのステータスを要求すると、システムは batch_segment_upload_job オブジェクトを返します (データ プロバイダの場合、これは 1 つのオブジェクトを含む配列です)。 サービスに対して行う要求に応じて、次のメタデータの一部またはすべてが含まれます。
注:
ほとんどのメタデータは、 "phase": "completed"時にのみ表示されます。
| フィールド | 型 | 説明 |
|---|---|---|
upload_url |
string | セグメント データ ファイルをアップロードする URL。 |
phase |
列挙 | 現在の処理ステータス。 次のいずれかの値を返します。 - error- starting- uploading- validating- processing- completed |
start_time |
date | ファイルのアップロードが開始された時刻。 |
uploaded_time |
date | このジョブ ID に関連付けられたファイルがアップロードされた時刻。 |
validated_time |
date | ファイルの検証が完了した時刻。 |
completed_time |
date | ファイル処理が完了した時刻。 |
error_code |
int |
"phase": "error"の場合、このエラー コードは発生したエラーの種類を表します。 エラー コードは、ファイル自体のアップロード、検証、または処理でエラーが発生した場合のみここに表示されることに注意してください (つまり、無効な形式または無効なセグメント エラーは含まれません)。 一般的なエラーは、ファイルを読み取ることができず、定義されたオブジェクト制限を超えていることが原因で発生します。エラーが見つからなかった場合は null を返します。 |
time_to_process |
decimal | セグメント ファイルの処理にかかった時間 (分単位)。 |
percent_complete |
int | 要求時点の現在のフェーズを考慮した、完了した処理の割合。 |
num_valid |
int | アップロードされたファイルの有効な行数。 各ユーザー/セグメントの組み合わせは 1 行と見なされます。 |
num_invalid_format |
int | 書式設定エラーを含むアップロードされた行の数。 これは、特定のファイル形式の構成によって異なります。 重複する行も無効な形式と見なされます。 |
num_valid_user |
int | 有効なユーザー ID を持つ一意の入力行の数。 |
num_invalid_user |
int | 無効なユーザーまたは存在しないユーザーがいる一意の入力行の数。 |
num_invalid_segment |
int | ファイル内の無効なセグメントの数。 重複排除済み。 |
num_invalid_timestamp |
int | ファイル内の無効なタイムスタンプの数。 |
num_unauth_segment |
int | アクセスが許可されていないファイル内のセグメントの数。 重複排除済み。 |
num_past_expiration |
int | ファイル内の期限切れのセグメントの数。 重複排除済み。 |
num_inactive_segment |
int | ファイル内の非アクティブなセグメントの数。 重複排除済み。 |
num_other_error |
int | 現在使用されていないプレースホルダー値です。 |
error_log_lines |
string | 改行区切りの行を含む文字列。 各行には、検証エラーまたはファイルのアップロード中のエラーの理由が記載されています。 このフィールドに表示する行の数を選択できます。 既定値: 200 lines |
segment_log_lines |
string | セグメント ID と正常に追加または削除されたユーザーの数で構成される改行区切りの行を含む文字列。 このフィールドの既定値は 200 lines です。次の形式が追加されます。 SEG_ID:COUNT SEG_ID:COUNT ... removed: SEG_ID:COUNT ...SEG_ID はセグメント ID、 COUNT は正常に追加または削除されたユーザーの数です。
SEG_ID:COUNT ペアは COUNT (降順) で並べ替えられます。例: added:15889133:38622115547290:186227removed:15889278:36973415889206:25530715889179:232831 |
id |
int | このオブジェクトの一意の識別子。 |
job_id |
string | このファイルに関連付けられた処理ジョブを一意に識別する英数字の文字列。 |
member_id |
int | メンバー ID。 必須: PUT、 POST |
created_on |
date | このオブジェクトの作成日。 |
last_modified |
date | このオブジェクトの最新の変更日 (通常は POST 経由)。 |