{"id":39139212,"url":"https://github.com/caerbannogwhite/preludio","last_synced_at":"2026-01-17T21:29:13.743Z","repository":{"id":153152773,"uuid":"526948346","full_name":"caerbannogwhite/preludio","owner":"caerbannogwhite","description":"Preludio is a data wrangling language based on PRQL and written in Go. 🎭 ","archived":false,"fork":false,"pushed_at":"2025-07-06T10:57:00.000Z","size":35657,"stargazers_count":11,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-06T11:37:22.098Z","etag":null,"topics":["csv","data","data-analysis","data-cleaning","data-engineering","dplyr","dsl","go","golang","language","manipulation","pipeline","programming-language","prql","sql","stack-oriented","wrangling"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caerbannogwhite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-20T14:22:44.000Z","updated_at":"2024-09-20T01:53:57.000Z","dependencies_parsed_at":"2025-07-06T11:30:24.667Z","dependency_job_id":"8f445336-136a-4d86-8cda-1a17aa5bb23a","html_url":"https://github.com/caerbannogwhite/preludio","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/caerbannogwhite/preludio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Fpreludio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Fpreludio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Fpreludio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Fpreludio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caerbannogwhite","download_url":"https://codeload.github.com/caerbannogwhite/preludio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Fpreludio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","data","data-analysis","data-cleaning","data-engineering","dplyr","dsl","go","golang","language","manipulation","pipeline","programming-language","prql","sql","stack-oriented","wrangling"],"created_at":"2026-01-17T21:29:13.152Z","updated_at":"2026-01-17T21:29:13.729Z","avatar_url":"https://github.com/caerbannogwhite.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- ![](media/logo_med.png) --\u003e\n\n# 🎭 Preludio\n\n### A PRQL based data transformation language\n\nPreludio is a data transformation language based on PRQL. It is a language that allows you to transform and\nmanipulate data in a simple and intuitive way, batteries included.\n\nNo libraries or external dependencies are required to run the language.\n\n### Examples\n\nRead and clean up a CSV file, then store the result in a variable called `clean`:\n\n```\nlet clean = (\n  rcsv \"test_files\\\\Cars.csv\" del:\";\" head:true\n  strReplace [MPG, Displacement, Horsepower, Acceleration] old:\",\" new:\".\"\n  asFlt [MPG, Displacement, Horsepower, Acceleration]\n  sort [-Origin, Cylinders, -MPG]\n)\n```\n\n```\nlet europe5Cylinders = (\n  from clean\n  filter Cylinders == 5 and Origin == \"Europe\"\n)\n```\n\nDerive new columns and write the result to a CSV file:\n\n```\n(\n  from clean\n  derive [\n    Stat = ((MPG * Cylinders * Displacement) / Horsepower * Acceleration) / Weight,\n    CarOrigin = Car + \" - \" + Origin\n  ]\n  filter Stat \u003e 1.3\n  select [Car, Origin, Stat]\n  wcsv \"test_files\\\\Cars1.csv\" del: \"\\t\"\n)\n\n```\n\nCreate a new table by joining two tables:\n\n```\nlet continents = (\n  new [\n    Continent = [\"Asia\", \"America\", \"Europe\"],\n    Origin = [\"Japan\", \"US\", \"Europe\"]\n  ]\n)\n\nlet joined = (\n  from clean\n  join left continents on: [Origin]\n  select [Car, Origin, Continent]\n  sort [Continent, Origin]\n)\n```\n\n![](media/repl_example.gif)\n\n### Features\n\n- [x] Arithmetic and logical operators\n- [x] Read and write CSV files\n- [x] Derive new columns\n- [x] Select columns\n- [x] Filter rows\n- [x] Sort rows\n- [x] Join tables\n- [ ] Group by and aggregate\n\n### Installation\n\nTo run it, you need to have [Go](https://golang.org/doc/install) installed.\nOnce you have Go, you can clone this repository.\n\nTo run the program, you can use the following command:\n\n```bash\ngo mod tidy\ngo run .\n```\n\n### Future Features\n\n- [x] Move to [Gandalff](https://github.com/caerbannogwhite/preludio/tree/main/core/gandalff) library\n- [ ] Add statistical functions\n- [ ] Add support for Excel files\n- [ ] Add support for XPT files\n- [ ] Add support for SAS7BDAT files\n- [ ] Add support for SPSS files\n- [ ] Add date/time data types\n- [ ] Database connections (SQL, MongoDB, etc.)\n- [ ] VS Code extension\n\nIn case the language becomes quite successful, I will consider adding:\n\n- [ ] Text editor/Ide (in browser and app)\n- [ ] Plots (https://github.com/gonum/plot)\n- [ ] Interactive plots and tables\n- [ ] Integration with other languages (Python, R, etc.)\n- [ ] Integration with other tools (Jupyter, etc.)\n- [ ] Integration with OpenAI (https://openai.com/blog/openai-api/), ie. image to table\n\n### Contributing\n\nIf you want to contribute to this project, you can do so by forking the repository and submitting a pull request.\n\n### Developers\n\nIf the grammar is changed, the parser must be regenerated. To do this, run the following command:\n\n(on Windows)\n\n```\nmake.ps1\n```\n\n### Log\n\n- **20 / 08 / 2023** After exactly one year from the first commit, Preludio is fairly stable and usable. The language is still missing a few core features (like `join` and aggregators, already supported by Gandalff), but it is already possible to perform many operations with it.\n- **02 / 08 / 2023** Preludio is now using the Gandalff library for managing data.\n- **21 / 03 / 2023** First publishing of the repository. Many things are still not working.\n- **18 / 03 / 2023** Gandalff library: fist commit.\n- **20 / 08 / 2022** Preludio: fist commit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaerbannogwhite%2Fpreludio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaerbannogwhite%2Fpreludio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaerbannogwhite%2Fpreludio/lists"}