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

Kusto/Data Explorer如何筛选列名包含date的所有列

问题分析
  • 第一个问题:你定义的ColswithDates是存储列元数据的表结构,而project运算符需要传入明确的列名/列名集合,无法直接识别表类型的变量作为参数,执行时会直接报「列 ColswithDates 不存在」的错误。
  • 第二个问题:没有将筛选得到的日期列名转换为project/project_columns支持的动态数组格式,无法实现批量选择列的效果。
正确实现方式

以下代码可直接运行实现仅返回所有带date标识的列:

let T1 = datatable (col1:string, col2:string, Date1:string, Date2:string)[
"abc", "def", "2021-11-3", "2021-11-4",
"ghi", "jkl", "2021-11-5", "2021-11-6",
"mno", "pqr", "2021-11-7", "2021-11-8",
"stu", "v", "2021-11-9", "2021-11-10",
"wx", "yz", "2021-11-11", "2021-11-12"];
// 筛选所有列名含date的列,汇总为动态数组,toscalar用于将单行单列的表结果转为标量变量
let ColswithDates = toscalar(
    T1
    | getschema 
    | where ColumnName contains "date"
    | summarize make_list(ColumnName)
);
// project_columns支持传入动态列名数组实现批量选列
T1 
| project_columns(ColswithDates)

如果需要同时把字符串格式的日期列转换为标准datetime类型,可以使用扩展写法:

let T1 = datatable (col1:string, col2:string, Date1:string, Date2:string)[
"abc", "def", "2021-11-3", "2021-11-4",
"ghi", "jkl", "2021-11-5", "2021-11-6",
"mno", "pqr", "2021-11-7", "2021-11-8",
"stu", "v", "2021-11-9", "2021-11-10",
"wx", "yz", "2021-11-11", "2021-11-12"];
let ColswithDates = toscalar(
    T1
    | getschema 
    | where ColumnName contains "date"
    | summarize make_list(ColumnName)
);
T1 
| project_columns(ColswithDates)
// 批量转换所有日期列为datetime类型
| evaluate bag_unpack(
    bag_pack_columns(ColswithDates)
    | mv_with_types expand key to string, val to string
    | extend p = bag_pack(key, todatetime(val))
    | summarize bag_merge(p)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:45:04