Kusto-生成数据差异/增量-

时间:2018-11-27 21:35:05

标签: azure-log-analytics kusto

我创建了一个自定义数据类型来存储外部产品的某些配置。因此,每天我都会将此特定产品/服务的配置(多行但具有相同的数据模型)发送到Log Analytics数据存储。

是否有可能显示在多天之间添加或删除哪些行?数据结构总是相同的。

MyCustomData_CL |项目Guid_g,名称,URL

我想看看在什么时候添加/删除了哪些记录。因此,基本上每天与前一天进行比较。

如何使用Kusto查询语言完成此操作?

最好的问候, 詹斯

1 个答案:

答案 0 :(得分:1)

下一个查询使用完全外部联接比较两组(前一天一组,当天一组)。如果您的表中没有datetime列,则可以尝试使用ingestion_time()函数(该函数显示数据被摄入表中的时间)。

let MyCustomData_CL =
datatable (dt:datetime,Guid_g:string , Name_s:string, URL_s:string)
[
datetime(2018-11-27), '111', 'name1', 'url1',
datetime(2018-11-27), '222', 'name2', 'url2',
//
datetime(2018-11-28), '222', 'name2', 'url2',
datetime(2018-11-28), '333', 'name3', 'url3',
];
let data_prev = MyCustomData_CL | where dt between( datetime(2018-11-27) .. (1d-1tick));
let data_new =  MyCustomData_CL | where dt between( datetime(2018-11-28) .. (1d-1tick));
data_prev 
| join kind=fullouter (data_new) on Guid_g , Name_s , URL_s
| extend diff=case(isnull(dt), 'Added', isnull(dt1), 'Removed', "No change")

结果:

dt         Guid_g Name_s URL_s dt1       Guid_g1 Name_s1 URL_s1 diff
2018-11-28 333    name3  url3                                   Added
2018-11-27 111    name1  url1                                   Removed
2018-11-27 222    name2  url2 2018-11-28 222    name2     url2  No change