zetasql
logica
Our great sponsors
zetasql | logica | |
---|---|---|
15 | 19 | |
2,130 | 1,680 | |
1.6% | - | |
0.0 | 9.1 | |
about 2 months ago | 9 days ago | |
C++ | Jupyter Notebook | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
zetasql
-
Mangle, a programming language for deductive database programming
There are even table-valued functions.
These things are not widespread, and differ by implementation, and the way these are used by clients are copy-and-paste. Something as thoughtful as ZetaSQL https://github.com/google/zetasql does not have mechanisms for structuring (modules, packages, interfaces). SQL will not, cannot evolve into such a direction (or, anything that evolves, will not be recognizable as SQL).
-
goccy/bigquery-emulator: BigQuery emulator server implemented in Go
Hi, I develop a BigQuery emulator ( https://github.com/goccy/bigquery-emulator ) from early 2022. It is written in Go, but can be used from bq command line tool and other language's (e.g. Python ) client SDK after installing docker image or released binary. It currently supports over 200 of the nearly 330 standard functions in BigQuery and all data types except GEOGRAPHY ( see https://github.com/goccy/go-zetasqlite#status for details ). ZetaSQL ( https://github.com/google/zetasql ) is used to parse and analyze queries.
- ZetaSQL – Analyzer Framework for SQL
-
ZetaSQL - Question about using local service
We are using a Python client binding for ZetaSQL GRPC local service in our application to analyze statements and extract referenced tables and output columns.
-
Parsing SQL
If you don't want to do it yourself, there's this:
https://github.com/google/zetasql
Parsing is huge but it's amazing how small a part of the job it is. This library isn't even the half of it.
- SQLGlot: SQL parser, transpiler, optimizer – translate to Presto, Spark, Hive
- ZetaSQL - Analyzer Framework for SQL
- ZetaSQL
-
New PostgreSQL Interface for Cloud Spanner
I mean the postgres parser (and semantic changes) for ZetaSQL. The zetasql parser is in a file called zetasql/parser/bison_parser.y, I strongly suspect they now have a file called something like zetasql/pgparser/bison_parser.y as well (and much more pervasive changes to support the deeper differences in the dialects).
This is the lexical structure and syntax docs for the new postgres inteface to cloud spanner:
https://cloud.google.com/spanner/docs/postgresql/lexical
And this is the zetasql lexical structure and syntax docs:
https://github.com/google/zetasql/blob/master/docs/lexical.m...
Notice that the new PG docs are an edit of the Zeta ones - evidence that my hypothesis is correct.
-
Open Source SQL Parsers
zetasql implements BigQuery, Spanner, and Dataflow dialects.
logica
-
Prolog language for PostgreSQL proof of concept
If you're interested in this I would also recommend you check out Logica[0], which is a datalog-like language that is explicitly made to compile to SQL queries.
0: https://logica.dev/
- Logica
- New welcome page for Logica language
-
Introduction to Datalog
> I guess the intention is to be better than SQL but then I was left with "under which circumstances?"
Excellent question.
Two of the most common use cases for databases are "transactional processing" (manipulating small numbers of rows in real time) and "analytical processing" (querying enormous numbers of rows, typically in a read-only fashion).
SQL is generally fine for transactional workloads.
But analytical queries sometimes involve multi-page queries, with lots of JOINs and CTEs. And these queries are often automatically generated.
And once you start writing actual multi-page "programs" in SQL, you may decide that it's a fairly clunky and miserable programming language. What Datalog typically buys you is a way to cleanly decompose large queries into "subroutines." And it offers a simpler syntax for many kinds of complex JOINs.
Unfortunately, there isn't really a standard dialect of Datalog, or even a particular dialect with mainstream traction. So choosing Datalog is a bit of a tradeoff: does it buy you enough, for your use case, that it's worth being a bit outside the mainstream? Maybe! But I'd love to see something like Logica gain more traction: https://logica.dev/
-
Mangle, a programming language for deductive database programming
Interesting; a Google engineer previously published a Datalog variant for BigQuery: https://logica.dev/
This new language seems similar to differential-Datalog (which is sadly in maintenance mode): https://news.ycombinator.com/item?id=33521561
- Show HN: PRQL 0.2 – Releasing a better SQL
-
Show HN: PRQL – A Proposal for a Better SQL
Looks pretty cool. I'd be interested if the README had a comparison with Google's Logica (https://github.com/EvgSkv/logica)
-
PathQuery, Google's Graph Query Language
Oh wow that is neat!
And yes, this kind of thing is why datalog is a lot more amenable to fast query plans & runtimes than prolog. This part is especially cool: https://github.com/EvgSkv/logica/blob/main/compiler/dialects...
-
Thought about Logica: Google new programming language that compiles to SQL ?
Google new programming Language that compiles to SQL (Support BigQuery and Postgres) feels very exciting. Blog: https://opensource.googleblog.com/2021/04/logica-organizing-your-data-queries.html Github: https://github.com/EvgSkv/logica
-
Google Logica Aims To Make SQL Queries More Reusable and Readable
Going to be? It already is. In fact, one thing the article misses is right there at the bottom of the project page:
What are some alternatives?
sqlparse - A non-validating SQL parser module for Python
scryer-prolog - A modern Prolog implementation written mostly in Rust.
Apache Calcite - Apache Calcite
ungoogled-chromium-archlinux - Arch Linux packaging for ungoogled-chromium
JSqlParser - JSqlParser parses an SQL statement and translate it into a hierarchy of Java classes. The generated hierarchy can be navigated using the Visitor Pattern
malloy - Malloy is an experimental language for describing data relationships and transformations.
ANTLR - ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.
prql - PRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement
pgsql-parser - PostgreSQL Query Parser for Node.js
dbt-core - dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.
sqlite-parser - JavaScript implentation of SQLite 3 query parser
differential-datalog - DDlog is a programming language for incremental computation. It is well suited for writing programs that continuously update their output in response to input changes. A DDlog programmer does not write incremental algorithms; instead they specify the desired input-output mapping in a declarative manner.