我在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值。
您已经注意到,Data Factory不会处理非结构化数据。 Relequestual正确地建议外部数据映射器将是必需的,因为Azure数据仓库也不提供JSON操作。有几种方法可以从Data Factory执行此操作。两者都涉及调用另一个服务来为您处理映射。
1)让管道调用Azure Function来完成工作。管道无法将数据传入和传出函数 - 它需要从Cosmos读取并自行写入Azure DW。在这两者之间,您可以使用您编写函数的任何语言进行映射。这样做的好处是它们编写起来相当简单,但是您的扩展能力会受到函数可以处理的数据量的限制。分钟。
2)进行Azure Data Lake的临时跳跃。您可以将数据复制到存储帐户(有一些选项可用于Data Lake Analytics),调用USQL作业,然后将结果加载到Azure DW中。这样做的缺点是您正在为存储帐户添加额外的读/写操作。但是,它确实允许您根据您的音量扩展所需的数量。如果这是您的偏好,它也使用类似SQL的语言。