Kusto - генерировать данные diff / delta - - PullRequest
0 голосов
/ 28 ноября 2018

Я создал пользовательский тип данных для хранения некоторой конфигурации внешнего продукта.Поэтому каждый день я отправляю конфигурацию этого конкретного продукта / услуги (несколько строк, но с идентичной моделью данных) в хранилище данных Log Analytics.

Есть ли возможность показать, какие строки добавляются или удаляются в течение нескольких дней?Структура данных всегда одна и та же fe

MyCustomData_CL |project Guid_g, Name_s, URL_s

Я хотел бы посмотреть, какие записи добавляются / удаляются в какое время.Так что сравнивайте каждый день с предыдущим днем.

Как мне это сделать с помощью языка запросов Kusto?

С уважением, Дженс

1 Ответ

0 голосов
/ 28 ноября 2018

В следующем запросе используется полное внешнее объединение для сравнения двух наборов (один из предыдущего дня и один из текущего дня).Если в вашей таблице нет столбца 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
...