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

join

Описание

Комбинирует результаты подзапроса с результатами основного запроса.

Синтаксис

join [join-options...] [field-list] subsearch

Обязательные аргументы

ПараметрСинтаксисОписание
subsearch[ subsearch ]Запрос должен быть включен в квадратные скобки и начинаться с указания источника (source, script, makeresults и т.д.).

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

ПараметрСинтаксисПо умолчаниюОписание
field-listfield1 (field2 field3 ...)Если никакие поля не указаны, система будет производить автоматический выбор наиболее подходящих полей (по имени).Список полей, по которым будет производиться сопоставление результатов для обогащения (дополнения).
join-optionstype=(inner|outer| left) | max=<int>Уточняющее описание для join.

Опции join

ПараметрСинтаксисОписание
typetype=(inner|outer|left)type описывает способ "схлопывания" результатов.
maxmax=<int>Определяет максимальное количество записей, полученных от join (найденными совпадениями), для дополнения каждой записи исходного запроса.
Типы join

В случае inner в результат будут добавлены только те значения, по которым получилось обнаружить полное совпадение (например поле user (и его значение) в исходном запросе совпало с полем user (и его значением) в выборке join).

В случае left|outer в результат будут добавлены все результаты из исходной выборки, а результаты по которым удалось найти совпадения, будут дополнены данными из join.


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

Данные примеры демонстрируют, как join объединяет основной запрос с подзапросом и как на результат влияют type и max.

Пример 1

В данном примере left сохраняет все записи основного запроса, а max=3 ограничивает число совпадений из подзапроса для каждой строки.

source accessLogs qsize=10
| join type=left max=3 user message
[source radius_logs]

Пример 2

В данном примере inner оставляет только те записи, для которых есть полное совпадение по указанным полям в обоих источниках.

source accessLogs
| join type=inner user message
[source radius_logs]

Пример 3

Данный пример сочетает inner-сопоставление с ограничением max=5, что позволяет ограничить количество совпадений из подзапроса.

source accessLogs
| join type=inner max=5 user message
[source radius_logs]