pql

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 2, 2025 License: Apache-2.0 Imports: 4 Imported by: 3

README

pipelined query language

Website Playground Discord

This Go library compiles a pipelined-based query language (inspired by the Kusto Query Language) into SQL. It has been specifically tested to work with the Clickhouse SQL dialect, but the generated SQL is intentionally database agnostic. This repository contains a Go library, and a CLI to invoke the library.

For example, the following expression:

StormEvents
| where DamageProperty > 5000 and EventType == "Thunderstorm Wind"
| top 3 by DamageProperty

will be compiled to SQL that is similar to:

SELECT *
FROM StormEvents
WHERE DamageProperty > 5000 AND EventType = 'Thunderstorm Wind'
ORDER BY DamageProperty DESC
LIMIT 3;

Getting Started

If you'd like to see a demo along with some examples, check out https://pql.dev.

To use pql in your go code, a minimal example might look like this

package main

import (
	"github.com/runreveal/pql"
)

func main() {
	sql, err := pql.Compile("users | project id, email | limit 5")
	if err != nil {
		panic(err)
	}
	println(sql)
}

Running this program should give you the following output

$ go run test.go

WITH "__subquery0" AS (SELECT "id" AS "id", "email" AS "email" FROM "users")
SELECT * FROM "__subquery0" LIMIT 5;

Documentation

The following tabular operators are supported and the Microsoft KQL documentation is representative of the current pql api.

The following scalar functions are implemented within pql. Functions not in this list will be passed through to the underlying SQL engine. This allows the usage of the full APIs implemented by the underlying engine.

Column names with special characters can be escaped with backticks.

Get involved

License

Apache 2.0

Documentation

Overview

Package pql provides a Pipeline Query Language that can be translated into SQL.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Compile

func Compile(source string) (string, error)

Compile converts the given Pipeline Query Language statement into the equivalent SQL. This is equivalent to new(CompileOptions).Compile(source).

Types

type CompileOptions added in v0.2.0

type CompileOptions struct {
	// Parameters is a map of identifiers to SQL snippets to substitute in.
	// For example, a "foo": "$1" entry would replace unquoted "foo" identifiers
	// with "$1" in the resulting SQL.
	Parameters map[string]string
}

CompileOptions a set of optional parameters that configure compilation. nil is treated the same as the zero value.

func (*CompileOptions) Compile added in v0.2.0

func (opts *CompileOptions) Compile(source string) (string, error)

Compile converts the given Pipeline Query Language statement into the equivalent SQL.

Directories

Path Synopsis
cmd
pql command
Package parser provides a parser and an Abstract Syntax Tree (AST) for the Pipeline Query Language.
Package parser provides a parser and an Abstract Syntax Tree (AST) for the Pipeline Query Language.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL