如何将非结构化json文件从Azure cosmos Db转换为结构化表?

时间:2019-04-04 09:42:56

标签: json azure

我在Azure Cosmos Db(Mongo API)中具有带有动态架构的json文件。我想读取此文件,将其转换为结构化的sql表并存储在Azure SQL数据仓库中。我该如何实现?

我已经尝试使用复制活动从Azure数据工厂读取此非结构化数据,但似乎ADF无法读取非结构化数据。

我的Cosmos数据库中的样本数据为-

{
    "name" : "Dren",
    "details" : [
        {
            "name" : "Vinod",
            "relation" : "Father",
            "age" : 40,
            "country" : "India",
            "ph1" : "+91-9492918762",
            "ph2" : "+91-8769187451"
        },
        {
            "name" : "Den",
            "relation" : "Brother",
            "age" : 10,
            "country" : "India"
        },
        {
            "name" : "Vinita",
            "relation" : "Mother",
            "age" : 40,
            "country" : "India",
            "ph1" : "+91-9103842782"
        } ]
}

我希望json文件中不存在这些值的列为NULL值。

1 个答案:

答案 0 :(得分:0)

您已经注意到,Data Factory不会处理非结构化数据。 Relequestual正确地建议将需要外部数据映射器,因为Azure数据仓库也不提供JSON操作。 Data Factory有几种方法可以做到这一点。两者都涉及调用另一个服务来为您处理映射。

1)让管道调用Azure Function来完成工作。管道无法将数据传入和传出功能-它需要从Cosmos读取并自行写入Azure DW。在这两者之间,您可以使用编写函数的任何语言进行映射。这样做的好处是它们的编写非常简单,但是扩展的能力在一定程度上受到函数可以在几个函数中处理的数据的限制。分钟。

2)暂时跳入和跳出Azure Data Lake。您将数据复制到一个存储帐户(有一些选项可用于Data Lake Analytics),调用USQL作业,然后将结果加载到Azure DW中。这样做的缺点是您要向存储帐户添加额外的读/写操作。但是,它的确可以让您根据音量进行任意扩展。如果您愿意,它还会利用类似SQL的语言。