Skip to main content

No project description provided

Project description

Columnq

Simple CLI to help you query tabular data with support for a rich set of growing formats and data sources.

It supports JSON, CSV, Parquet, Arrow and all other formats that are supported by ROAPI, which is documented at here.

It also supports querying datasets from remote locations like S3 and HTTPs, see ROAPI's blob store documentation for more info.

Installation

Pre-built binary

The pre-built binaries hosted on GitHub releases. These binaries are self-contained so you can just drop them into your PATH.

The same set of binaries are also distributed through PyPI:

pip install columnq-cli

Build from source

cargo install --locked --git https://github.com/roapi/roapi --branch main --bins columnq-cli

Usage

One off query

The sql subcommand executes a provided SQL query against specificed static dataset and returns the result in stdout on exit. This is usually useful for script automation tasks.

$ columnq sql --table test_data/spacex_launches.json \
  "SELECT COUNT(id), DATE_TRUNC('year', CAST(date_utc AS TIMESTAMP)) as d FROM spacex_launches WHERE success = true GROUP BY d ORDER BY d DESC"
+-----------+---------------------+
| COUNT(id) | d                   |
+-----------+---------------------+
| 4         | 2021-01-01 00:00:00 |
| 26        | 2020-01-01 00:00:00 |
| 13        | 2019-01-01 00:00:00 |
| 21        | 2018-01-01 00:00:00 |
| 18        | 2017-01-01 00:00:00 |
| 8         | 2016-01-01 00:00:00 |
| 6         | 2015-01-01 00:00:00 |
| 6         | 2014-01-01 00:00:00 |
| 3         | 2013-01-01 00:00:00 |
| 2         | 2012-01-01 00:00:00 |
| 2         | 2010-01-01 00:00:00 |
| 1         | 2009-01-01 00:00:00 |
| 1         | 2008-01-01 00:00:00 |
+-----------+---------------------+

By default, the sql subcommand outputs results in human friendly table format. You can change the output format using --output option to make it more friendly for automations.

$ columnq sql --table test_data/spacex_launches.json --output json "SELECT COUNT(id) AS total_launches FROM spacex_launches"
[{"total_launches":132}]

Automate with UNIX pipes

Just like other UNIX tools, columnq supports consuming data stream from stdin to integrate with other CLI tools using UNIX pipe:

find . -printf "%M|%n|%u|%s|%P\n" | columnq sql \
    --table 't=stdin,format=csv,has_header=false,delimiter=|' \
    "SELECT SUM(column_4) as total_size FROM t"
+------------+
| total_size |
+------------+
| 9875017987 |
+------------+

Format conversion

The Columnq CLI can also be used as a handy utility to convert tabular data between various formats: json, parquet, csv, yaml, arrow, etc.

$ columnq sql --table 't=test_data/uk_cities_with_headers.csv' 'SELECT * FROM t' --output json
$ cat test_data/blogs.parquet | columnq sql --table 't=stdin,format=parquet' 'SELECT * FROM t' --output json

Interactive console

For dataset exploration, you can use the console subcommand to query multiple datasets in an interactive console environment:

$ columnq console \
    --table "uk_cities=test_data/uk_cities_with_headers.csv" \
    --table "test_data/spacex_launches.json"
columnq(sql)> SELECT * FROM uk_cities WHERE lat > 57;
+-----------------------------+-----------+-----------+
| city                        | lat       | lng       |
+-----------------------------+-----------+-----------+
| Elgin, Scotland, the UK     | 57.653484 | -3.335724 |
| Aberdeen, Aberdeen City, UK | 57.149651 | -2.099075 |
| Inverness, the UK           | 57.477772 | -4.224721 |
+-----------------------------+-----------+-----------+
columnq(sql)> SELECT COUNT(*) FROM spacex_launches WHERE success=true AND upcoming=false;
+-----------------+
| COUNT(UInt8(1)) |
+-----------------+
| 111             |
+-----------------+

Explore in memory catalog and table schemas:

columnq(sql)> SHOW TABLES;
+---------------+--------------------+-----------------+------------+
| table_catalog | table_schema       | table_name      | table_type |
+---------------+--------------------+-----------------+------------+
| datafusion    | public             | uk_cities       | BASE TABLE |
| datafusion    | public             | spacex_launches | BASE TABLE |
| datafusion    | information_schema | tables          | VIEW       |
| datafusion    | information_schema | columns         | VIEW       |
+---------------+--------------------+-----------------+------------+
columnq(sql)> SHOW COLUMNS FROM uk_cities;
+---------------+--------------+------------+-------------+-----------+-------------+
| table_catalog | table_schema | table_name | column_name | data_type | is_nullable |
+---------------+--------------+------------+-------------+-----------+-------------+
| datafusion    | public       | uk_cities  | city        | Utf8      | NO          |
| datafusion    | public       | uk_cities  | lat         | Float64   | NO          |
| datafusion    | public       | uk_cities  | lng         | Float64   | NO          |
+---------------+--------------+------------+-------------+-----------+-------------+

Development

Debug mode

Set the RUST_LOG environment variable to info,columnq=debug to run columnq in verbose debug logging.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

columnq_cli-0.7.0-py3-none-win_amd64.whl (25.5 MB view details)

Uploaded Python 3Windows x86-64

columnq_cli-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (24.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

columnq_cli-0.7.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (27.3 MB view details)

Uploaded Python 3manylinux: glibc 2.12+ x86-64

columnq_cli-0.7.0-py3-none-macosx_10_12_x86_64.whl (25.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

columnq_cli-0.7.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (48.8 MB view details)

Uploaded Python 3macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file columnq_cli-0.7.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: columnq_cli-0.7.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 25.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.15

File hashes

Hashes for columnq_cli-0.7.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 11de8f2ea101ceb2c899d91a61eb66407234c6905b9a1a221f7b3b6853aa2746
MD5 c1192758e9928021599938bc9867deed
BLAKE2b-256 19b058fca361f69d0497e92ba6367b73c4b6c4952e0f6e2d58409093c693471e

See more details on using hashes here.

File details

Details for the file columnq_cli-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for columnq_cli-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 669ee38a6083d8bc8191c388786f2d1711bcb6b6a53ac4628eb360c1b5f2ec3c
MD5 36c386be6fd1342abf2c9bf0aebd80d5
BLAKE2b-256 9b7e7d69bd5a70fcdca0942a759edce8b77c358d7759b21c9fd1c986d5dea9f7

See more details on using hashes here.

File details

Details for the file columnq_cli-0.7.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for columnq_cli-0.7.0-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c97dc8dcb4a229f539b25e7fcdcf7980a7956f089b4ef22b07b3ba10e82ac13b
MD5 ec9057ce401872786e7a68bf8b5c4ac0
BLAKE2b-256 7cfccef8467e698f50cde213abeeb1c5d4a4660070efe6ea6fb2ea89dd1c98fa

See more details on using hashes here.

File details

Details for the file columnq_cli-0.7.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for columnq_cli-0.7.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f2be7017ce2b9fafd63a45e584d7e0db59ce80ebd498b2ed5da4bcbfd7420a01
MD5 73a697ec4a30854c50f3684e81fd9638
BLAKE2b-256 fadb089dd5b768f11baeb8713e038dbb97b6bc8e3a42409b48e505e1a79b2e51

See more details on using hashes here.

File details

Details for the file columnq_cli-0.7.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for columnq_cli-0.7.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 2bcfb4f3323079e1874fa9e344085f6356e5730855c1f8ab85cce6646d94ddbc
MD5 47c508fcec7985bb9a79b2aab89e2f22
BLAKE2b-256 acf8c5f7927cc5869180ad82a1c7371ff0cdd289c4319fdf539a844d26dc4035

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page