azure-data-factory-2 - 数据工厂数据流(REST 到 Flatten 到 Delta) - 动态 Flatten
问题描述
我有一个非常简单的数据工厂映射数据流:
- 我的源是一个 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”,“消息”:“作业失败,原因:在 FoldDown 'Flatten1'(第 14 行/第 8 行):unrollby 应引用数组或映射列”, “细节”:””}
如果有人以这种动态方式成功使用了 Flatten,请告诉我你是怎么做的——我试图理解我做错了什么。
解决方案
推荐阅读
- go - 在容器化的 go 应用程序中提供 Swagger 文件的问题
- clang-format - 如何针对 clang 格式的文档打开错误(或提出问题或建议更改)?
- python - evorobotpy2 -- PyTypeObject 没有针对 Python 3.9 构建的 tp_print
- swiftui - SwiftUI - 显示 GoogleMobileAdsMediationTestSuite ViewController
- javascript - 未捕获的引用错误:
未在 HTMLSpanElement.onclick 中定义 - linux - 使用 CMake 安装后共享库未链接在一起
- reactjs - React-Router & useContext,无限重定向或重新渲染
- python - 有没有办法从 res1d 文件中的某个点获取上游里程?
- amazon-web-services - 从另一个 Lambda 函数调用的 AWS Lambda 函数在队列中运行陈旧请求
- babeljs - 如何在 React App 中启用私有方法语法建议?