批次擷取疑難排解指南
本檔案可協助回答有關Adobe Experience Platform的常見問題 Batch Data Ingestion API。
批次API呼叫
從CompleteBatch API收到HTTP 200 OK後,批次是否會立即啟用?
此 200 OK
來自API的回應表示已接受該批次進行處理 — 在它轉換為最終狀態(例如「作用中」或「失敗」)之前,它不會處於活動狀態。
在CompleteBatch API呼叫失敗後重試是否安全?
是 — 重試API呼叫是安全的。 儘管失敗,但操作可能實際成功,且批次已成功接受。 不過,如果API失敗,預期使用者端會有重試機制,實際上鼓勵使用者端重試。 如果操作實際成功,API會傳回成功,即使在重試後亦然。
何時應使用大型檔案上傳API?
使用「大型檔案上傳API」的建議檔案大小為256 MB或更大。 如需有關如何使用大型檔案上傳API的詳細資訊,請參閱 此處.
大型檔案完成API呼叫為何失敗?
如果發現大型檔案的區塊重疊或遺失,伺服器會以HTTP 400 Bad Request回應。 發生這種情況是因為有可能上傳重疊的區塊,因為範圍驗證是在檔案完成時、檔案區塊拼接在一起時完成的。
內嵌支援
支援哪些擷取格式?
目前Parquet和JSON都受到支援。 舊版支援CSV — 雖然會將資料升級為主資料庫並完成初步檢查,但不支援任何新式功能,例如轉換、分割或列驗證。
應在何處指定批次輸入格式?
輸入格式應在批次建立時在承載中指定。 以下是如何指定批次輸入格式的範例:
curl -X POST "https://platform.adobe.io/data/foundation/import/batches" \
-H "accept: application/json" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}"
-d '{
"datasetId": "{DATASET_ID}",
"inputFormat": {
"format": "json"
}
}'
為何上傳的資料未出現在資料集中?
為了讓資料顯示在資料集中,批次必須標籤為完成。 您必須先上傳您要擷取的所有檔案,才能將批次標籤為完成。 將批次標示為完成的範例如下所示:
curl -X POST "https://platform.adobe.io/data/foundation/import/batches/{BATCH_ID}?action=COMPLETE" \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
如何擷取多行JSON?
若要內嵌多行JSON,請 isMultiLineJson
標幟必須在建立批次時設定。 這方面的範例可檢視如下:
curl -X POST "https://platform.adobe.io/data/foundation/import/batches" \
-H "accept: application/json" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}"
-d '{
"datasetId": "{DATASET_ID}",
"inputFormat": {
"format": "json",
"isMultiLineJson": true
}
}'
JSON行(單行JSON)和多行JSON之間有何差異?
若為JSON行,每行有一個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,一個物件可以佔據多行,而所有物件都包裝在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"
}
}
]
依預設, Batch Data Ingestion 使用單行JSON。
是否支援CSV內嵌?
僅一般結構描述支援CSV擷取。 目前不支援在CSV中擷取階層資料。
若要取得所有資料擷取功能,需要使用JSON或Parquet格式。
對資料執行什麼型別的驗證?
針對資料執行三個層級的驗證:
- 結構描述 — 批次擷取可確保擷取資料的結構描述與資料集的結構描述相符。
- 資料型別 — 批次擷取可確保擷取的每個欄位的型別都與資料集結構描述中定義的型別相符。
- 限制 — 批次擷取可確保結構描述定義中正確定義限制,例如「必要」、「列舉」和「格式」。
如何取代已內嵌的批次?
已內嵌的批次可以用批次重播功能取代。 有關批次重播的更多資訊可以找到 此處.
如何監控批次內嵌?
在發出批次推進的訊號後,可以使用以下請求來監控批次擷取進度:
curl -X GET "https://platform.adobe.io/data/foundation/catalog/batches/{BATCH_ID}" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}"
透過此請求,您會得到類似以下的回應:
200 OK
{
"{BATCH_ID}":{
"imsOrg":"{ORG_ID}",
"created":1494349962314,
"createdClient":"{API_KEY}",
"createdUser":"{USER_ID}",
"updatedUser":"{USER_ID}",
"completed":1494349963467,
"externalId":"{EXTERNAL_ID}",
"status":"staging",
"errors":[],
}
}
批次狀態
可能的批次狀態為何?
批次在其生命週期中可以經歷以下狀態:
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":[]
}
]
錯誤修正後,批次就可以重新上傳。
批次支援
應如何刪除批次?
不要直接從中刪除 Catalog,應使用下列任一方法來移除批次:
- 如果批次正在進行中,該批次應該中止。
- 如果成功掌握批次,則應還原批次。
有哪些批次層級量度可供使用?
以下批次層級量度適用於處於作用中/成功狀態的批次:
為什麼某些批次沒有量度可用?
批次中可能沒有量度可用有兩個原因:
- 批次從未成功變成「作用中/成功」狀態。
- 使用舊版促銷活動路徑(例如CSV擷取)促銷該批次。
不同的狀態代碼代表什麼?
GetBatch
端點。