批次擷取API總覽
Adobe Experience Platform批次擷取API可讓您將資料以批次檔案的形式擷取到Platform。 所擷取的資料可以是平面檔案(例如Parquet檔案)的設定檔資料,或是符合Experience Data Model (XDM)登入中已知結構描述的資料。
批次擷取API參考提供這些API呼叫的其他資訊。
下圖概述批次擷取程式:
快速入門
本指南中使用的API端點是批次擷取API的一部分。 繼續之前,請先檢閱快速入門手冊,以取得相關檔案的連結、閱讀本檔案中範例API呼叫的手冊,以及有關成功呼叫任何Experience PlatformAPI所需必要標題的重要資訊。
Data Ingestion必要條件
- 要上傳的資料必須是Parquet或JSON格式。
- 在Catalog services中建立的資料集。
- Parquet檔案的內容必須符合要上傳到之資料集的結構描述子集。
- 在驗證後取得您唯一的存取Token。
批次擷取最佳實務
- 建議的批次大小介於256 MB和100 GB之間。
- 每個批次最多可包含1500個檔案。
批次擷取限制
批次資料擷取有一些限制:
- 每批次的最大檔案數: 1500
- 最大批次大小:100 GB
- 每列的屬性或欄位數上限: 10000
- 每個使用者每分鐘資料湖的批次數量上限: 2000
型別
擷取資料時,請務必瞭解Experience Data Model (XDM)結構描述的運作方式。 如需有關XDM欄位型別如何對應到不同格式的詳細資訊,請參閱結構描述登入開發人員指南。
擷取資料時有一些彈性 — 如果型別不符合目標結構描述中的內容,資料將會轉換為表達的目標型別。 如果失敗,它將失敗TypeCompatibilityException
的批次。
例如,JSON或CSV都不具有date
或date-time
型別。 因此,這些值會以ISO 8601格式字串 ("2018-07-10T15:05:59.000-08:00")或Unix時間(以毫秒為單位,1531263959000)表示,並在擷取時轉換為目標XDM型別。
下表顯示擷取資料時支援的轉換。
使用 API
Data Ingestion API可讓您以批次(包含一或多個要以單一單位形式內嵌之檔案的資料單位)的形式將資料擷取到Experience Platform中,基本步驟如下:
- 建立新批次。
- 將檔案上傳到與資料的XDM結構描述相符的指定資料集。
- 表示批次結束。
建立批次
必須先將資料連結至批次,之後再將其上傳至指定的資料集,才能將資料新增至資料集。
POST /batches
要求
curl -X POST "https://platform.adobe.io/data/foundation/import/batches" \
-H "Content-Type: application/json" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "x-sandbox-name: {SANDBOX_NAME}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}"
-d '{
"datasetId": "{DATASET_ID}"
}'
datasetId
回應
{
"id": "{BATCH_ID}",
"imsOrg": "{ORG_ID}",
"updated": 0,
"status": "loading",
"created": 0,
"relatedObjects": [
{
"type": "dataSet",
"id": "{DATASET_ID}"
}
],
"version": "1.0.0",
"tags": {},
"createdUser": "{USER_ID}",
"updatedUser": "{USER_ID}"
}
id
relatedObjects.id
檔案上傳
在成功建立要上傳的新批次之後,檔案可以上傳到特定資料集。
您可以使用「小型檔案上傳API」來上傳檔案。 不過,如果您的檔案過大,且已超過閘道限制(例如延長逾時、請求內文大小已超出及其他限制),您可以切換至大型檔案上傳API。 此API會以區塊上傳檔案,並使用大型檔案上傳完成API呼叫將資料彙整在一起。
小檔案上傳
建立批次後,即可將資料上傳到預先存在的資料集。 要上傳的檔案必須符合其參考的XDM結構描述。
PUT /batches/{BATCH_ID}/datasets/{DATASET_ID}/files/{FILE_NAME}
{BATCH_ID}
{DATASET_ID}
{FILE_NAME}
要求
curl -X PUT "https://platform.adobe.io/data/foundation/import/batches/{BATCH_ID}/datasets/{DATASET_ID}/files/{FILE_NAME}.parquet" \
-H "content-type: application/octet-stream" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "x-sandbox-name: {SANDBOX_NAME}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}" \
--data-binary "@{FILE_PATH_AND_NAME}.parquet"
{FILE_PATH_AND_NAME}
回應
#Status 200 OK, with empty response body
大型檔案上傳 — 建立檔案
若要上傳大型檔案,必須將檔案分割為較小的區塊,並一次上傳一個區塊。
POST /batches/{BATCH_ID}/datasets/{DATASET_ID}/files/{FILE_NAME}?action=initialize
{BATCH_ID}
{DATASET_ID}
{FILE_NAME}
要求
curl -X POST "https://platform.adobe.io/data/foundation/import/batches/{BATCH_ID}/datasets/{DATASET_ID}/files/part1=a/part2=b/{FILE_NAME}.parquet?action=initialize" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "x-sandbox-name: {SANDBOX_NAME}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}"
回應
#Status 201 CREATED, with empty response body
大型檔案上傳 — 上傳後續部分
建立檔案後,可以透過重複的PATCH請求(檔案的每個區段各一個)上傳所有後續的區塊。
PATCH /batches/{BATCH_ID}/datasets/{DATASET_ID}/files/{FILE_NAME}
{BATCH_ID}
{DATASET_ID}
{FILE_NAME}
要求
curl -X PATCH "https://platform.adobe.io/data/foundation/import/batches/{BATCH_ID}/datasets/{DATASET_ID}/files/part1=a/part2=b/{FILE_NAME}.parquet" \
-H "content-type: application/octet-stream" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "x-sandbox-name: {SANDBOX_NAME}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}" \
-H "Content-Range: bytes {CONTENT_RANGE}" \
--data-binary "@{FILE_PATH_AND_NAME}.parquet"
{FILE_PATH_AND_NAME}
回應
#Status 200 OK, with empty response
訊號批次完成
將所有檔案都上傳到批次之後,就可以發出完成批次的訊號。 如此一來,便會為完成的檔案建立Catalog DataSetFile專案,並與上述產生的批次產生關聯。 然後Catalog批次會標籤為成功,這會觸發下游流程擷取可用資料。
要求
POST /batches/{BATCH_ID}?action=COMPLETE
{BATCH_ID}
curl -X POST "https://platform.adobe.io/data/foundation/import/batches/{BATCH_ID}?action=COMPLETE" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "x-sandbox-name: {SANDBOX_NAME}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-api-key: {API_KEY}"
回應
#Status 200 OK, with empty response
檢查批次狀態
在等待檔案上傳到批次時,可以檢查批次的狀態以檢視其進度。
API格式
GET /batch/{BATCH_ID}
{BATCH_ID}
要求
curl GET "https://platform.adobe.io/data/foundation/catalog/batch/{BATCH_ID}" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "x-gw-ims-org-id: {ORG_ID}" \
-H "x-sandbox-name: {SANDBOX_NAME}" \
-H "x-api-key: {API_KEY}"
回應
{
"{BATCH_ID}": {
"imsOrg": "{ORG_ID}",
"created": 1494349962314,
"createdClient": "MCDPCatalogService",
"createdUser": "{USER_ID}",
"updatedUser": "{USER_ID}",
"updated": 1494349963467,
"externalId": "{EXTERNAL_ID}",
"status": "success",
"errors": [
{
"code": "err-1494349963436"
}
],
"version": "1.0.3",
"availableDates": {
"startDate": 1337,
"endDate": 4000
},
"relatedObjects": [
{
"type": "batch",
"id": "foo_batch"
},
{
"type": "connection",
"id": "foo_connection"
},
{
"type": "connector",
"id": "foo_connector"
},
{
"type": "dataSet",
"id": "foo_dataSet"
},
{
"type": "dataSetView",
"id": "foo_dataSetView"
},
{
"type": "dataSetFile",
"id": "foo_dataSetFile"
},
{
"type": "expressionBlock",
"id": "foo_expressionBlock"
},
{
"type": "service",
"id": "foo_service"
},
{
"type": "serviceDefinition",
"id": "foo_serviceDefinition"
}
],
"metrics": {
"foo": 1337
},
"tags": {
"foo_bar": [
"stuff"
],
"bar_foo": [
"woo",
"baz"
],
"foo/bar/foo-bar": [
"weehaw",
"wee:haw"
]
},
"inputFormat": {
"format": "parquet",
"delimiter": ".",
"quote": "`",
"escape": "\\",
"nullMarker": "",
"header": "true",
"charset": "UTF-8"
}
}
}
{USER_ID}
"status"
欄位會顯示所請求批次的目前狀態。 批次可以有下列其中一種狀態: