У меня есть данные requests
со столбцами url
, name
, timestamp
, к которым я добавляю еще один вычисляемый столбец operationType
.
Я хочу отфильтровать и запросить requests
на основе определенных динамических c атрибутов объекта data
, чтобы получить Операции и их счет использования, например:
operationType | Counts
-------------------------
1.1 Operation A | 2400
-------------------------
1.2 Operation B | 1500
Что у меня есть:
let daysAgo = 100d;
let data = dynamic([
{
'searchKey': 'url',
'searchOperator': 'contains',
'searchValue': 'AjaxContent?option=something',
'operationName': '1.1 Operation A'
},
{
'searchKey': 'name',
'searchOperator': 'matches regex',
'searchValue': 'POST /api/repo/\\d+/filters',
'operationName': '1.2 Operation B'
}]);
let req = requests
| where (timestamp >= ago(daysAgo))
| where
//Issue #1: I want data[0].searchKey to be used as the requests column name
data[0].searchKey contains data[0].searchValue
//url contains data[0].searchValue //works
//Issue #2: 'doesn't work, error 'matches regex' operator requires string arguments
or name matches data[1].searchValue
//or name matches regex 'POST /api/repo/\\d+/filters' //works
| extend operationType=
case(name == data[2].searchValue, data[2].operationName,
url contains data[0].searchValue, data[0].operationName
'Other - please check' )
| order by timestamp desc;
req | summarize Counts = count() by operationType
Идеал было бы создать собственный запрос, как показано ниже (и, возможно, даже циклически просматривая динамические c атрибуты массива data
) (Q # 3):
requests | where data[0].searchKey data[0].searchOperator data[0].searchValue
В том же контексте, идеал также будет расширить вычисляемый столбец operationType
, чтобы он был каким-либо образом создан (Q # 4):
requests
| where
...
| extend operationType= case(url contains data[0].searchValue, data[0].operationName,
name matches regex data[0].searchValue, data[0].operationName)
или
requests
| where
...
| extend operationType= case(data[0].searchKey data[0].searchOperator data[0].searchValue, data[0].operationName,
data[1].searchKey data[1].searchOperator data[0].searchValue, data[0].operationName)
- Может ли значение Dynami c использоваться как имя столбца с данными в операторе
where
(выпуск № 1)? - Можно ли использовать значение Dynami c в качестве правой руки в операторе
matches regex
(выпуск № 2)? - Может ли создать динамически настраиваемый оператор запроса
where
, проходящий по массиву динамического c (Q # 3)? - Может ли вычисляемый расширенный столбец быть настраиваемым создан в операторе
case
(вопрос № 4)?