我有一个Azure Data Factory v2管道,该管道从Cosmos DB集合中提取数据。此集合的属性是数组。
我至少希望能够将整个属性的值转储到SQL Azure中的列中。我不需要解析它(尽管那也很好),但是ADF在数据集定义中将此列列为“不受支持的类型”,并在“排除的列”部分列出了它。
这是我正在使用的JSON的示例。我想要的属性是“ MyArrayProperty”:
{
"id": "c4e2012e-af82-4c48-8960-11e0436e6d3f",
"Created": "2019-06-14T16:04:13.9572567Z",
"Updated": "2019-06-14T16:04:14.1920988Z",
"IsActive": true,
"MyArrayProperty": [
{
"SomeId": "a4427015-ca69-4958-90d3-0918fd5dcac1",
"SomeName": "BlahBlah"
}
]
}
}
我尝试手动在ADF数据源(例如“ MyArrayProperty”)中指定一列,并使用字符串数据类型,但是该值始终为null。
答案 0 :(得分:0)
请查看this article文档,以了解MongoDB和Azure SQL之间的架构映射示例。基本上,您应该定义您的 collectionReference ,它将遍历嵌套的对象数组并交叉应用。
答案 1 :(得分:0)
也许有更好的方法来解决此问题,但是我最终创建了第二个复制活动,该活动使用针对Cosmos的查询而不是基于集合的捕获。查询使数组变平,如下所示:
SELECT m.id, c.SomeId, c.SomeName
FROM myCollection m join c in m.MyArrayProperty
然后,我获取了该数据集并将其转储到SQL中的表中,然后在SQL Azure本身中完成了其他工作。您还可以使用新的Join管道任务在到达目的地之前在内存中执行此操作。