Azure Data Factory Lookup活动执行CosmosDB MAX查询遇跨分区聚合错误
解决Azure Data Factory Lookup查询CosmosDB跨分区聚合报错的问题
这个报错其实是CosmosDB跨分区查询的硬性限制——当你在跨分区场景下执行max()这类聚合函数时,必须用VALUE关键字返回单一的聚合结果,不能像原来那样返回带字段名的对象结构。
为什么控制台能正常运行?
大概率是你在CosmosDB控制台执行查询时,数据恰好都落在同一个分区里(或者控制台的查询优化逻辑自动适配了单分区场景),但ADF执行查询时触发了跨分区扫描,所以触发了这个限制。
解决方案:修改查询语句
把你原来的查询:
SELECT max(members.lastModifiedOn) as dt FROM members
改成带VALUE关键字的版本:
SELECT VALUE max(members.lastModifiedOn) FROM members
这个查询会直接返回单一的datetime值,格式类似["2020-09-01T07:32:03.6733333"],而不是带dt键的对象数组,ADF就能正常解析这个结果了。
后续取值说明
修改查询后,Lookup活动的输出结构会变成这样:
{ "value": ["2020-09-01T07:32:03.6733333"], "count": 1 }
如果需要在后续活动中使用这个最大值,可以用表达式:
@activity('你的Lookup活动名称').output.value[0]
内容的提问来源于stack exchange,提问作者framerelay
相关产品推荐
相关产品推荐

