lookup
Описание
Позволяет получить данные из предопределённого справочника (lookup). Команда выполняет сравнение заданных полей в событии и справочнике. При полном соответствии событие будет обогащено указанными полями из справочника.
Синтаксис
lookup dedup=<boolean> <execution-type> <lookup-name> ( <lookup-field> [AS <event-field>] )... [ OUTPUT | OUTPUTNEW (<lookup-destfield> [AS <event-destfield>] )... ]
Обязательные аргументы
Параметр | Синтаксис | Описание |
---|---|---|
lookup-name | <lookup-name> | Имя предопределенного lookup. |
Опциональные аргументы
Параметр | Синтаксис | По умолчанию | Описание |
---|---|---|---|
dedup | dedup=<boolean> | false | Указывает, нужно ли убирать дубликаты из данных, которые сравниваются со справочником. |
<execution-type> | type=SOURCE [packsize=<integer>] | FAST | DEFAULT | См. Режимы выполнения |
lookup-field | <string> | Название поля для сравнения. Могут быть указаны несколько полей. Разделитель между полями запятая. | |
event-field | <string> | Имя поля в основном результате для сравнения с lookup-field . Используется в случае если названия lookup-field и event-field не совпадают. | |
lookup-destfield | <string> | Имя результирующего поля с полученными из справочника данными. | |
OUTPUT | OUTPUTNEW | OUTPUT | OUTPUTNEW | OUTPUT | Индикатор OUTPUT указывает, на то что, существующие данные в поле и сходного запроса будут перезаписаны данными из lookup . Индикатор OUTPUTNEW указывает на то, что данные в поле исходного запроса будут перезаписаны, если поле не заполнено, но есть данные для этого поля в lookup . |
Режимы выполнения
DEFAULT
- режим по умолчанию. Рекомендуется использовать только для небольшого потока входящих событий и небольших справочников.FAST
- оптимизированная по скорости версия стандартного алгоритма. Рекомендуется использовать в большинстве случаев.SOURCE
- выполняет сопоставление средствами хранилища. Дополнительно можно указать значениеpacksize
, который определяет размер пачки запросов к хранилищу.
При загрузке в оперативную память справочников в режиме FAST
применяется пользовательский лимит Количество запрашиваемых данных
. Если размер справочника превышает этот лимит, его можно повысить или использовать режим SOURCE
.
SOURCE
Для типа выполнения SOURCE
рекомендуется не ставить большой max_initial_query_len
. Параметр packsize
указывает на то, по сколько событий будет за один запрос обрабатываться движком в каждой итерации. То есть если max_initial_query_len
= 10.000, а packsize
= 5.000, то за одну итерацию в 10 тысяч событий будет отправлено два запроса (max_initial_query_len
/packsize
). Если max_initial_query_len
больше 20 тысяч, то рекомендуется выполнять команду с параметром packsize
в два или три раза меньше max_initial_query_len
.
Примеры запросов
source tables
| search database = "hr"
| lookup my_click_db name as database OUTPUT engine
В первом примере для каждого входящего события выполняется сопоставление поля database
из события и поля name
в каждой строчке справочника. Если эти значения совпали, в событие будет добавлено поле engine
, значение которого будет взято из соответствующей строчки справочника. Если в событие уже было поле engine
, оно будет перезаписано новым значением.
source tables
| search database = "hr"
| lookup type=SOURCE packsize=5000 my_click_db name as database OUTPUTNEW engine
Во втором примере выпо лняется аналогичное сопоставление в режиме SOURCE
. Это значит что сопоставление будет выполнено средствами хранилища. Параметр packsize=5000
указывает что запросы к хранилищу будут отправляться пачками по 5000. Опция OUTPUTNEW
указывает, что поле engine
не будет перезаписано, если оно уже есть в событии.