Azure数据工厂复杂的JSON源(嵌套数组)到Azure SQL数据库? [英] Azure Data Factory complex JSON source (nested arrays) to Azure Sql Database?

查看:15
本文介绍了Azure数据工厂复杂的JSON源(嵌套数组)到Azure SQL数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个JSON源文档,将定期上载到Azure BLOB存储。客户希望使用Azure Data Factory将此输入写入Azure SQL数据库。然而,JSON很复杂,有许多嵌套数组,到目前为止,我还没有找到一种方法来扁平化文档。可能这不受支持/可能?

[
{
"ActivityId": 1,
    "Header": {},
    "Body": [{
        "1stSubArray": [{
            "Id": 456,
            "2ndSubArray": [{
                "Id": "abc",
                "Descript": "text",
                "3rdSubArray": [{
                    "Id": "def",
                    "morefields": "text"
                },
                {
                    "Id": "ghi",
                    "morefields": "sample"
                }]
            }]
        }]
    }]
}
]

我需要将其展平:

ActivityId, Id, Id, Descript, Id, morefields
1, 456, abc, text1, def, text
1, 456, abc, text2, ghi, sample
1, 456, xyz, text3, jkl, textother
1, 456, xyz, text4, mno, moretext 

每个ActivityID可能有8个以上的平面记录。有没有人看到过这种情况,并找到了使用Azure Data Factory Copy Data解决问题的方法?

推荐答案

过去,您可以按照blog和我以前的案例:Loosing data from Source to Sink in Copy Data在Blob存储数据集中设置Cross-apply nested JSON array选项。但是,它现在消失了。

相反,Collection Reference应用于复制活动中的数组项架构映射。

但根据我的测试,一个架构中只能展平一个数组。可以引用多个数组-作为一行返回,其中包含数组中的所有元素。但是,只有一个数组可以将其每个元素作为单独的行返回。这是jsonPath settings的当前限制。

作为解决办法,您可以首先使用Logic App将包含嵌套对象的json文件转换为CSV文件,然后您可以将CSV文件用作Azure数据工厂的输入。请参考doc了解如何使用Logic App将json文件中的嵌套对象转换为CSV。当然,您也可以在SQL数据库端做一些工作,例如@GregGloway在评论中提到的SP。


不幸的是,仅供总结,";集合引用";仅适用于数组结构中的下一层,这不适合@Emrikol。最后,@Emrikol放弃了数据工厂,并为这项工作构建了一款应用程序。

这篇关于Azure数据工厂复杂的JSON源(嵌套数组)到Azure SQL数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆