summaryrefslogtreecommitdiffstats
path: root/docs/_posts/2024-03-29-prql-support.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_posts/2024-03-29-prql-support.md')
-rw-r--r--docs/_posts/2024-03-29-prql-support.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/docs/_posts/2024-03-29-prql-support.md b/docs/_posts/2024-03-29-prql-support.md
new file mode 100644
index 0000000..98df8e6
--- /dev/null
+++ b/docs/_posts/2024-03-29-prql-support.md
@@ -0,0 +1,51 @@
+---
+layout: post
+title: Support for the PRQL in the database query prompt
+excerpt: >-
+ PRQL is a database query language that is pipeline-oriented
+ and easier to use interactively
+---
+
+The v0.12.1 release of lnav includes support for
+[PRQL](https://prql-lang.org). PRQL is a database query language
+that has a pipeline-oriented syntax. The main advantage of PRQL,
+in the context of lnav, is that it is easier to work with
+interactively compared to SQL. For example, lnav can provide
+previews of different stages of the pipeline and provide more
+accurate tab-completions for the columns in the result set. I'm
+hoping that the ease-of-use will make doing log analysis in lnav
+much easier.
+
+You can execute a PRQL query using the existing database prompt
+(press `;`). A query is interpreted as PRQL if it starts with
+the [`from`](https://prql-lang.org/book/reference/data/from.html)
+keyword. After `from`, the database table should be provided.
+The table for the focused log message will be suggested by default.
+You can accept the suggestion by pressing TAB. To add a new stage
+to the pipeline, enter a pipe symbol (`|`), followed by a
+[PRQL transform](https://prql-lang.org/book/reference/stdlib/transforms/index.html)
+and its arguments. In addition to the standard set of transforms,
+lnav provides some convenience transforms in the `stats` and `utils`
+namespaces. For example, `stats.count_by` can be passed one or more
+column names to group by and count, with the result sorted by most
+to least.
+
+As you enter a query, lnav will update various panels on the display
+to show help, preview data, and errors. The following is a
+screenshot of lnav viewing a web access log with a query in progress:
+
+![Screenshot of PRQL in action](/assets/images/lnav-prql-preview.png)
+
+The top half is the usual log message view. Below that is the online
+help panel showing the documentation for the `stats.count_by` PRQL
+function. lnav will show the help for what is currently under the
+cursor. The next panel shows the preview data for the pipeline stage
+that precedes the stage where the cursor is. In this case, the
+results of `from access_log`, which is the contents of the access
+log table. The second preview window shows the result of the
+pipeline stage where the cursor is located.
+
+There is still a lot of work to be done on the integration and PRQL
+itself, but I'm very hopeful this will work out well in the long
+term. Many thanks to the PRQL team for starting the project and
+keeping it going, it's not easy competing with SQL.