自动将 REST JSON body 的内容映射为数据流中的平面 table
Automatically map contents of REST JSON body as flat table in Data Flow
通过复制数据转换,可以从 REST 调用(平面数组 json objects,类似于 Odata)中检索数据并将内容复制到平面 table 保留源中的数据类型,但无需为该特定数据设置模式。
当我尝试使用数据流重新创建它时,我无法让它工作。当我检查我的源的数据预览时,我得到一个层次结构,其中包含 body(我的 odata 数据)和 header。如果我将它发送到我的接收器 (Avro),它将保存在相同的层次结构中(包括 header)。我知道我可以通过使用 Select 操作(body.column1、body.column2 等)手动修复此问题,但我想让我的数据流动态化,所以我能够与多个 tables/endpoints.
一起使用
所以我通过我的 REST 源收到了这样的信息:
link
而且我希望它在我的 Sink 中是这样的,而无需对我的模式进行硬编码:
link
我唯一能想到的解决方法是使用复制数据检索数据,将其暂时放在某个地方,然后使用我的数据流进一步转换数据。有没有更简单的方法来做到这一点?我无法想象我是唯一遇到此问题的人。
希望它很清楚并且一些body能够提供帮助。非常感谢您。
数据流投影将从 API 获取架构,包括 body 和 header。因此,当您使用自动映射时,所有内容都会被保存。
以下是您可以想到的解决方法,
- 如你所言,先复制数据,再数据流进一步转化
- 使用 select 或派生列转换并转换您的数据以获取所有列名,然后最后使用接收器。为此,您可以选择使用列模式匹配语法。这样一个条件可以满足多个列进行转换。
查看下方 link 以了解列模式映射。
https://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-column-pattern
通过复制数据转换,可以从 REST 调用(平面数组 json objects,类似于 Odata)中检索数据并将内容复制到平面 table 保留源中的数据类型,但无需为该特定数据设置模式。
当我尝试使用数据流重新创建它时,我无法让它工作。当我检查我的源的数据预览时,我得到一个层次结构,其中包含 body(我的 odata 数据)和 header。如果我将它发送到我的接收器 (Avro),它将保存在相同的层次结构中(包括 header)。我知道我可以通过使用 Select 操作(body.column1、body.column2 等)手动修复此问题,但我想让我的数据流动态化,所以我能够与多个 tables/endpoints.
一起使用所以我通过我的 REST 源收到了这样的信息: link
而且我希望它在我的 Sink 中是这样的,而无需对我的模式进行硬编码: link
我唯一能想到的解决方法是使用复制数据检索数据,将其暂时放在某个地方,然后使用我的数据流进一步转换数据。有没有更简单的方法来做到这一点?我无法想象我是唯一遇到此问题的人。
希望它很清楚并且一些body能够提供帮助。非常感谢您。
数据流投影将从 API 获取架构,包括 body 和 header。因此,当您使用自动映射时,所有内容都会被保存。
以下是您可以想到的解决方法,
- 如你所言,先复制数据,再数据流进一步转化
- 使用 select 或派生列转换并转换您的数据以获取所有列名,然后最后使用接收器。为此,您可以选择使用列模式匹配语法。这样一个条件可以满足多个列进行转换。 查看下方 link 以了解列模式映射。 https://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-column-pattern