Skip to content

Latest commit

 

History

History
81 lines (62 loc) · 2.84 KB

README.md

File metadata and controls

81 lines (62 loc) · 2.84 KB

Viadot

build status formatting codecov

Documentation: https://dyvenia.github.io/viadot/

Source Code: https://github.com/dyvenia/viadot


A simple data ingestion library to guide data flows from some places to other places.

Getting Data from a Source

Viadot supports several API and RDBMS sources, private and public. Currently, we support the UK Carbon Intensity public API and base the examples on it.

from viadot.sources.uk_carbon_intensity import UKCarbonIntensity
ukci = UKCarbonIntensity()
ukci.query("/intensity")
ukci.to_df()

The above code pulls data from the API to a pandas DataFrame.

Loading Data to a Source

Depending on the source, viadot provides different methds of uploading data. For instance, for SQL sources, this would be bulk inserts. For data lake sources, it would be a file upload. We also provide ready-made pipelines including data valiadation steps using Great Expectations.

An example of loading data into SQLite from a pandas DataFrame using the SQLiteInsert task:

from viadot.tasks import SQLiteInsert

insert_task = SQLiteInsert()
insert_task.run(table_name=TABLE_NAME, dtypes=dtypes, db_path=database_path, df=df, if_exists="replace")

Running tests

To run tests, log into the container and run pytest:

cd viadot/docker
run.sh
docker exec -it viadot_testing bash
pytest

Running flows locally

You can run the example flows from the terminal:

run.sh
docker exec -it viadot_testing bash
FLOW_NAME=hello_world; python -m viadot.examples.$FLOW_NAME

However, when developing, the easiest way is to use the provided Jupyter Lab container available at http://localhost:9000/.

How to contribute

  1. Clone the repo
  2. Pull the docker env by running viadot/docker/update.sh
  3. Run the env with viadot/docker/run.sh
  4. Log into the dev container and install viadot in development mode:
docker exec -it viadot_testing bash
pip install -e .
  1. Edit and test your changes with pytest
  2. Submit a PR. The PR should contain the following:
  • new/changed functionality
  • tests for the changes
  • changes added to CHANGELOG.md
  • any other relevant resources updated (esp. viadot/docs)

Please follow the standards and best practices used within the library (eg. when adding tasks, see how other tasks are constructed, etc.). For any questions, please reach out to us here on GitHub.