【问题标题】:Data Factory v2 - Generate a json file per row数据工厂 v2 - 每行生成一个 json 文件
【发布时间】:2018-09-08 08:05:18
【问题描述】:

我正在使用数据工厂 v2。我有一个复制活动,其中有一个 Azure SQL 数据集作为输入,一个 Azure 存储 Blob 作为输出。我想将我的 SQL 数据集中的每一行写为一个单独的 blob,但我不知道该怎么做。

我在复制活动中看到了 copyBehavior,但这仅适用于基于文件的源。

另一个可能的设置是我的数据集中的 filePattern:

指明存储在每个 JSON 文件中的数据模式。允许值 分别是:setOfObjects 和 arrayOfObjects。

setOfObjects - 每个文件包含单个对象,或行分隔/连接的多个对象。在输出数据集中选择此选项时,复制活动会生成一个 JSON 文件,其中每个对象每行(以行分隔)。

arrayOfObjects - 每个文件都包含一个对象数组。

描述中提到了“每个文件”,所以最初我认为这是可能的,但现在我已经对其进行了测试,似乎 setOfObjects 创建了一个行分隔文件,其中每一行都写入一个新行。 setOfObjects 设置创建一个带有 json 数组的文件,并将每一行添加为数组的一个新元素。

我想知道我是否在某处遗漏了配置,还是根本不可能?

【问题讨论】:

    标签: json azure-data-factory-2


    【解决方案1】:

    我现在所做的是将行加载到 SQL 表中,并为表中的每条记录运行一个 foreach。我使用 Lookup 活动让数组在 Foreach 活动中循环。 foreach 活动将每一行写入 blob 存储。

    对于 Olga 的 documentDb 问题,它看起来像这样:

    在查找中,您会获得要复制的文档 ID 的列表:

    您在 foreach 活动中使用该集合

    然后您使用 foreach 活动中的复制活动复制文件。您在源中查询单个文档:

    您可以使用 id 来动态命名接收器中的文件。 (您也必须在数据集中定义参数):

    【讨论】:

    • 你能分享更多细节吗?我正在尝试存档几乎相同的内容:我正在尝试将 Azure Cosmos DB 文档复制到 blob 存储。我可以通过将所有集合文档复制到 1 个 json 文件来做到这一点,但我希望每个文档有 1 个 json 文件。我尝试按照您的步骤操作,但是当我在 foreach 管道中创建复制活动时 - 如何选择源作为行(foreach 的输出)?谢谢
    • 为您更新了答案。希望对你有所帮助。
    • 非常感谢!!!要么是关于数据工厂的大量文档,要让它按预期工作仍然不是很容易(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2021-07-22
    • 2018-10-29
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多