【问题标题】:How can I reference a JSON source for a derived column action in Azure Data Factory如何在 Azure 数据工厂中为派生列操作引用 JSON 源
【发布时间】:2020-02-28 08:43:25
【问题描述】:

我是 Azure 数据工厂的新手。我已经能够使用管道从 REST API 源生成一组 JSON 文件。每个文件由一个顶级 JSON 对象和一个包含多达 100 个子对象的数组组成。输出将保存到 Azure Blob 存储容器。

我现在想在将 JSON 写入 Azure SQL 之前使用映射数据流来修改它,但是我在语法上遇到了困难。我已将源配置为指向包含 JSON 文件的目录。 Source Projection 选项卡显示正确的架构。我可以预览数据并看到每个文件的一行,我可以展开子对象以查看完整结构。

但是,当我添加派生列操作时,表达式生成器中的输入架构为空白。我可以使用 byName 和 byPosition 函数引用源中的顶级元素,但我不知道如何引用子元素。

我在网上找到的示例使用 SQL 表或 CSV 文件作为源。我找不到任何使用分层数据作为派生列源的示例。

我错过了什么吗?是否支持这种情况?

【问题讨论】:

    标签: json azure azure-data-factory-2


    【解决方案1】:

    我找到了实现我想要的方法。这可能不是最好的方法,但它确实有效。

    似乎很难处理具有多个层次结构的 JSON 作为复制数据活动的来源。您可以选择一级重复数据以映射到表结构(映射选项卡上的集合引用属性)。

    在我的场景中,我映射到表的数据中有额外的重复数据。我更新了映射以将子 JSON 数据写入我的 SQL 表中的文本字段。为此,我需要为我的管道使用 Azure 数据工厂 JSON 编辑器。您可以从管道可视化编辑器右上角的“代码”链接访问它。

    我在复制活动的“映射”数组的右括号后添加了以下行: "mapComplexValuesToString": 是的

    活动定义中映射数组的完整路径是typeProperties - translate - mappings。添加新元素后,请确保逗号正确。

    使用这种方法,我的 SQL 表中有一行用于我的集合参考中的每个数组项。数组项中的标量子元素映射到表列,并且子 JSON 元素写入同一表中的数据列。

    为了在子 JSON 中提取我需要的值,我创建了一个使用 CROSS APPLY OPENJSON 语法的 SQL 视图。这使我可以将数据字段中的 JSON 视为类似于相关表。您可以指定 JSON 所在的结构。如果您的 JSON 中有嵌套数据,则可以对每个级别应用相同的方法。

    只有更新版本的 SQL Server 支持 OPENJSON 命令。我正在使用 Azure SQL,所以这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-21
      • 2022-01-03
      • 2021-10-03
      • 1970-01-01
      • 2020-07-18
      • 2022-01-01
      • 2021-03-31
      • 1970-01-01
      相关资源
      最近更新 更多