DuckDB as the New jq

BlackEco@lemmy.blackeco.com to Programming@programming.dev – 76 points –
pgrs.net
8

Love this. Always interesting to see novel ways of querying data in the terminal, and I agree that jq's syntax is difficult to remember.

I actually prefer nu(shell) for this though. On the lobste.rs thread for this blog, a user shared this:

| get license.key -i
| uniq --count
| rename license

This outputs the following:

╭───┬──────────────┬───────╮
│ # │    license   │ count │
├───┼──────────────┼───────┤
│ 0 │ bsd-3-clause │    23 │
│ 1 │ apache-2.0   │     5 │
│ 2 │              │     2 │
╰───┴──────────────┴───────╯

Haha, I tried querying in Nushell before reading this and I was sure there was a better way. And indeed there is (especially since I was missing uniq). I'm still learning the available operators, but I enjoy the shell a lot, as well as its promised capabilities.

I really like Nushell. I would not run it as a daily driver currently, as it mostly doesn't win me over from Fish, feature-wise, but I love having it available for anything CLI date pipeline work I need to do.

While it doesn't provide an SQL interface, I've been using Nushell as my shell, which has native data operations.

I tried querying the same, and I'm still not fluent (this was my third or fourth bigger/practical data querying), but it works well and fast too when you know the syntax:

http get https://api.github.com/orgs/golang/repos | each {|x| get license} | get key | group-by --to-table | update items {|x| $x.items | length }

I've used Nushell for reading en-mass json files, generating command json files for stuff saved in excel files (you can natively open those too), and most recently to query log files for specific information and usage analysis.

/edit: This comment has the better nu solution.

I use jq almost every day, and I can admit its syntax is a bit cumbersome. Will give this a try.

I love DuckDB. It's really nice to be able to put a bunch of parquet files in a directory and then do operations on them as if they were a sql database. You can even put an index on the files if you're feeling froggy.

I'll stick with nushell for terminal-first data interactions.