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

使用Kusto查询实现部署后的Kusto表数据变更追踪

实现Kusto表每日变更追踪查询

核心逻辑

要每日提取变更行,需将当日数据与前一日数据按ColumnA关联,对比除Modifiedat外的业务列差异,筛选出存在变更的记录。

通用Kusto查询

// 定义目标日期(每日执行时可替换为当天,如now())
let target_date = datetime(2023-12-15);
let prev_date = target_date - 1d;

// 获取当日数据
let current_data = YourTableName
| where Modifiedat == target_date;

// 获取前一日数据
let previous_data = YourTableName
| where Modifiedat == prev_date;

// 关联并筛选变更行
current_data
| join kind=inner (previous_data) on ColumnA
| where 
    ColumnB != ColumnB1 or 
    ColumnC != ColumnC1 or 
    ColumnD != ColumnD1
| project 
    ColumnA,
    // 展示各列新旧值对比
    Current_ColumnB = ColumnB, Previous_ColumnB = ColumnB1,
    Current_ColumnC = ColumnC, Previous_ColumnC = ColumnC1,
    Current_ColumnD = ColumnD, Previous_ColumnD = ColumnD1,
    ModifiedDate = target_date

关键说明

  • 时间字段优化:若Modifiedat是字符串格式(如示例中的"Dec15"),需将日期匹配逻辑改为字符串相等判断;建议将Modifiedat字段改为datetime类型,避免格式不一致导致的匹配错误。
  • 关联类型选择:用inner join仅对比两天都存在的ColumnA行;若需追踪新增行,可改用left join并筛选isnull(ColumnB1)的记录。
  • 差异判定:逐一对比业务列的新旧值,只要任意一列存在差异,即判定为变更行。

适配示例数据的查询

针对你提供的字符串格式Modifiedat数据,调整后的查询如下:

let target_day = "Dec15";
let prev_day = "Dec14";

let current_data = YourTableName
| where Modifiedat == target_day;

let previous_data = YourTableName
| where Modifiedat == prev_day;

current_data
| join kind=inner (previous_data) on ColumnA
| where ColumnB != ColumnB1 or ColumnC != ColumnC1 or ColumnD != ColumnD1
| project 
    ColumnA,
    Current_ColumnB = ColumnB, Previous_ColumnB = ColumnB1,
    Current_ColumnC = ColumnC, Previous_ColumnC = ColumnC1,
    Current_ColumnD = ColumnD, Previous_ColumnD = ColumnD1,
    ModifiedDay = target_day

执行后会返回Row4的变更记录(ColumnC从C5变为C4),与你描述的需求一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:35:18