Преобразование полей с множественными значениями
Поле с множественными значениями (многозначное поле) — это поле, которое содержит более одного значения. Например, журнал электронной почты имеет многозначные поля «Кому:», «Копия:», или журнал интернет-магазина содержит по ле со списком товаров.
Ниже представлены основные команды для работы с многозначными полями.
mvappend
Объединение полей.
Запрос создаст поле event_info
, которое соберёт в себе информацию нескольких других полей. Количество параметров, подаваемых в функцию mvappend может иметь различное число, отличных от нуля.
source sm_cs_auth_indexes
| table user.name, source.ip, event.action
| eval event_info = mvappend(user.name, source.ip, event.action)
mvcount
Подсчет количества значений многозначных полей.
Как и в случае атомарных значений полей, многозначные поля также можно посчитать. Для этого существует команда mvcount
.
Запрос создаст список событий поля event.action
группируя по полю source.ip
, а далее выполняется команда mvcount
которая считает количество значений в поле event.action
.
source sm_cs_auth_indexes
| stats values(event.action) as event.action by source.ip
| eval source_number = mvcount(event.action)
mvfilter
Фильтрация мн огозначных полей.
Запрос создаст новые поля logged_in
и logged
, используя функции mvfilter
и match
, которые помогут выделить согласно шаблонам нужные значение в поле event.action
. Внутри команды mvfilter
используются различные функции совпадений (например, match
, cidrmatch
, in
и т.д.).
source sm_cs_auth_indexes
| stats values(event.action) as event.action by source.ip
| eval source_number = mvcount(event.action)
| eval logged_in = mvfilter(match(event.action, "logged-in"))
| eval logged = mvfilter(match(event.action, "logged-(.*)"))
mvjoin
Принимает на вход имя многозначного поля, значение конкатенатора и возвращает строку со всеми значениями через конкатенатор.
Запрос ищет в индексе среди первых 100000 значений число событий (заказов), группируя заказы по идентификатору пользователя (user_id
), далее выполняет конкатенацию значений поля product
(список продуктов в заказе) с использованием конкатенатора ",
".
При выводе таблицы выполнится сортировка выводимых значений. В столбце product
выполнена сортировка значений. В столбце result
действительный порядок значений в поле product. Действительный порядок значений важен при работе с индексами значений. Поэтому, рекомендуется использовать сортировку значений полей при помощи команды mvsort
.
source food_orders qsize=100000
| stats count, values(items) as product by user_id
| eval result=mvjoin(product, ", ")
| table user_id, product, result