nushell/crates
Dan Davison 7625aed200
SQL-style join command for Nushell tables (#8424)
This PR adds a command `join` for performing SQL-style joins on Nushell
tables:

```
〉join -h
Join two tables

Usage:
  > join {flags} <right-table> <left-on> (right-on)

Flags:
  -h, --help - Display the help message for this command
  -i, --inner - Inner join (default)
  -l, --left - Left-outer join
  -r, --right - Right-outer join
  -o, --outer - Outer join

Signatures:
  <table> | join list<any>, <string>, <string?> -> <table>

Parameters:
  right-table <list<any>>: The right table in the join
  left-on <string>: Name of column in input (left) table to join on
  (optional) right-on <string>: Name of column in right table to join on. Defaults to same column as left table.

Examples:
  Join two tables
  > [{a: 1 b: 2}] | join [{a: 1 c: 3}] a
  ╭───┬───┬───╮
  │ a │ b │ c │
  ├───┼───┼───┤
  │ 1 │ 2 │ 3 │
  ╰───┴───┴───╯
```

<table>
    <tbody>
        <tr>
<td><img width="400" alt="image"
src="https://user-images.githubusercontent.com/52205/224578744-eb9d133e-2510-4a3d-bd0a-d615f07a06b7.png"></td>
        </tr>
    </tbody>
  </table>


# User-Facing Changes

Adds a new command `join`

# Tests + Formatting

```
cargo test -p nu-command commands::join
```

Don't forget to add tests that cover your changes.

- [x] `cargo fmt --all -- --check` to check standard code formatting
(`cargo fmt --all` applies these changes)
- [x] `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- [x] `cargo test --workspace` to check that all tests pass

# After Submitting

- [ ] If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.

---------

Co-authored-by: Reilly Wood <reilly.wood@icloud.com>
2023-03-16 16:57:20 -07:00
..
nu_plugin_custom_values Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu_plugin_example Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu_plugin_formats Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu_plugin_gstat Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu_plugin_inc Optional members in cell paths: Attempt 2 (#8379) 2023-03-15 20:50:58 -07:00
nu_plugin_python update nu_plugin_python due to signature changes (#8107) 2023-02-18 13:27:24 +00:00
nu_plugin_query Fix docs building error caused by missing end tag (#8477) 2023-03-16 19:41:19 +08:00
nu-cli fix: fix commandline when called with no arguments (#8207) 2023-03-16 17:45:35 -05:00
nu-cmd-lang fix: fix commandline when called with no arguments (#8207) 2023-03-16 17:45:35 -05:00
nu-color-config Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-command SQL-style join command for Nushell tables (#8424) 2023-03-16 16:57:20 -07:00
nu-engine Disable pipeline echo (#8292) 2023-03-17 11:53:46 +13:00
nu-explore Optional members in cell paths: Attempt 2 (#8379) 2023-03-15 20:50:58 -07:00
nu-glob Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-json Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-parser Fix parse of def with paren params (#8490) 2023-03-17 09:08:41 +13:00
nu-path Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-plugin Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-pretty-hex Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-protocol Disable pipeline echo (#8292) 2023-03-17 11:53:46 +13:00
nu-system Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-table Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-term-grid Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-test-support Bump to 0.77.1 development version (#8453) 2023-03-14 23:26:08 +01:00
nu-utils enable error reporting from enable_vt_processing (#8373) 2023-03-16 17:48:21 -05:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.