You need to enable JavaScript to run this app. KQL运行时动态向Find In运算符传递表列表的实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

KQL运行时动态向Find In运算符传递表列表的实现咨询

实现方案

ADX的KQL查询在编译阶段就需要确定要访问的表名,无法直接将运行时查询得到的表名列表直接传入find的in子句,可通过以下两种方式实现需求:

方案1:Union预筛选(无需额外工具,可直接在ADX界面运行)

先查询得到目标表名的动态数组,再通过union全表后筛选对应表名的方式实现,和手动指定find in效果一致:

// 定义目标表名动态集合
let targetTables = toscalar(
    Usage
    | where TimeGenerated > ago(32d)
    | where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
    | where IsBillable == true
    | summarize BillableDataGB = sum(Quantity) / 1000 by DataType
    | sort by BillableDataGB desc
    | summarize make_list(DataType)
);
// 执行查询逻辑,仅扫描目标表
union withsource=DataType *
where TimeGenerated > ago(31d)
| where DataType in (targetTables)
| project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId, DataType 
| sort by BillableDataBytes nulls last

如果你的库中表数量较多,可以缩小union的扫描范围,比如只匹配日志类表前缀:union withsource=DataType *AuditLogs,*Diagnostics,进一步提升查询性能。

方案2:动态拼接查询(适合自动化调用场景)

如果是通过SDK、PowerShell、工作流等自动化方式调用查询,可以分两步执行:

  1. 先执行表名查询,拿到逗号分隔的表名列表
  2. 将表名字符串拼接进find语句的in子句,再执行最终查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:24:04