Get Ubik
Closed source, and free for personal, non-commercial and evaluation use under the PolyForm Noncommercial licence. Commercial use takes a paid licence, priced on pricing.
Linux x86_64 and macOS arm64, macOS 12 or later. Three ways in, and the shortest is Homebrew.
brew tap magiclex/ubikbrew trust magiclex/ubikbrew install magiclex/ubik/ubikubik versionubik 0.0.4ubik-engine 0.0.4The trust step is not optional and not ours: Homebrew refuses to load a formula from a tap you have not explicitly trusted. Update with brew upgrade ubik.
In a notebook, the engine runs inside your own process. The install name is ubik-sql and the import stays ubik: the short name on PyPI belongs to an unrelated package from 2020.
pip install ubik-sqlimport ubik ubik.stream( "SELECT k, TUMBLE(ts, INTERVAL 1 MINUTE) AS w, sum(v) AS s " "FROM events GROUP BY k, TUMBLE(ts, INTERVAL 1 MINUTE)", from_="kafka://localhost:9092/events",).arrow()Or the tarball, for a machine that has neither. The checksum line is part of the install, not a footnote: it is the same SHA256 the binary verifies for you on every later ubik upgrade.
curl -fsSLO https://getubik.dev/releases/v0.0.4/ubik-0.0.4-linux-amd64.tar.gzcurl -fsSL https://getubik.dev/releases/v0.0.4/SHA256SUMS \ | sha256sum -c --ignore-missingubik-0.0.4-linux-amd64.tar.gz: OKtar -xzf ubik-0.0.4-linux-amd64.tar.gz./bin/ubik versionubik 0.0.4ubik-engine 0.0.4curl -fsSLO https://getubik.dev/releases/v0.0.4/ubik-0.0.4-darwin-arm64.tar.gzcurl -fsSL https://getubik.dev/releases/v0.0.4/SHA256SUMS \ | shasum -a 256 -c --ignore-missingubik-0.0.4-darwin-arm64.tar.gz: OKtar -xzf ubik-0.0.4-darwin-arm64.tar.gz./bin/ubik versionubik 0.0.4ubik-engine 0.0.4Intel macs and Linux arm64 are not built yet. Leave an email and you get one message when they land, nothing else.
Once it is on your machine, a durable job is one command. Name the pipeline, let the CLI supervise it, and it resumes from its last checkpoint across a restart.
ubik pipeline create txns \ --from kafka://localhost:9092/txns \ --to kafka://localhost:9092/txn_counts \ "SELECT merchant, TUMBLE(event_time, INTERVAL 1 MINUTE) AS window, count(*) AS n FROM txns GROUP BY merchant, TUMBLE(event_time, INTERVAL 1 MINUTE)"ubik pipeline start txnsubik pipeline list NAME STATUS PID FROM TO