ob-dsq icon indicating copy to clipboard operation
ob-dsq copied to clipboard

Emacs: Babel functions for the `dsq` CLI tool by Multiprocess Labs

  • ob-dsq.el

Babel functions for the [[https://github.com/multiprocessio/dsq][dsq CLI tool]] by [[https://multiprocess.io][Multiprocess Labs.]] :heart:

~dsq~ is a command-line tool for running SQL queries against JSON, CSV, Excel, Parquet, and more.

This package adds Org tables, Org quotes and Org source block results to this list.

  • Installation

If you use MELPA, an easy way to install this package is via =package-install=. Alternatively, download =ob-dsq.el=, put it in your =load-path= and =require= it.

If you use both MELPA and =use-package=, you can use this, too:

#+begin_src emacs-lisp (use-package ob-dsq :ensure) #+end_src

  • Screenshot

An SQL query that spans a JSON file and an Org table.

[[screenshots/screenshot.png]]

  • Quickstart

~dsq~ source code blocks use the custom ~:input~ header argument (see below) to specify one or more data sources, then run the SQL query in the source code block on them. Besides regular files, ~ob-dsq~ also supports Org tables, Org quotes, Org source blocks, etc. as data sources.

The example in the above screenshot shows a ~dsq~ source block that runs a simple SQL query spanning a JSON file named ~people.json~ an and Org table named ~foods~ in an Org file name ~random.org~.

  • Custom Header Arguments

~ob-dsq~ uses the custom [[https://orgmode.org/manual/Using-Header-Arguments.html][header arguments]] described in the list below.

See the [[examples][examples]] directory for a lot more features and customization options provided by Org Babel in general and ~ob-dsq~ specifically, such as specifying the result's type and formatting, the various options for passing variables into the query, querying results of an Org source block, and more!

  • ~:input~ -- the list of data sources to query. A data source can be [[examples/README.org#getting-started][a filename]], the [[examples/README.org#querying-org-references-in-local-or-other-files][name of an Org reference]] that builds tabular or list data (an Org table, an Org source block, etc.), or [[examples/README.org#querying-results-of-elisp-forms][an Elisp form]] that generates any of the above or the data to query directly.

  • ~:cache~ -- set to ~yes~ to enable ~dsq~'s [[https://github.com/multiprocessio/dsq#caching][caching feature]]. Requires ~dsq~ version 0.15.0 or higher.

  • ~:convert-numbers~ -- set to ~yes~ (default) to enable ~dsq~'s [[https://github.com/multiprocessio/dsq#converting-numbers-in-csv-and-tsv-files][number conversion feature]]. Requires ~dsq~ version 0.19.0 or higher.

  • ~:header~ -- set to ~yes~ (default) to include header row in table results.

  • ~:hlines~ -- set to ~yes~ to include horizontal lines between rows in table results.

  • ~:null-value~, ~:false-value~ -- customize the rendering of ~null~ and ~false~ values in results.