Spec-Zone.ru › Nushell

merge deep для фильтров

Объединяет входные данные с записью или таблицей, рекурсивно объединяя значения в совпадающих столбцах.

Сигнатура

> merge deep {flags} (value)

Флаги

  • --strategy, -s {string}: используемая стратегия объединения списков. Возможные значения: table (по умолчанию), overwrite, append, prepend

Параметры

  • value: новое значение для объединения.

Типы входных и выходных данных:

вход выход
record record
table table

Примеры

Рекурсивное объединение двух записей

> {a: 1, b: {c: 2, d: 3}} | merge deep {b: {d: 4, e: 5}}
╭───┬───────────╮
│ a │ 1         │
│   │ ╭───┬───╮ │
│ b │ │ c │ 2 │ │
│   │ │ d │ 4 │ │
│   │ │ e │ 5 │ │
│   │ ╰───┴───╯ │
╰───┴───────────╯

Объединение двух таблиц

> [{columnA: 0, columnB: [{B1: 1}]}] | merge deep [{columnB: [{B2: 2}]}]
╭───┬─────────┬─────────────────╮
│ # │ columnA │     columnB     │
├───┼─────────┼─────────────────┤
│ 0 │       0 │ ╭───┬────┬────╮ │
│   │         │ │ # │ B1 │ B2 │ │
│   │         │ ├───┼────┼────┤ │
│   │         │ │ 0 │  1 │  2 │ │
│   │         │ ╰───┴────┴────╯ │
╰───┴─────────┴─────────────────╯

Объединение двух записей и содержащихся в них таблиц

> {inner: [{a: 1}, {b: 2}]} | merge deep {inner: [{c: 3}]}
╭───────┬──────────────────────╮
│       │ ╭───┬────┬────┬────╮ │
│ inner │ │ # │ a  │ c  │ b  │ │
│       │ ├───┼────┼────┼────┤ │
│       │ │ 0 │  1 │  3 │ ❎ │ │
│       │ │ 1 │ ❎ │ ❎ │  2 │ │
│       │ ╰───┴────┴────┴────╯ │
╰───────┴──────────────────────╯

Объединение двух записей с добавлением содержащихся в них таблиц

> {inner: [{a: 1}, {b: 2}]} | merge deep {inner: [{c: 3}]} --strategy=append
╭───────┬──────────────────────╮
│       │ ╭───┬────┬────┬────╮ │
│ inner │ │ # │ a  │ b  │ c  │ │
│       │ ├───┼────┼────┼────┤ │
│       │ │ 0 │  1 │ ❎ │ ❎ │ │
│       │ │ 1 │ ❎ │  2 │ ❎ │ │
│       │ │ 2 │ ❎ │ ❎ │  3 │ │
│       │ ╰───┴────┴────┴────╯ │
╰───────┴──────────────────────╯

Примечания

Способ объединения пар «ключ — значение», присутствующих и во входных данных, и в аргументе, зависит от их типов.

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

Способ объединения списков и таблиц определяется флагом --strategy:

  • table: таблицы объединяются поэлементно, аналогично команде merge. Списки, не являющиеся таблицами, заменяются.
  • overwrite: списки и таблицы заменяются соответствующим значением из аргумента, как и скалярные значения.
  • append: к спискам и таблицам во входных данных добавляется соответствующий список из аргумента.
  • prepend: перед списками и таблицами во входных данных добавляется соответствующий список из аргумента.

Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/merge_deep.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API