Giter Site home page Giter Site logo

joluj / jayvee Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jvalue/jayvee

0.0 0.0 0.0 10.25 MB

Jayvee is a domain-specific language and runtime for automated processing of data pipelines

Home Page: https://jvalue.github.io/jayvee/

JavaScript 3.17% TypeScript 95.41% CSS 0.51% MDX 0.91%

jayvee's Introduction

Jayvee Mascot

Jayvee

Jayvee is a domain-specific language (DSL) for automated processing of data pipelines. The Jayvee interpreter allows executing such data pipelines on local machines. Data engineers can use Jayvee and its interpreter to clean and preprocess data for later activities like data science or machine learning.

Official Docs

Roadmap

Explore a glimpse of our upcoming features in the following list. This overview is broad and subject to evolution. We're excited to share our vision of the exciting journey ahead, and we invite you to accompany us on this adventure!

  • ✅ Blocks and pipes
  • ✅ Simple valuetypes and constraints
  • ✅ Natively support table-based data
  • ✅ Column-based transformations
  • ✅ Describe blocks via builtin blocktypes in Jayvee
  • ✅ Compose logic of multiple blocks via composite blocktypes
  • ⌛ Multi-file Jayvee to distribute programs over multiple files (see RFC 0015)
  • ⌛ Improve the syntax of valuetypes (see RFC 0014)
  • ⌛ Jayvee formatter
  • ⌛ Further extractors and sinks
  • 🤔 Reusable libraries (with a package manager)
  • 🤔 Composite valuetypes (with multiple fields)
  • 🤔 Natively support tree data (XML, JSON)
  • 🤔 Valuetypes parsers (to read and write different formats)
  • 🤔 Customizable invalid value handling (default value, average, median, interpolation, ...)
  • 🤔 VSCode Debugger
  • 🤔 Blocktypes with multiple ports (e.g., for merging different data)

Anything missing, or you have ideas how some of the items on the list could be approached? Feel free to create and issue and share your thoughts with us!

You like the project and our vision? Then we'd appreciate your star! ⭐

Contribute

In case you would like to contribute to Jayvee, please have a look at our contribution guide.

Development Quickstart

  1. Run npm ci to install the dependencies.
  2. Run npm run generate to generate TypeScript code from the Jayvee grammar definition and the standard library.
  3. Run npm run build to compile all projects.
  4. In Visual Studio Code, press F5 to open a new window with the Jayvee extension loaded.
  5. Create a new file with a .jv file name suffix or open an existing file in the directory example.
  6. Verify that syntax highlighting, validation, completion etc. are working as expected.
  7. Run node dist/apps/interpreter/main.js to see options for the CLI of the interpreter; node dist/apps/interpreter/main.js <file> interprets a given .jv file.

In case you run into problems, make sure to use the current LTS version of Node.js and npm.

Projects overview

Name Description NPM package
language-server Jayvee language definition and language server implementation @jvalue/jayvee-language-server
interpreter Command line tool for interpreting Jayvee files @jvalue/jayvee-interpreter
language-server-web-worker Ready-to-use Jayvee language server, bundled as a Web Worker @jvalue/jayvee-language-server-web-worker
vs-code-extension Visual Studio Code extension for editing Jayvee files -
docs Website for Jayvee user documentation -
monaco-editor React component for editing Jayvee files @jvalue/jayvee-monaco
execution Shared code for Jayvee extensions and the interpreter -
extensions/std Standard Jayvee extension consisting of the extensions below -
extensions/rdbms Jayvee extension for relational databases -
extensions/tabular Jayvee extension for tabular data -

Scripts

Building all projects

npm run build

Linting all projects

npm run lint

Formatting project files via Nx

npm run format

Testing all projects

npm run test

Generating TypeScript code from the grammar definition

npm run generate

Examples

Load data about cars into a local SQLite DB

npm run example:cars

Load GTFS data into a local SQLite DB

npm run example:gtfs

Load data about electric vehicles into local Postgres and SQLite DBs

  1. Start the Postgres database locally
docker compose -f ./example/docker-compose.example.yml up
  1. Run the Jayvee model
npm run example:vehicles

jayvee's People

Contributors

felix-oq avatar georg-schwarz avatar f3l1x98 avatar schlingling avatar rhazn avatar a-m-a-x avatar mbuchalik avatar joluj avatar dirkriehle avatar dependabot[bot] avatar tordans avatar omarfourati avatar fabalex7 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.