{"id":13856767,"url":"https://github.com/rsyi/whale","last_synced_at":"2026-02-18T01:19:25.665Z","repository":{"id":37019281,"uuid":"267355676","full_name":"rsyi/whale","owner":"rsyi","description":"🐳 The stupidly simple CLI workspace for your data warehouse.","archived":false,"fork":false,"pushed_at":"2023-02-08T00:39:40.000Z","size":12190,"stargazers_count":728,"open_issues_count":32,"forks_count":38,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-10-31T02:13:30.939Z","etag":null,"topics":["data-catalog","data-discovery","data-documentation"],"latest_commit_sha":null,"homepage":"https://rsyi.gitbook.io/whale","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rsyi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-05-27T15:24:21.000Z","updated_at":"2025-10-06T09:31:46.000Z","dependencies_parsed_at":"2023-07-26T14:01:59.719Z","dependency_job_id":null,"html_url":"https://github.com/rsyi/whale","commit_stats":null,"previous_names":["hyperqueryhq/whale","dataframehq/whale","rsyi/metaframe"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/rsyi/whale","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsyi%2Fwhale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsyi%2Fwhale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsyi%2Fwhale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsyi%2Fwhale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rsyi","download_url":"https://codeload.github.com/rsyi/whale/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsyi%2Fwhale/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29565027,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"ssl_error","status_checked_at":"2026-02-18T00:45:26.718Z","response_time":100,"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":["data-catalog","data-discovery","data-documentation"],"created_at":"2024-08-05T03:01:12.492Z","updated_at":"2026-02-18T01:19:25.650Z","avatar_url":"https://github.com/rsyi.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cfont color=\"purple\"\u003e\u003ci\u003eWhale is actively being built and maintained by \u003ca href=\"https://hyperquery.ai/?utm_source=whale\"\u003ehyperquery\u003c/a\u003e. For our full data workspace for teams, check out \u003ca href=\"https://hyperquery.ai/?utm_source=whale\"\u003ehyperquery\u003c/a\u003e.\u003c/i\u003e\u003c/font\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/whale_logo.svg\" width=\"600\"/\u003e\u003c/p\u003e\n\n## The simplest way to find tables, write queries, and take notes\n`whale` is a lightweight, CLI-first **SQL workspace for your data warehouse**.\n\n* Execute SQL in `.sql` files using `wh run`, or in sql blocks within `.md` files using the `--!wh-run` flag and `wh run`.\n* Automatically index all of the tables in your warehouse as plain markdown files -- so they're easily versionable, searchable, and editable either locally or through a remote git server.\n* Search for tables and documentation.\n* Define and schedule basic metric calculations (in beta).\n\n😁 [**Join the discussion on slack.**](http://slack.dataframe.ai/)\n\n---\n\n![](https://github.com/dataframehq/whale/workflows/CI/badge.svg)\n![codecov](https://codecov.io/gh/dataframehq/whale/branch/master/graph/badge.svg)\n[![slack](https://badgen.net/badge/icon/slack?icon=slack\u0026color=purple\u0026label)](http://slack.dataframe.ai/)\n\nFor a demo of a git-backed workflow, check out [**dataframehq/whale-bigquery-public-data**](https://github.com/dataframehq/whale-bigquery-public-data).\n\n![](docs/demo.gif)\n\n# 📔  Documentation\n\n[**Read the docs for a full overview of whale's capabilities.**](https://rsyi.gitbook.io/whale)\n\n## Installation\n\n### Mac OS\n\n```text\nbrew install dataframehq/tap/whale\n```\n\n### All others\n\nMake sure [rust](https://www.rust-lang.org/tools/install) is installed on your local system. Then, clone this directory and run the following in the base directory of the repo:\n\n```text\nmake \u0026\u0026 make install\n```\nIf you are running this multiple times, make sure `~/.whale/libexec` does not exist, or your virtual environment may not rebuild. We don't explicitly add an alias for the `whale` binary, so you'll want to add the following alias to your `.bash_profile` or `.zshrc` file.\n\n```text\nalias wh=~/.whale/bin/whale\n```\n\n## Getting started\n\n### Setup\n\nFor individual use, run the following command to go through the onboarding process. It will (a) set up all necessary files in `~/.whale`, (b) walk you through cron job scheduling to periodically scrape metadata, and (c) set up a warehouse:\n\n```text\nwh init\n```\n\nThe cron job will run as you schedule it (by default, every 6 hours). If you're feeling impatient, you can also manually run `wh etl` to pull down the latest data from your warehouse.\n\nFor team use, see the [docs](https://rsyi.gitbook.io/whale/setup/getting-started-for-teams) for instructions on how to set up and point your whale installation at a remote git server.\n\n### Seeding some sample data\nIf you just want to get a feel for how whale works, remove the `~/.whale` directory and follow the instructions at [dataframehq/whale-bigquery-public-data](https://github.com/dataframehq/whale-bigquery-public-data).\n\n### Go go go!\n\nRun:\n\n```text\nwh\n```\n\nto search over all metadata. Hitting `enter` will open the editable part of the docs in your default text editor, defined by the environmental variable `$EDITOR` (if no value is specified, whale will use the command `open`).\n\nTo execute `.sql` files, run:\n\n```\nwh run your_query.sql\n```\n\nTo execute markdown files, you'll need to write the query in a  ```sql block, then place a `--!wh-run` on its own line. Upon execution of the markdown file, any sql blocks with this comment will execute the query and replace the `--!wh-run` line with the result set. To run the markdown file, run:\n\n```\nwh run your_markdown_file.md\n```\n\nA common pattern is to set up a shortcut in your IDE to execute `wh run %` for a smooth editing + execution workflow. For an example of how to do this in vim, see the docs [here](https://rsyi.gitbook.io/whale/features/running-sql-queries#editor-configuration). This is one of the most powerful features of whale, enabling you to take notes and write executable queries seamlessly side-by-side.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsyi%2Fwhale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frsyi%2Fwhale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsyi%2Fwhale/lists"}