A simple data ingestion library to guide data flows from some places to other places
Project description
Viadot
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")
df = ukci.to_df()
df
Output:
from | to | forecast | actual | index | |
---|---|---|---|---|---|
0 | 2021-08-10T11:00Z | 2021-08-10T11:30Z | 211 | 216 | moderate |
The above df
is a python pandas DataFrame
object. The above df contains data downloaded from viadot from the Carbon Intensity UK API.
Loading Data to a Source
Depending on the source, viadot provides different methods 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 validation steps using Great Expectations.
An example of loading data into SQLite from a pandas DataFrame
using the SQLiteInsert
Prefect 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")
Set up
Note: If you're running on Unix, after cloning the repo, you may need to grant executable privileges to the update.sh
and run.sh
scripts:
sudo chmod +x viadot/docker/update.sh && \
sudo chmod +x viadot/docker/run.sh
a) user
Clone the main
branch, enter the docker
folder, and set up the environment:
git clone https://github.com/dyvenia/viadot.git && \
cd viadot/docker && \
./update.sh
Run the enviroment:
./run.sh
b) developer
Clone the dev
branch, enter the docker
folder, and set up the environment:
git clone -b dev https://github.com/dyvenia/viadot.git && \
cd viadot/docker && \
./update.sh -t dev
Run the enviroment:
./run.sh -t dev
Install the library in development mode (repeat for the viadot_jupyter_lab
container if needed):
docker exec -it viadot_testing pip install -e . --user
Running tests
To run tests, log into the container and run pytest:
docker exec -it viadot_testing bash
pytest
Running flows locally
You can run the example flows from the terminal:
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 in the browser at http://localhost:9000/
.
How to contribute
- Fork repository if you do not have write access
- Set up locally
- Test your changes with
pytest
- 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.
Style guidelines
- the code should be formatted with Black using default settings (easiest way is to use the VSCode extension)
- commit messages should:
- begin with an emoji
- start with one of the following verbs, capitalized, immediately after the summary emoji: "Added", "Updated", "Removed", "Fixed", "Renamed", and, sporadically, other ones, such as "Upgraded", "Downgraded", or whatever you find relevant for your particular situation
- contain a useful description of what the commit is doing
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file viadot-0.2.12.tar.gz
.
File metadata
- Download URL: viadot-0.2.12.tar.gz
- Upload date:
- Size: 54.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17e8e7f74ac063879465cf93a884f8836b41251a6d8cd09725c2b73c6a5fb468 |
|
MD5 | 201e291bb6a748e19d24822032fcc643 |
|
BLAKE2b-256 | dad39d63db4263582597ecdba829bf2cfa656c8f4029e062464df12dfd8b62c9 |
File details
Details for the file viadot-0.2.12-py3-none-any.whl
.
File metadata
- Download URL: viadot-0.2.12-py3-none-any.whl
- Upload date:
- Size: 83.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86bd57c769fbcb0fc4f3f356ed857948372d4c56620808e9fb9b73e3ed04b9ba |
|
MD5 | 7a89db2d27b27277fe08220f05e089e1 |
|
BLAKE2b-256 | fc17f33ac17dbdafdbfbfb74660d418bc27e9d4b2d541030e710aaedc83272db |