我在Azure Cosmos Db (Mongo API)中有一个带有动态模式的json文件。我要读取此文件,将其转换为结构化sql表并存储在Azure SQL数据仓库中。我该如何实现这一点?
我已经尝试使用Copy Activity从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文件中不存在的列的值为空值。
发布于 2019-04-29 09:27:17
正如您已经注意到的,data Factory不操作非结构化数据。Relequestual正确地建议需要一个外部数据映射器,因为Azure数据仓库也不提供JSON操作。在Data Factory中有几种方法可以做到这一点。两者都涉及到调用另一个服务来为您处理映射。
1)让管道调用Azure Function来完成这项工作。流水线将无法将数据传入和传出函数-它将需要从Cosmos读取数据,并自行写入Azure DW。在这两者之间,您可以使用编写函数所用的任何语言进行映射。这样做的好处是它们编写起来相当简单,但您的缩放能力将受到您的函数在几分钟内可以处理的数据量的限制。
2)执行进出Azure Data Lake的临时跳跃。你可以将数据复制到存储帐户(有几个选项可以使用data Lake Analytics),调用USQL作业,然后将结果加载到Azure DW中。这样做的缺点是您会向存储帐户添加额外的读/写操作。但是,它确实允许您根据您的音量进行尽可能多的扩展。如果您喜欢的话,它还使用了一种类似SQL的语言。
https://stackoverflow.com/questions/55512737
复制相似问题