我有一个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。
发布于 2019-07-13 01:52:28
也许有更好的方法来解决这个问题,但我最终创建了第二个复制活动,它使用对Cosmos的查询而不是基于集合的捕获。查询将数组展平,如下所示:
SELECT m.id, c.SomeId, c.SomeName
FROM myCollection m join c in m.MyArrayProperty
然后,我把这个数据集放到SQL中的一个表中,然后在SQL Azure中做我的其他工作。您还可以使用新的连接管道任务在内存中完成此操作,然后才能到达目的地。
发布于 2019-07-12 03:10:05
有关MongoDB和Azure SQL之间的架构映射示例,请查看this文档。基本上,您应该定义将遍历对象的嵌套数组并进行交叉应用的collectionReference。
https://stackoverflow.com/questions/56991718
复制相似问题