You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Kusto查询使结果为对象列表而非嵌套列表?

通过KQL修改查询结果格式,实现直接的对象列表输出

可以完全通过修改KQL查询实现格式转换,无需额外编程处理。以下提供两种适配你需求的解决方案:

方案1:返回单一行,包含完整的对象列表

这种方案会将所有时间点的统计结果打包成一个数组,最终查询返回一行,对应API结果中rows字段直接是你需要的对象列表(只需提取该数组即可):

let startTime = datetime(${someTime});
let endTime = datetime(${someOtherTime});

pageViews
| where client_Type == 'Browser' and cloud_RoleName == '${someCloudName}'
| make-series count(itemCount) default = 0 on timestamp from startTime to endTime step ${someTimespan}
| mv-expand timeStamp = timestamp, value = count_itemCount
| project timeStamp, value
| summarize rows = make_list(pack('timeStamp', timeStamp, 'value', value))

原理说明:

  • 原查询中project rows = pack(...)会为每个时间点生成单独一行,每行仅包含一个对象,导致API返回的rows是嵌套数组([[对象1], [对象2], ...])。
  • 修改后通过summarize make_list(...)将所有时间点的对象收集到一个数组中,最终查询仅返回一行,API返回的rows会是[[对象1, 对象2, ...]],取出数组内部的元素就是你需要的直接对象列表。

方案2:返回多行,每行包含独立字段

如果你的API支持将列值数组转换为对象,可以直接返回timeStamp和value两个字段:

let startTime = datetime(${someTime});
let endTime = datetime(${someOtherTime});

pageViews
| where client_Type == 'Browser' and cloud_RoleName == '${someCloudName}'
| make-series count(itemCount) default = 0 on timestamp from startTime to endTime step ${someTimespan}
| mv-expand timeStamp = timestamp, value = count_itemCount
| project timeStamp, value

原理说明:

  • 查询返回的每行包含timeStamp和value两个字段,API返回的rows会是[[时间戳1, 数值1], [时间戳2, 数值2], ...],你可以让API将每个子数组映射为{timeStamp: 时间戳, value: 数值}格式的对象。

内容的提问来源于stack exchange,提问作者moinierer3000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:57:04