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

问题描述 投票:0回答:1

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

我已经尝试使用复制活动从Azure Data Factory读取此非结构化数据,但似乎ADF无法读取未建模的数据。

我的Cosmos DB的样本数据是 -

{
    "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值。

json azure
1个回答
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的语言。

© www.soinside.com 2019 - 2024. All rights reserved.