Spec-Zone.ru › Nushell

upsert для фильтров

Обновляет существующий столбец, задавая ему новое значение, или вставляет новый столбец.

Сигнатура

> upsert {flags} (field) (replacement value)

Параметры

  • field: Имя столбца для обновления или вставки.
  • replacement value: Новое значение для ячейки (ячеек) или замыкание для создания значения.

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

input output
record record
table table
list<any> list<any>

Примеры

Обновление значения записи.

> {'name': 'nu', 'stars': 5} | upsert name 'Nushell'
╭───────┬─────────╮
│ name  │ Nushell │
│ stars │ 5       │
╰───────┴─────────╯

Вставка новой записи в запись.

> {'name': 'nu', 'stars': 5} | upsert language 'Rust'
╭──────────┬──────╮
│ name     │ nu   │
│ stars    │ 5    │
│ language │ Rust │
╰──────────┴──────╯

Обновление каждой строки таблицы.

> [[name lang]; [Nushell ''] [Reedline '']] | upsert lang 'Rust'
╭───┬──────────┬──────╮
│ # │   name   │ lang │
├───┼──────────┼──────┤
│ 0 │ Nushell  │ Rust │
│ 1 │ Reedline │ Rust │
╰───┴──────────┴──────╯

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

> [[foo]; [7] [8] [9]] | upsert bar {|row| $row.foo * 2 }
╭───┬─────┬─────╮
│ # │ foo │ bar │
├───┼─────┼─────┤
│ 0 │   7 │  14 │
│ 1 │   8 │  16 │
│ 2 │   9 │  18 │
╰───┴─────┴─────╯

Замена значений null в столбце значением по умолчанию.

> [[foo]; [2] [null] [4]] | upsert foo { default 0 }
╭───┬─────╮
│ # │ foo │
├───┼─────┤
│ 0 │   2 │
│ 1 │   0 │
│ 2 │   4 │
╰───┴─────╯

Обновление значения в списке по индексу.

> [1 2 3] | upsert 0 2
╭───┬───╮
│ 0 │ 2 │
│ 1 │ 2 │
│ 2 │ 3 │
╰───┴───╯

Вставка нового значения в конец списка.

> [1 2 3] | upsert 3 4
╭───┬───╮
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
│ 3 │ 4 │
╰───┴───╯

Добавление значения по вложенному пути с созданием новых значений при необходимости.

> [{} {a: [{}]}] | upsert a.0.b "value"
╭───┬───────────────────────────╮
│ # │             a             │
├───┼───────────────────────────┤
│ 0 │ ╭───┬───────╮             │
│   │ │ b │ value │             │
│   │ ╰───┴───────╯             │
│ 1 │ ╭───┬───────────────────╮ │
│   │ │ 0 │ {record 0 fields} │ │
│   │ ╰───┴───────────────────╯ │
╰───┴───────────────────────────╯

Примечания

При обновлении или вставке столбца замыкание будет выполняться для каждой строки, а текущая строка будет передаваться в качестве первого аргумента. Обращение к $in внутри замыкания вернёт значение столбца для текущей строки или null, если столбец не существует.

При обновлении по определённому индексу замыкание будет выполняться только один раз. И первым аргументом замыкания, и значением $in будет текущее значение по этому индексу. Если команда вставляет значение в конец списка или таблицы, оба этих значения будут равны null.

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

Spec-Zone.ru

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