Show Menu
トピック×

Batch Ingestionトラブルシューティングガイド

このドキュメントは、Adobe Experience Platform Batch Data Ingest APIに関するよくある質問への回答に役立ちます。

バッチAPI呼び出し

バッチは、CompleteBatch APIからHTTP 200 OKを受け取った後すぐにアクティブになりますか。

APIからの 200 OK 応答は、バッチが処理に受け入れられたことを意味します。バッチは、「アクティブ」や「失敗」などの最終状態にトランジションするまでアクティブになりません。

失敗した後、CompleteBatch API呼び出しを再試行しても問題ありませんか。

はい — API呼び出しを再試行しても問題ありません。 失敗したにもかかわらず、操作が実際に成功し、バッチが正常に受け入れられた可能性があります。 ただし、APIに失敗した場合は、クライアントに再試行メカニズムが必要となり、実際には再試行をお勧めします。 操作が実際に成功した場合、APIは、再試行した後でも成功を返します。

サイズの大きいファイルのアップロードAPIは、いつ使用する必要がありますか。

Large File Upload APIを使用する場合の推奨ファイルサイズは256 MB以上です。 大きいファイルのアップロードAPIの使用方法について詳しくは、 こちらを参照してください

大きいファイル完了API呼び出しが失敗する理由

大きなファイルのチャンクが重なっているか、見つからない場合、サーバーはHTTP 400 Bad Requestを使用して応答します。 これは、重複するチャンクをアップロードできるためです。これは、範囲の検証がファイルの完了時に行われ、ファイルチャンクが繋ぎ合わされる際に行われるからです。

インジェストのサポート

サポートされている取り込み形式は何ですか。

現在、ParketとJSONの両方がサポートされています。 CSVは従来の方法でサポートされています。データはマスターに昇格され、事前確認が行われますが、変換、パーティション化、行検証などの最新の機能はサポートされません。

バッチ入力形式を指定する場所

入力形式は、ペイロード内でのバッチ作成時に指定する必要があります。 バッチ入力形式の指定方法の例を次に示します。
curl -X POST "https://platform.adobe.io/data/foundation/import/batches" \
  -H "accept: application/json" \
  -H "x-gw-ims-org-id: {IMS_ORG}" \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "x-api-key : {API_KEY}"
  -d '{
          "datasetId": "{DATASET_ID}",
           "inputFormat": {
                "format": "json"
           }
    }'

複数行のJSONはどのように取り込まれますか。

複数行のJSONを取り込むには、バッチ作成時に isMultiLineJson フラグを設定する必要があります。 この例を次に示します。
curl -X POST "https://platform.adobe.io/data/foundation/import/batches" \
  -H "accept: application/json" \
  -H "x-gw-ims-org-id: {IMS_ORG}" \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "x-api-key : {API_KEY}"
  -d '{
          "datasetId": "{DATASET_ID}",
           "inputFormat": {
                "format": "json",
                "isMultiLineJson": true
           }
      }'

JSON行(1行JSON)と複数行JSONの違いは何ですか。

JSON行の場合、1行に1つのJSONオブジェクトがあります。 以下に例を示します。
{"string":"string1","int":1,"array":[1,2,3],"dict": {"key": "value1"}}
{"string":"string2","int":2,"array":[2,4,6],"dict": {"key": "value2"}}
{"string":"string3","int":3,"array":[3,6,9],"dict": {"key": "value3", "extra_key": "extra_value3"}}

複数行のJSONの場合、1つのオブジェクトが複数行を占有し、すべてのオブジェクトがJSON配列に含まれます。 以下に例を示します。
[
    {"string":"string1","int":1,"array":[1,2,3],"dict": {"key": "value1"}},
    {"string":"string2","int":2,"array":[2,4,6],"dict": {"key": "value2"}},
    {
        "string": "string3",
        "int": 3,
        "array": [
            3,
            6,
            9
        ],
        "dict": {
            "key": "value3",
            "extra_key": "extra_value3"
        }
    }
]

デフォルトでは、バッチデータ取り込みでは1行のJSONが使用されます。

CSVの取り込みはサポートされていますか。

CSV取り込みは、フラットなスキーマでのみサポートされます。 現在、階層データをCSV形式で取り込むことはできません。
すべてのデータ取り込み機能を取得するには、JSONまたはParket形式を使用する必要があります。

データに対して実行される検証の種類

データに対して実行される検証には、次の3つのレベルがあります。
  • スキーマ — バッチインジェストを使用すると、取り込むデータのスキーマがデータセットのスキーマと一致するようにできます。
  • データタイプ — バッチインジェストでは、取り込む各フィールドのタイプが、データセットのスキーマで定義されているタイプと一致するようにします。
  • 制約 — バッチ取り込みでは、「必須」、「列挙」、「書式」などの制約がスキーマ定義で正しく定義されていることを確認します。

取り込まれたバッチをどのようにして置き換えることができますか?

既に取り込まれているバッチは、バッチ再生機能を使用して置き換えることができます。 バッチ再生について詳しくは、 ここを参照してください

バッチ取り込みはどのように監視されますか。

バッチプロモーションに対してバッチが署名されると、次のリクエストを使用してバッチインジェストの進行状況を監視できます。
curl -X GET "https://platform.adobe.io/data/foundation/catalog/batches/{BATCH_ID}" \
  -H "x-gw-ims-org-id: {IMS_ORG}" \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "x-api-key : {API_KEY}"

このリクエストを使用すると、次のような応答が返されます。
200 OK

{
    "{BATCH_ID}":{
        "imsOrg":"{IMS_ORG}",
        "created":1494349962314,
        "createdClient":"{API_KEY}",
        "createdUser":"{USER_ID}",
        "updatedUser":"{USER_ID}",
        "completed":1494349963467,
        "externalId":"{EXTERNAL_ID}",
        "status":"staging",
        "errors":[],
    }
}

バッチ状態

バッチ状態はどのようなものか。

バッチは、そのライフサイクルで、次の状態を実行できます。
Status
マスターに書き込まれたデータ
説明
破棄
クライアントは、予想された時間枠でバッチを完了できませんでした。
中止
クライアントは、Batch Data Ingest APIを使用して、指定したバッチに対して中止操作を明示的に呼び出しました。 バッチがロード済み状態になると、バッチは中止できません。
アクティブ/成功
x
バッチはステージからマスターに正常にプロモートされ、ダウンストリーム消費に使用できるようになりました。 注意: 「アクティブ」と「成功」は同じ意味で使用されます。
アーカイブ済み
バッチはコールドストレージにアーカイブされました。
失敗/失敗
不正な構成または不正なデータ、あるいはその両方から生じる端末状態。 実行可能なエラーがバッチと共に記録され、クライアントがデータを修正して再送信できるようになります。 注意: 「失敗」と「失敗」は同じ意味で使用されます。
非アクティブ
x
バッチは正常にプロモートされましたが、元に戻されたか、期限が切れています。 バッチはダウンストリーム消費に使用できなくなりますが、基になるデータが保持、アーカイブまたはその他の方法で削除されるまで、基になるデータはマスターに残ります。
ロード中
クライアントは現在バッチのデータを書き込んでいます。 バッチは、現時点で はプロモーションの準備ができていません
ロード済み
クライアントはバッチのデータの書き込みを完了しました。 バッチはプロモーションの準備ができています。
保持
データはマスターから取り出され、Adobe Data Lakeの指定されたアーカイブに保存されています。
ステージング
クライアントがプロモーション用のバッチに正常に署名しました。データはダウンストリームでの消費用にステージングされています。
再試行中
クライアントはプロモーション用のバッチに署名しましたが、エラーが発生したため、バッチはバッチ監視サービスによって再試行されています。 この状態は、データの取り込みに遅延が生じる可能性があることをクライアントに通知するために使用できます。
停止
クライアントがプロモーション用のバッチに署名しましたが、バッチ監視サービスによる n 再試行の後、バッチプロモーションが停止しました。

バッチの「ステージング」とは

バッチが「ステージング」にある場合は、そのバッチが販促のために正常にシグナルされ、データが下流消費のためにステージングされていることを意味します。

バッチが「再試行中」の場合の意味は何ですか?

バッチが「再試行中」の場合は、接続が中断される問題が原因でバッチのデータ取り込みが一時的に停止されたことを意味します。 この場合、お客様の介入は必要ありません。

バッチが「停止」の場合の意味は何ですか。

バッチが「停止」にある場合は、Data Ingestion Servicesでバッチの取り込みが困難で、すべての再試行が使い果たされていることを意味します。

バッチがまだ「読み込み中」の場合、どのような意味を持ちますか。

バッチが「読み込み中」の場合は、CompleteBatch APIが呼び出されていないため、バッチをプロモーションしません。

バッチが正常に取り込まれたかどうかを知る方法はありますか。

バッチステータスが「アクティブ」になると、バッチは正常に取り込まれます。 バッチのステータスを確認するには、 前述の手順に従い ます。

バッチが失敗した後の処理

バッチが失敗した場合、失敗の理由は、ペイロードの errors セクションで特定できます。 エラーの例を次に示します。
    "errors":[
        {
            "code":"106",
            "description":"Dataset file is empty. Please upload file with data.",
            "rows":[]
        },
        {
            "code":"118",
            "description":"CSV file contains empty header row.",
            "rows":[]
        }
    ]

エラーが修正されると、バッチを再度アップロードできます。

バッチのサポート

バッチの削除方法

バッチは、カタログから直接削除する代わりに、次のいずれかの方法を使用して削除する必要があります。
  1. バッチが進行中の場合は、バッチを中止する必要があります。
  2. バッチが正常にマスターされた場合は、バッチを元に戻す必要があります。

使用できるバッチレベル指標は何ですか。

アクティブ/成功の状態のバッチには、次のバッチレベルの指標を使用できます。
指標
説明
inputByteSize
Data Ingest Servicesで処理するためにステージングされた合計バイト数です。
inputRecordSize
Data Ingest Servicesで処理するためにステージ化された行の合計数です。
outputByteSize
Data Ingestion ServicesがData Lakeに出力する合計バイト数です。
outputRecordSize
Data Ingestion ServicesがData Lakeに出力する行の合計数です。
partitionCount
Data Lakeに書き込まれたパーティションの合計数です。

指標が一部のバッチで使用できないのはなぜですか?

バッチで指標を使用できない理由は2つあります。
  1. バッチは、アクティブ/成功の状態に正常に行われませんでした。
  2. バッチは、CSVインジェストなど、従来のプロモーションパスを使用してプロモーションされました。

異なるステータスコードの意味

ステータスコード
説明
106
データセットファイルが空です。
118
CSVファイルには、空のヘッダー行が含まれています。
200
バッチは処理に受け入れられ、アクティブや失敗などの最終状態にトランジションします。 送信されたバッチは、エンドポイントを使用して監視でき GetBatch ます。
400
正しくないリクエストです。バッチ内に不足しているか、重複しているチャンクがある場合に返されます。