繁体   English   中英

无法在 azure 数据工厂中获取对 cosmos db 的查询的标量值

[英]Unable to get scalar value of a query on cosmos db in azure data factory

我试图在 azure 数据工厂的查找活动中获取 cosmos db 中存在的所有记录的计数。 我需要这个值来与其他价值活动输出进行比较。

我使用的查询是SELECT VALUE count(1) from c

当我在插入此查询后尝试预览数据时,我收到一条错误消息

One or more errors occurred. Unable to cast object of type  
 'Newtonsoft.Json.Linq.JValue' to type 'Newtonsoft.Json.Linq.JObject'

如下图所示:我的 azure 查找活动设置的快照

有人可以帮我解决这个错误吗?如果这是 azure 数据工厂的限制,我如何使用 azure 数据工厂中的其他方式获取 cosmos db 文档的所有行数?

我完全在我这边重现了您的问题。

在此处输入图像描述

我认为计数结果不能映射为普通的 JsonObject。 As workaround,i think you could just use Azure Function Activity(Inside Azure Function method,you could use SDK to execute any sql as you want) to output your desired result: {"number":10} .Then bind the Azure Function Activity与 ADF 的其他活动。


现在是矛盾的:

查询 sql 输出一个标量数组,而不是像 jsonObject 甚至 jsonstring 这样的其他东西。

在此处输入图像描述

但是,ADF 查找活动只接受 JObject,而不接受 JValue。 我不能在这里使用任何转换内置 function 因为查询 sql 无论如何都需要使用正确的语法生成。 我已经向 MS 支持团队提交了一张票,但没有遇到这个限制。

在此处输入图像描述

我还尝试select count(1) as num from c ,它在 cosmos db 门户中工作。 但它仍然有限制,因为 sql 跨分区。

在此处输入图像描述

所以,我在这里所能做的就是试图解释问题的根本原因,但不能改变产品行为。

2个粗略的想法:

1.尝试无分区集合在sql之上执行,产生json output。

2.如果计数不大,尝试从db中查询列,并用ForEach Activity循环结果。

您可以使用:

 select top 1 column from c order by column desc 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM