【问题标题】:Data Factory Data Flow (REST to Flatten to Delta) - dynamic Flatten数据工厂数据流(REST 到 Flatten 到 Delta) - 动态 Flatten
【发布时间】: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"
            }
        ]
}
  • Flatten 层次结构应该通过“body.value”动态展开,并将所有底层节点检索为新列 - 在上面的示例中,发送到接收器的列应该是 [Id, Name] Flatten 的配置如下:

  • Sink 是 ADLSgen2 中的 Delta 表,启用了合并模式:

  • 上述数据流将 API 端点作为参数,并在 Foreach 活动中针对端点列表执行:

  • Foreach 配置:

问题在于,来自初始数据流开发的元数据(列名和数据类型)——我在其中使用 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 应该引用数组或映射列","详细信息":""}

“body.value”在 Flatten 中的表达式:

如果有人以这种动态方式成功使用了 Flatten,请告诉我你是怎么做的 - 我正在努力理解我做错了什么。

【问题讨论】:

    标签: azure-data-factory-2 azure-data-factory-pipeline azure-data-flow


    【解决方案1】:

    我遇到了类似的问题。我的解决方案在这里:

    • 我在 Flatten 之前添加了带有新列 tempArray 和值 array("1") 的派生列。
    • 在 Flatten 中,只需按 tempArray 展开,在 Hierarchy 级别使用 body.value

    它就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 2020-11-26
      • 1970-01-01
      • 2022-10-22
      • 2023-03-07
      • 1970-01-01
      • 2021-09-16
      • 2020-11-06
      • 2020-11-25
      相关资源
      最近更新 更多