Перейти к основному содержимому
Версия: 4.2

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.

Опциональные аргументы

ПараметрСинтаксисПо умолчаниюОписание
dedupdedup=<boolean>falseУказывает, нужно ли убирать дубликаты из данных, которые сравниваются со справочником.
<execution-type>type=SOURCE [packsize=<integer>] | FASTDEFAULTСм. Режимы выполнения
lookup-field<string>Название поля для сравнения. Могут быть указаны несколько полей. Разделитель между полями запятая.
event-field<string>Имя поля в основном результате для сравнения с lookup-field. Используется в случае если названия lookup-field и event-field не совпадают.
lookup-destfield<string>Имя результирующего поля с полученными из справочника данными.
OUTPUT | OUTPUTNEWOUTPUT | OUTPUTNEWOUTPUTИндикатор 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.

Примеры запросов

Пример №1
source tables
| search database = "hr"
| lookup my_click_db name as database OUTPUT engine

В первом примере для каждого входящего события выполняется сопоставление поля database из события и поля name в каждой строчке справочника. Если эти значения совпали, в событие будет добавлено поле engine, значение которого будет взято из соответствующей строчки справочника. Если в событие уже было поле engine, оно будет перезаписано новым значением.

Пример №2
source tables
| search database = "hr"
| lookup type=SOURCE packsize=5000 my_click_db name as database OUTPUTNEW engine

Во втором примере выполняется аналогичное сопоставление в режиме SOURCE. Это значит что сопоставление будет выполнено средствами хранилища. Параметр packsize=5000 указывает что запросы к хранилищу будут отправляться пачками по 5000. Опция OUTPUTNEW указывает, что поле engine не будет перезаписано, если оно уже есть в событии.