{"id":18521598,"url":"https://github.com/transferwise/pipelinewise-tap-snowflake","last_synced_at":"2025-04-09T09:33:15.938Z","repository":{"id":38339728,"uuid":"189860917","full_name":"transferwise/pipelinewise-tap-snowflake","owner":"transferwise","description":"Singer.io Tap for Snowflake - PipelineWise compatible","archived":true,"fork":false,"pushed_at":"2024-09-20T00:45:56.000Z","size":85,"stargazers_count":7,"open_issues_count":9,"forks_count":32,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-03T23:04:52.062Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://transferwise.github.io/pipelinewise/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/transferwise.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-02T15:07:08.000Z","updated_at":"2024-10-03T05:14:04.000Z","dependencies_parsed_at":"2024-11-06T17:33:44.015Z","dependency_job_id":"47a5c647-6b87-41f3-a38e-581904210f3f","html_url":"https://github.com/transferwise/pipelinewise-tap-snowflake","commit_stats":{"total_commits":52,"total_committers":8,"mean_commits":6.5,"dds":"0.42307692307692313","last_synced_commit":"15699411cc0ff87f11a3f7e637f01a2eb8cbf9da"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fpipelinewise-tap-snowflake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fpipelinewise-tap-snowflake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fpipelinewise-tap-snowflake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fpipelinewise-tap-snowflake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/transferwise","download_url":"https://codeload.github.com/transferwise/pipelinewise-tap-snowflake/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248012844,"owners_count":21033251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-06T17:26:42.211Z","updated_at":"2025-04-09T09:33:15.567Z","avatar_url":"https://github.com/transferwise.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Notice\nTo better serve Wise business and customer needs, the PipelineWise codebase needs to shrink.\nWe have made the difficult decision that, going forward many components of PipelineWise will be removed or incorporated in the main repo.\nThe last version before this decision is [v0.64.1](https://github.com/transferwise/pipelinewise/tree/v0.64.1)\n\nWe thank all in the open-source community, that over the past 6 years, have helped to make PipelineWise a robust product for heterogeneous replication of many many Terabytes, daily\n\n# pipelinewise-tap-snowflake\n\n[![PyPI version](https://badge.fury.io/py/pipelinewise-tap-snowflake.svg)](https://badge.fury.io/py/pipelinewise-tap-snowflake)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pipelinewise-tap-snowflake.svg)](https://pypi.org/project/pipelinewise-tap-snowflake/)\n[![License: Apache2](https://img.shields.io/badge/License-Apache2-yellow.svg)](https://opensource.org/licenses/Apache-2.0)\n\n[Singer](https://www.singer.io/) tap that extracts data from a [Snowflake](https://www.snowflake.com/) database and produces JSON-formatted data following the [Singer spec](https://github.com/singer-io/getting-started/blob/master/docs/SPEC.md).\n\nThis is a [PipelineWise](https://transferwise.github.io/pipelinewise) compatible tap connector.\n\n## How to use it\n\nThe recommended method of running this tap is to use it from [PipelineWise](https://transferwise.github.io/pipelinewise). When running it from PipelineWise you don't need to configure this tap with JSON files and most of things are automated. Please check the related documentation at [Tap Snowflake](https://transferwise.github.io/pipelinewise/connectors/taps/snowflake.html)\n\nIf you want to run this [Singer Tap](https://singer.io) independently please read further.\n\n### Install and Run\n\nFirst, make sure Python 3 is installed on your system or follow these\ninstallation instructions for [Mac](http://docs.python-guide.org/en/latest/starting/install3/osx/) or\n[Ubuntu](https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-ubuntu-16-04).\n\nIt's recommended to use a virtualenv:\n\n```bash\nmake venv\n```\n\n### Configuration\n\n1. Create a `config.json` file with connection details to snowflake, here is a [sample config file](./config_sample.json).\n\n**Note**: `tables` is a mandatory parameter as well to avoid a long-running catalog discovery process.\nPlease specify fully qualified table and view names and only that ones that you need to extract otherwise you can\nend up with very long running discovery mode of this tap. Discovery mode is analysing table structures but\nSnowflake doesn't like selecting lot of rows from `INFORMATION_SCHEMA` or running `SHOW` commands that returns lot of\nrows. Please be as specific as possible.\n\n2. Run it in discovery mode to generate a `properties.json`\n\n3. Edit the `properties.json` and select the streams to replicate\n\n4. Run the tap like any other singer compatible tap:\n\n```\n  tap-snowflake --config config.json --properties properties.json --state state.json\n```\n\n### Authentication Methods\n\nYou can either use basic user/password authentication or Key Pair authentication.\n\n#### User / Password authentication\n\nPopulate `user` and `password` in the `config.json` file\n\n#### Key Pair authentication\n\nTo use key pair authentication, omit the `password` and instead provide the `private_key_path` to the unencrypted version of the private key and, optionally, the `private_key_passphrase`.\n\n\n### Discovery mode\n\nThe tap can be invoked in discovery mode to find the available tables and\ncolumns in the database:\n\n```bash\n$ tap-snowflake --config config.json --discover\n\n```\n\nA discovered catalog is output, with a JSON-schema description of each table. A\nsource table directly corresponds to a Singer stream.\n\n## Replication methods\n\nThe two ways to replicate a given table are `FULL_TABLE` and `INCREMENTAL`.\n\n### Full Table\n\nFull-table replication extracts all data from the source table each time the tap\nis invoked.\n\n### Incremental\n\nIncremental replication works in conjunction with a state file to only extract\nnew records each time the tap is invoked. This requires a replication key to be\nspecified in the table's metadata as well.\n\n### To run tests:\n\n1. Define environment variables that requires running the tests\n```\n  export TAP_SNOWFLAKE_ACCOUNT=\u003csnowflake-account-name\u003e\n  export TAP_SNOWFLAKE_DBNAME=\u003csnowflake-database-name\u003e\n  export TAP_SNOWFLAKE_USER=\u003csnowflake-user\u003e\n  export TAP_SNOWFLAKE_PASSWORD=\u003csnowflake-password\u003e\n  export TAP_SNOWFLAKE_PRIVATE_KEY_PATH=\u003csnowflake-pk-path\u003e\n  export TAP_SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=\u003csnowflake-passphrase\u003e\n  export TAP_SNOWFLAKE_WAREHOUSE=\u003csnowflake-warehouse\u003e\n```\n\n2. Install python dependencies\n```bash\nmake venv\n```\n\n3. To run unit tests:\n\n**PS**: There are no unit tests at the time of writing this document\n\n```bash\nmake unit_test\n```\n\n4. To run Integration tests\n```bash\nmake integration_test\n```\n\n\n### To run formatting and linting:\n\n```bash\nmake venv format pylint\n```\n\n## License\n\nApache License Version 2.0\n\nSee [LICENSE](LICENSE) to see the full text.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Fpipelinewise-tap-snowflake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftransferwise%2Fpipelinewise-tap-snowflake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Fpipelinewise-tap-snowflake/lists"}