GROUP

Группировка словарей по ключу

Аргументы

  • count=''
  • key='' - имя поля, по которому будет выполняться группировка.
  • min, max имя поля для выбора приоритетной записи.

Описание

Группирует словари в списке по ключевому полю (задается аргументом key). Иными словами, в выходном списке не будет двух структур с одинаковым значением ключевого поля. Например, если у нас на входе список процессов и мы группируем по basename, то на выходе у нас будет только один словарь, где basename будет равен apache2, например. (Или ни одного, если в исходном списке их не было).

Если указано max, то на выходе для каждого уникального значения ключа key будет 1 элемент, в котором значение поля max максимальное. Аналогично для min.

Аналогично команде SQL: SELECT .. GROUP BY

Значение полей в выходном словаре берется из первого подходящего (по ключевому полю) словаря из исходного списка.

Если задано значение count, то в выходном словаре будет создано поле с этим именем, в нем будет количество сгруппированных элементов.

Примеры

$ okerrclient -s PROCESSES 'REQFIELDS basename' 'GROUP key=basename count=num' 'FILTER num>4' JDUMP NONE       
[
    {
        "basename": "apache2",
        "exe": "/usr/sbin/apache2",
        "name": "apache2",
        "num": 6,
        "pid": 16062,
        "username": "root"
    },
    {
        "basename": "getty",
        "exe": "/sbin/getty",
        "name": "getty",
        "num": 6,
        "pid": 1424,
        "username": "root"
    },
    {
        "basename": "chromium-browser",
        "exe": "/usr/lib/chromium-browser/chromium-browser",
        "name": "chromium-browser --enable-pinch",
        "num": 14,
        "pid": 3573,
        "username": "xenon"
    },
    {
        "basename": "bash",
        "exe": "/bin/bash",
        "name": "bash",
        "num": 6,
        "pid": 3546,
        "username": "xenon"
    }
]