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

如何在KQL函数/对象中执行控制命令生成最新存储查询结果

KQL存储查询结果更新+分页解决方案

你的代码无法运行的核心原因是:KQL用户定义函数(UDF)只能包含查询语句,不能执行.drop、.set这类管理控制命令——这类命令属于集群管理操作,不能被封装在函数内部执行。

针对你的需求(确保获取最新数据+支持分页),给出以下几种可行方案:

方案1:自动化批量更新存储查询结果(推荐)

利用Azure Logic Apps、Power Automate或自定义脚本(比如Python调用ADX REST API),定期执行「删除旧结果+创建新结果」的批量命令,确保存储结果始终是最新的。

批量执行的命令示例:

.drop stored_query_result my_stored_qry_res if exists
.set stored_query_result my_stored_qry_res <|
// 替换成你的实际查询
YourTable
| where Timestamp > ago(1d)
| summarize count() by Category

用户或API查询时,直接读取存储结果并做分页:

my_stored_qry_res
| skip 20  // 跳过前20条(第二页)
| take 20  // 取20条数据

方案2:单次提交批量命令更新+查询

如果不需要定期更新,而是每次查询前手动触发更新,可以直接提交「删除+创建」的批量命令(ADX支持用换行或分号分隔多个命令),完成后再查询存储结果。

示例批量命令:

.drop stored_query_result my_stored_qry_res if exists;
.set stored_query_result my_stored_qry_res with (previewCount = 20) <|
<你的查询语句>;

方案3:动态查询+分页(无存储结果)

如果无法使用自动化或批量命令,可直接定义返回原始查询结果的函数,调用时通过skip和take实现分页。这种方式能保证每次都是最新数据,但性能会受原始查询复杂度影响(无缓存)。

函数定义:

.create-or-alter function get_latest_data() {
    <你的查询语句>
}

分页查询调用:

get_latest_data()
| skip 0  // 第一页
| take 20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:31:06