Наружное применение в Кусто / Azure AppInsights - PullRequest
0 голосов
/ 27 февраля 2020

Я новичок в azure appinsight and kusto, я пытаюсь написать запрос kusto, который будет группировать элементы в таблице и искать последнюю запись по времени.

Это то, что я пытался так far,

Пример таблицы:

let Temptable=datatable(RunId:string,Module:string,AppName:string,timestamp:datetime) [
  "1", "start",   "App1", '2020-02-27T04:30:01.6062658Z',
  "1", "end",   "App1", '2020-02-27T04:31:01.6062658Z',
  "2", "start",   "App1", '2020-02-27T04:00:01.6062658Z',
  "2", "end",   "App1", '2020-02-27T04:01:01.6062658Z',
  "3", "start",   "App1", '2020-02-27T03:30:01.6062658Z',
  "3", "end",   "App1", '2020-02-27T03:31:01.6062658Z',
  "4", "start",   "App1", '2020-02-27T03:00:01.6062658Z',
  "4", "end",   "App1", '2020-02-27T03:01:01.6062658Z',
  "5", "start",   "App1", '2020-02-27T02:30:01.6062658Z',
  "5", "end",   "App1", '2020-02-27T02:31:01.6062658Z',
  "6", "start",   "App2", '2020-02-27T04:00:01.6062658Z',
  "6", "end",   "App2", '2020-02-27T04:01:01.6062658Z',
  "7", "start",   "App2", '2020-02-27T03:00:01.6062658Z',
  "7", "end",   "App2", '2020-02-27T03:01:01.6062658Z',
  "8", "start",   "App2", '2020-02-27T02:00:01.6062658Z',
  "8", "end",   "App2", '2020-02-27T02:01:01.6062658Z',
  "9", "start",   "App2", '2020-02-27T01:00:01.6062658Z',
  "9", "end",   "App2", '2020-02-27T01:01:01.6062658Z',
  "10", "start",   "App2", '2020-02-27T00:30:01.6062658Z',
  "10", "end",   "App2", '2020-02-27T00:32:01.6062658Z'
];

Я выполняю следующий запрос,

let FactTable = Temptable
| where Module == "start"
| summarize by AppName
| project AppName;
FactTable
| lookup kind = inner (Temptable | partition by AppName( summarize Maxtime = max(timestamp) by AppName | top 1 by Maxtime desc nulls last )) on AppName;

Мой вывод:

enter image description here

Мне нужно получить все столбцы для последней записи.

Ниже приведен запрос в sql, который будет извлекать первую первую запись для определенного имени приложения.

select cs.* 
    from (select AppName from #TempTable where Module = 'start' group by AppName) a
    outer apply (select top 1 * from #TempTable b where b.AppName = a.AppName order by [TimeStamp] desc) cs

enter image description here

Как этого добиться в Kusto Query.

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

1 Ответ

2 голосов
/ 27 февраля 2020

Похоже, вы ищете arg_max () Функция агрегирования:

Например:

Temptable
| summarize arg_max(timestamp,*) by AppName
...