使用API建立資料集
本檔案提供使用Adobe Experience Platform API建立資料集以及使用檔案填入資料集的一般步驟。
快速入門
本指南需要您深入了解下列 Adobe Experience Platform 元件:
- 批次內嵌: Experience Platform可讓您將資料內嵌為批次檔案。
- Experience Data Model (XDM) System: Experience Platform用來組織客戶體驗資料的標準化架構。
- Sandboxes: Experience Platform提供的虛擬沙箱可將單一Platform執行個體分割成個別的虛擬環境,以利開發及改進數位體驗應用程式。
下列章節提供您需瞭解的其他資訊,才能成功呼叫Platform API。
讀取範例 API 呼叫
本教學課程提供範例API呼叫,示範如何格式化您的請求。 這些包括路徑、必要的標頭和正確格式化的請求承載。 此外,也提供 API 回應中傳回的範例 JSON。 如需檔案中所使用範例API呼叫慣例的詳細資訊,請參閱Experience Platform疑難排解指南中如何讀取範例API呼叫一節。
收集所需標頭的值
若要呼叫Platform API,您必須先完成驗證教學課程。 完成驗證教學課程會提供所有 Experience Platform API 呼叫中每個必要標頭的值,如下所示:
Authorization: Bearer {ACCESS_TOKEN}
x-api-key: {API_KEY}
x-gw-ims-org-id: {ORG_ID}
Experience Platform中的所有資源都與特定的虛擬沙箱隔離。 對Platform API的所有請求都需要標頭,以指定將在其中執行作業的沙箱名稱:
- x-sandbox-name:
{SANDBOX_NAME}
所有包含裝載(POST、PUT、PATCH)的要求都需要額外Content-Type: application/json
標題。 若為JSON+PATCH要求,Content-Type
應為application/json-patch+json
。
教學課程
若要建立資料集,必須先定義結構描述。 結構是一組規則,可協助表示資料。 除了說明資料結構外,結構描述還會提供一些限制和期望,可用於在系統之間行動資料時驗證資料。
這些標準定義可讓資料以一致方式解譯,無論其來源為何,並移除跨應用程式翻譯的需求。 如需構成結構描述的詳細資訊,請參閱結構描述構成的基本概念指南
查詢資料集結構
此教學課程從結構描述登入API教學課程的結尾處開始,並會使用該教學課程期間建立的忠誠會員結構描述。
如果您尚未完成Schema Registry教學課程,請從這裡開始,並在撰寫必要的結構描述後繼續此資料集教學課程。
下列呼叫可用來檢視您在Schema Registry API教學課程中建立的熟客方案會員結構描述:
API格式
GET /tenant/schemas/{schema meta:altId or URL encoded $id URI}
要求
curl -X GET \
https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas/_{TENANT_ID}.schemas.533ca5da28087c44344810891b0f03d9 \
-H 'Accept: application/vnd.adobe.xed-full+json; version=1' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
回應
回應物件的格式取決於請求中傳送的Accept標頭。 此回應中的個別屬性已最小化空間。
{
"type": "object",
"title": "Loyalty Members",
"description": "Information for all members of the loyalty program",
"meta:class": "https://ns.adobe.com/xdm/context/profile",
"meta:abstract": false,
"meta:extensible": false,
"meta:extends": [
"https://ns.adobe.com/xdm/context/profile",
"https://ns.adobe.com/xdm/data/record",
"https://ns.adobe.com/xdm/context/identitymap",
"https://ns.adobe.com/xdm/common/extensible",
"https://ns.adobe.com/xdm/common/auditable",
"https://ns.adobe.com/xdm/context/profile-person-details",
"https://ns.adobe.com/xdm/context/profile-personal-details",
"https://ns.adobe.com/{TENANT_ID}/mixins/bb118e507bb848fd85df68fedea70c62"
],
"meta:containerId": "tenant",
"imsOrg": "{ORG_ID}",
"meta:immutableTags": [
"union"
],
"meta:altId": "_{TENANT_ID}.schemas.533ca5da28087c44344810891b0f03d9",
"meta:xdmType": "object",
"properties": {
"repositoryCreatedBy": {},
"repositoryLastModifiedBy": {},
"createdByBatchID": {},
"modifiedByBatchID": {},
"_repo": {},
"identityMap": {},
"_id": {},
"timeSeriesEvents": {},
"person": {},
"homeAddress": {},
"personalEmail": {},
"homePhone": {},
"mobilePhone": {},
"faxPhone": {},
"_{TENANT_ID}": {
"type": "object",
"meta:xdmType": "object",
"properties": {
"loyalty": {
"title": "Loyalty",
"description": "Loyalty Info",
"type": "object",
"meta:xdmType": "object",
"meta:referencedFrom": "https://ns.adobe.com/{TENANT_ID}/datatypes/49b594dabe6bec545c8a6d1a0991a4dd",
"properties": {
"loyaltyId": {
"title": "Loyalty Identifier",
"type": "string",
"description": "Loyalty Identifier.",
"meta:xdmType": "string"
},
"loyaltyLevel": {
"title": "Loyalty Level",
"type": "string",
"meta:xdmType": "string"
},
"loyaltyPoints": {
"title": "Loyalty Points",
"type": "integer",
"description": "Loyalty points total.",
"meta:xdmType": "int"
},
"memberSince": {
"title": "Member Since",
"type": "string",
"format": "date-time",
"description": "Date the member joined the Loyalty Program.",
"meta:xdmType": "date-time"
}
}
}
}
}
},
"$id": "https://ns.adobe.com/{TENANT_ID}/schemas/533ca5da28087c44344810891b0f03d9",
"version": "1.4",
"meta:resourceType": "schemas",
"meta:registryMetadata": {
"repo:createDate": 1551836845496,
"repo:lastModifiedDate": 1551843052271,
"xdm:createdClientId": "{CREATED_CLIENT}",
"xdm:repositoryCreatedBy": "{CREATED_BY}"
}
}
建立資料集
備妥熟客方案後,您現在可以建立參考該方案的資料集。
API格式
POST /dataSets
要求
curl -X POST \
'https://platform.adobe.io/data/foundation/catalog/dataSets?requestDataSource=true' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-d '{
"name":"LoyaltyMembersDataset",
"schemaRef": {
"id": "https://ns.adobe.com/{TENANT_ID}/schemas/719c4e19184402c27595e65b931a142b",
"contentType": "application/vnd.adobe.xed+json;version=1"
}
}'
schemaRef.id
$id
值。schemaRef.contentType
回應
成功的回應會傳回HTTP狀態201 (已建立)和一個回應物件,該回應物件包含一個陣列,其中包含以"@/datasets/{DATASET_ID}"
格式建立的新資料集識別碼。 資料集ID是系統產生的唯讀字串,用來參考API呼叫中的資料集。
[
"@/dataSets/5c8c3c555033b814b69f947f"
]
建立批次
您必須先建立連結至資料集的批次,才能將資料新增到資料集。 該批次隨後將用於上傳。
API格式
POST /batches
要求
請求內文包含「datasetId」欄位,其值是上一步驟產生的{DATASET_ID}
。
curl -X POST 'https://platform.adobe.io/data/foundation/import/batches' \
-H 'accept: 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}' \
-H 'content-type: application/json' \
-d '{
"datasetId":"5c8c3c555033b814b69f947f"
}'
回應
成功的回應會傳回HTTP狀態201 (已建立)和回應物件。 回應物件由陣列組成,該陣列包含新建立批次的識別碼,格式為"@/batches/{BATCH_ID}"
。 批次ID是系統產生的唯讀字串,用來參考API呼叫中的批次。
{
"id": "5d01230fc78a4e4f8c0c6b387b4b8d1c",
"imsOrg": "{ORG_ID}",
"updated": 1552694873602,
"status": "loading",
"created": 1552694873602,
"relatedObjects": [
{
"type": "dataSet",
"id": "5c8c3c555033b814b69f947f"
}
],
"version": "1.0.0",
"tags": {
"acp_producer": [
"{CREATED_CLIENT}"
],
"acp_stagePath": [
"{CREATED_CLIENT}/stage/5d01230fc78a4e4f8c0c6b387b4b8d1c"
],
"use_plan_b_batch_status": [
"false"
]
},
"createdUser": "{CREATED_BY}",
"updatedUser": "{CREATED_BY}",
"externalId": "5d01230fc78a4e4f8c0c6b387b4b8d1c",
"createdClient": "{CREATED_CLIENT}",
"inputFormat": {
"format": "parquet"
}
}
將檔案上傳到批次
成功建立要上傳的新批次後,您現在可以將檔案上傳到特定資料集。 請務必記住,定義資料集時,已將檔案格式指定為Parquet。 因此,您上傳的檔案必須採用該格式。
API格式
PUT /batches/{BATCH_ID}/datasets/{DATASET_ID}/files/{FILE_NAME}
{BATCH_ID}
id
。{DATASET_ID}
id
。{FILE_NAME}
要求
curl -X PUT 'https://platform.adobe.io/data/foundation/import/batches/5d01230fc78a4e4f8c0c6b387b4b8d1c/datasets/5c8c3c555033b814b69f947f/files/loyaltyData.parquet' \
-H 'content-type: application/octet-stream' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {IMG_ORG}' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
--data-binary '@{FILE_PATH_AND_NAME}.parquet'
回應
成功上傳的檔案會傳回空白的回應本文和HTTP狀態200 (確定)。
訊號批次完成
將所有資料檔案上傳至批次後,您可以發出完成批次的訊號。 訊號完成會導致服務為上傳的檔案建立Catalog DataSetFile
專案,並將這些專案與先前產生的批次建立關聯。 Catalog批次標籤為成功,這會觸發任何下游流程,這些流程隨後可用於現在可用的資料。
API格式
POST /batches/{BATCH_ID}?action=COMPLETE
{BATCH_ID}
id
。要求
curl -X POST "https://platform.adobe.io/data/foundation/import/batches/5d01230fc78a4e4f8c0c6b387b4b8d1c?action=COMPLETE" \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {IMG_ORG}' \
-H 'Authorization: Bearer {ACCESS_TOKEN}'
回應
成功完成的批次會傳回空白的回應本文和HTTP狀態200 (確定)。
監視內嵌
根據資料的大小,批次擷取的時間長度不一。 您可以將批次的ID附加至GET /batches
請求,藉此監控批次的狀態。
API格式
GET /batches/{BATCH_ID}
{BATCH_ID}
id
。要求
curl -X GET \
'https://platform.adobe.io/data/foundation/catalog/batches?batch=5d01230fc78a4e4f8c0c6b387b4b8d1c' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {IMG_ORG}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Authorization: Bearer {ACCESS_TOKEN}'
回應
正面回應傳回物件,其status
屬性包含success
的值:
{
"5b7129a879323401ef2a6486": {
"imsOrg": "{ORG_ID}",
"created": 1534142888068,
"createdClient": "{CREATED_CLIENT}",
"createdUser": "{CREATED_BY}",
"updatedUser": "{CREATED_BY}",
"updated": 1534142955152,
"replay": {},
"status": "success",
"errors": [],
"version": "1.0.3",
"availableDates": {},
"relatedObjects": [
{
"type": "batch",
"id": "29285e08378f4a41827e7e70fb7cb8f0"
}
],
"metrics": {
"startTime": 1534142943819,
"endTime": 1534142951760,
"recordsRead": 108,
"recordsWritten": 108
}
}
}
負回應傳回物件的"status"
屬性值為"failed"
,並包含任何相關的錯誤訊息:
{
"5b96ce65badcf701e51f075d": {
"imsOrg": "{ORG_ID}",
"status": "failed",
"relatedObjects": [
{
"type": "batch",
"id": "29285e08378f4a41827e7e70fb7cb8f0"
}
],
"replay": {},
"availableDates": {},
"metrics": {
"startTime": 1536610322329,
"endTime": 1536610438083,
"recordsRead": 4004,
"recordsWritten": 4004,
"failureReason": "Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times,:"
},
"errors": [
{
"code": "0070000017",
"description": "Unknown error occurred."
},
{
"code": "unknown",
"description": "Job aborted."
}
],
"created": 1536609893629,
"createdClient": "{CREATED_CLIENT}",
"createdUser": "{CREATED_BY}",
"updatedUser": "{CREATED_BY}",
"updated": 1536610442814,
"version": "1.0.5"
}
}
從資料集讀取資料
使用批次ID,您可以使用資料存取API來讀取及驗證上傳至批次的所有檔案。 回應會傳回一個陣列,其中包含檔案ID清單,每個檔案ID都會參照批次中的檔案。
您也可以使用資料存取API來傳回名稱、大小(位元組),以及下載檔案或資料夾的連結。
您可以在資料存取開發人員指南中找到使用資料存取API的詳細步驟。
更新資料集結構
您可以新增欄位,並將其他資料擷取到您建立的資料集中。 若要這麼做,您首先需要透過新增定義新資料的其他屬性來更新結構。 這可以使用PATCH和/或PUT操作來更新現有結構描述來完成。
如需更新結構描述的詳細資訊,請參閱結構描述登入API開發人員指南。
更新結構描述後,您可以依照本教學課程中的步驟重新進行,以擷取符合修訂後結構描述的新資料。
請務必記住,結構描述演化是完全相加的,這表示一旦結構描述儲存至登入並用於資料內嵌,您就無法引進重大變更給結構描述。 若要進一步瞭解構成結構描述以與Adobe Experience Platform搭配使用的最佳實務,請參閱結構描述構成的基本概念指南。