【发布时间】:2022-04-12 15:54:09
【问题描述】:
我有一个非常简单的数据工厂映射数据流:
- 我的源是一个 REST API,但出于所有意图和目的,您可以想象它是一个 JSON 文件源
- 源 JSON 的 OData 结构类似于:
{ "@odata.context": "https://link/api/v1/$metadata#Endpoint1", "value": [ { "Id": 0, "Name": "Email" }, { "Id": 1, "Name": "SMS" }, { "Id": 2, "Name": "Carrier Pigeon" } ] }
问题在于,来自初始数据流开发的元数据(列名和数据类型)——我在其中使用 API 端点作为 Projection 架构——在其他端点执行中保留和传播。
当它工作时,我意识到端点已加载,但来自“模型”端点的所有列在当前端点中不存在的列上具有“无”值。 这是一个示例,其中 CreationDate 是一个公共字段, Disabled 仅存在于当前端点中,其余的都来自“模型”端点:
另一个示例,当加载另一个具有不同数据类型的 Id 列的端点时,我遇到了数据类型冲突错误:
作业因原因失败:在接收器“sink1”:org.apache.spark.sql.AnalysisException:无法合并字段“Id”和“Id”。无法合并不兼容的数据类型 StringType 和 ShortType;","Details":"org.apache.spark.sql.AnalysisException: 无法合并字段 'Id' 和 'Id'。合并不兼容的数据类型 StringType 和 ShortType 失败
我尝试从头开始创建数据流,但未在源投影中导入架构,但 Flatten 转换返回错误 - 我在 Flatten 中使用“body.value”作为表达式 - 我没有基于规则的映射中的“层次级别”选项:
对目标数据流 1 的操作失败:{"StatusCode":"DFExecutorUserError","Message":"Job 由于原因失败:在 FoldDown 'Flatten1'(第 14 行/第 8 行):unrollby 应该引用数组或映射列","详细信息":""}
如果有人以这种动态方式成功使用了 Flatten,请告诉我你是怎么做的 - 我正在努力理解我做错了什么。
【问题讨论】:
标签: azure-data-factory-2 azure-data-factory-pipeline azure-data-flow