检索数据摄取错误诊断

Adobe Experience Platform提供两种上传和收录数据的方法。 您可以使用批处理摄取(允许您使用各种文件类型(如CSV)插入数据)或流摄取(允许您使用流端点将数据实时插入Platform)。

此文档提供有关监视批摄取、管理部分批摄取错误的信息,以及关于部分批摄取类型的参考。

入门指南

本指南要求对Adobe Experience Platform的以下组件有充分的了解:

读取示例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: {IMS_ORG}

Experience Platform中的所有资源(包括属于Schema Registry的资源)都隔离到特定虚拟沙箱。 对Platform API的所有请求都需要一个头,该头指定操作将在中执行的沙箱的名称:

  • x-sandbox-name: {SANDBOX_NAME}
注意

有关Platform中沙箱的详细信息,请参阅沙箱概述文档

下载错误诊断

Adobe Experience Platform允许用户下载输入文件的错误诊断。 诊断程序将在Platform内保留30天。

列表输入文件

以下请求将检索最终批中提供的所有文件的列表。

API格式

GET /batches/{BATCH_ID}/meta?path=input_files
属性 描述
{BATCH_ID} 要查找的批的ID。

请求

curl -X GET https://platform.adobe.io/data/foundation/export/batches/af838510-2233-11ea-acf0-f3edfcded2d2/meta?path=input_files \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'

响应

成功的响应将返回详细说明保存诊断的JSON对象。

{
    "_page": {
        "count": 1,
        "limit": 100
    },
    "data": [
        {
            "_links": {
                "self": {
                    "href": "https://platform.adobe.io/data/foundation/export/batches/af838510-2233-11ea-acf0-f3edfcded2d2/meta?path=input_files/fileMetaData1.json"
                }
            },
            "length": "1337",
            "name": "fileMetaData1.json"
        },
                {
            "_links": {
                "self": {
                    "href": "https://platform.adobe.io/data/foundation/export/batches/af838510-2233-11ea-acf0-f3edfcded2d2}/meta?path=input_files/fileMetaData2.json"
                }
            },
            "length": "1042",
            "name": "fileMetaData2.json"
        }
    ]
}

检索输入文件诊断

检索到所有不同输入文件的列表后,可以使用以下请求检索单个文件的诊断。

API格式

GET /batches/{BATCH_ID}/meta?path=input_files/{FILE}
属性 描述
{BATCH_ID} 要查找的批的ID。
{FILE} 要访问的文件的名称。

请求

curl -X GET https://platform.adobe.io/data/foundation/export/batches/af838510-2233-11ea-acf0-f3edfcded2d2/meta?path=input_files/fileMetaData1.json \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'

响应

成功的响应将返回包含path对象的JSON对象,这些对象详细说明了保存诊断的位置。 响应将返回JSON Lines格式的path对象。

{"path": "F1.json"}
{"path": "etc/F2.json"}

检索批处理摄取错误

如果批包含失败,则应检索有关这些失败的错误信息,以便重新摄取数据。

检查状态

要检查所摄取批的状态,必须在GET请求的路径中提供批的ID。

API格式

GET /catalog/batches/{BATCH_ID}
参数 描述
{BATCH_ID} 要检查其状态的批的id值。

请求

curl -X GET https://platform.adobe.io/data/foundation/catalog/batches/af838510-2233-11ea-acf0-f3edfcded2d2 \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'

无错误响应

成功的响应返回,其中包含有关批状态的详细信息。

{
    "af838510-2233-11ea-acf0-f3edfcded2d2": {
        "status": "success",
        "tags": {
            "acp_enableErrorDiagnostics": true,
            "acp_partialIngestionPercent": 5
        },
        "relatedObjects": [
            {
                "type": "dataSet",
                "id": "5deac2648a19d218a888d2b1"
            }
        ],
        "id": "af838510-2233-11ea-acf0-f3edfcded2d2",
        "externalId": "af838510-2233-11ea-acf0-f3edfcded2d2",
        "inputFormat": {
            "format": "parquet"
        },
        "imsOrg": "{IMS_ORG}",
        "started": 1576741718543,
        "metrics": {
            "inputByteSize": 568,
            "inputFileCount": 4,
            "inputRecordCount": 519,
            "outputRecordCount": 497,
            "failedRecordCount": 0
        },
        "completed": 1576741722026,
        "created": 1576741597205,
        "createdClient": "{API_KEY}",
        "createdUser": "{USER_ID}",
        "updatedUser": "{USER_ID}",
        "updated": 1576741722644,
        "version": "1.0.5"
    }    
}
属性 描述
metrics.failedRecordCount 由于分析、转换或验证而无法处理的行数。 可通过从outputRecordCount中减去inputRecordCount来导出此值。 无论启用了errorDiagnostics,都将在所有批上生成此值。

有错误的响应

如果批处理有一个或多个错误并启用了错误诊断,则响应将返回有关这些错误的更多信息,包括在有效负荷本身内以及可下载的错误文件。 请注意,包含错误的批的状态可能仍为成功状态。

{
    "01E8043CY305K2MTV5ANH9G1GC": {
        "status": "success",
        "tags": {
            "acp_enableErrorDiagnostics": true,
            "acp_partialIngestionPercent": 5
        },
        "relatedObjects": [
            {
                "type": "dataSet",
                "id": "5deac2648a19d218a888d2b1"
            }
        ],
        "id": "01E8043CY305K2MTV5ANH9G1GC",
        "externalId": "01E8043CY305K2MTV5ANH9G1GC",
        "inputFormat": {
            "format": "parquet"
        },
        "imsOrg": "{IMS_ORG}",
        "started": 1576741718543,
        "metrics": {
            "inputByteSize": 568,
            "inputFileCount": 4,
            "inputRecordCount": 519,
            "outputRecordCount": 514,
            "failedRecordCount": 5
        },
        "completed": 1576741722026,
        "created": 1576741597205,
        "createdClient": "{API_KEY}",
        "createdUser": "{USER_ID}",
        "updatedUser": "{USER_ID}",
        "updated": 1576741722644,
        "version": "1.0.5",
        "errors": [
           {
             "code": "INGEST-1212-400",
             "description": "Encountered 5 errors in the data. Successfully ingested 514 rows. Please review the associated diagnostic files for more details."
           },
           {
             "code": "INGEST-1401-400",
             "description": "The row has corrupted data and cannot be read or parsed. Fix the corrupted data and try again.",
             "recordCount": 2
           },
           {
             "code": "INGEST-1555-400",
             "description": "A required field is either missing or has a value of null. Add the required field to the input row and try again.",
             "recordCount": 3
           }
        ]
    }
}
属性 描述
metrics.failedRecordCount 由于分析、转换或验证而无法处理的行数。 可通过从outputRecordCount中减去inputRecordCount来导出此值。 无论启用了errorDiagnostics,都将在所有批上生成此值。
errors.recordCount 指定错误代码失败的行数。 如果启用errorDiagnostics,则仅生成​
注意

如果错误诊断不可用,将显示以下错误消息:

{
"errors": [{
"code": "INGEST-1211-400",
"description": "Encountered errors while parsing, converting or otherwise validating the data. Please resend the data with error diagnostics enabled to collect additional information on failure types"
}]
}

后续步骤

本教程介绍了如何监控部分批摄取错误。 有关批摄取的详细信息,请阅读批摄取开发人员指南

附录

本节提供有关摄取错误类型的补充信息。

部分批摄取错误类型

部分批处理摄取数据时有三种不同的错误类型:

不可读的文件

如果摄取的批文件不可读,则批的错误将附加到该批本身。 有关检索失败批次的详细信息,请参阅检索失败批次指南

无效的模式或标头

如果所摄取的批具有无效模式或无效标题,则该批的错误将附加到该批本身。 有关检索失败批次的详细信息,请参阅检索失败批次指南

不可分行

如果所摄取的批具有不可分割的行,则可以使用以下请求视图包含错误的文件列表。

API格式

GET /export/batches/{BATCH_ID}/meta?path=row_errors
参数 描述
{BATCH_ID} 要从中检索错误信息的批的id值。

请求

curl -X GET https://platform.adobe.io/data/foundation/export/batches/01EFZ7W203PEKSAMVJC3X99VHQ/meta?path=row_errors \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'

响应

成功的响应会返回有错误的文件的列表。

{
    "data": [
        {
            "name": "conversion_errors_0.json",
            "length": "1162",
            "_links": {
                "self": {
                    "href": "https://platform.adobe.io:443/data/foundation/export/batches/01EFZ7W203PEKSAMVJC3X99VHQ/meta?path=row_errors%2Fconversion_errors_0.json"
                }
            }
        },
        {
            "name": "parsing_errors_0.json",
            "length": "153",
            "_links": {
                "self": {
                    "href": "https://platform.adobe.io:443/data/foundation/export/batches/01EFZ7W203PEKSAMVJC3X99VHQ/meta?path=row_errors%2Fparsing_errors_0.json"
                }
            }
        }
    ],
    "_page": {
        "limit": 100,
        "count": 2
    }
}

然后,可以使用诊断检索端点检索有关错误的详细信息。

检索错误文件的示例响应如下所示:

{
    "_corrupt_record": "{missingQuotes: 'v1'}",
    "_errors": [{
        "code": "1401",
        "message": "Row is corrupted and cannot be read, please fix and resend."
    }],
    "_filename": "parsing_errors_0.json"
}

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now