我试图了解 REST 源在数据工厂数据流中的工作原理。我将从一个简单的案例开始。 这是我的 API 的示例响应 (https://reqres.in/api/users):
{
"page": 2,
"per_page": 6,
"total": 12,
"total_pages": 2,
"data": [
{
"id": 7,
"email": "[email protected]",
"first_name": "Michael",
"last_name": "Lawson",
"avatar": "https://reqres.in/img/faces/7-image.jpg"
},
{
"id": 8,
"email": "[email protected]",
"first_name": "Lindsay",
"last_name": "Ferguson",
"avatar": "https://reqres.in/img/faces/8-image.jpg"
},
],
"support": {
"url": "https://reqres.in/#support-heading",
"text": "To keep ReqRes free, contributions towards server costs are appreciated!"
}
}
如您所见,响应负载是一个 Json 对象,其中包含包含实际数据内容的
data
数组。
我需要展开
data
字段并使用数据流保存在 csv 文件中。这非常简单:
现在,让我们更改源代码,并使用稍微不同的响应(https://jsonplaceholder.typicode.com/posts):
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat",
"body": "quia et suscipit suscipit recusandae consequuntur expedita"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias",
"body": "et iusto sed quo"
},
{
"userId": 1,
"id": 4,
"title": "eum et est occaecati",
"body": "ullam et saepe reiciendis voluptatem adipisci"
}
]
在这种情况下,响应正文只是一个 Json 数组。这个特殊的细节,使得不可能达到与以前相同的目标。
最终,我找到了一种解决方法,您应该将 Aggregate 任务与 collect() 函数结合使用。但是,这只是很多开销。
我仍然认为我错过了一些东西,但似乎数据工厂数据流不支持 Json 数组对象作为来自 REST 源的响应负载。
Flatten transformation
使用分层结构内的数组值在第二个示例中,您有Araay值,但它不是分层结构。
要展开这种类型的结构,您也可以使用派生列。
输出: