virtual
🗜️Compressing Parquet files using functions.
virtual is a lightweight framework that transparently compresses Parquet files by using functions between columns, all while giving you the same familiar interface you are used to. How virtual works is magic, and is described in our recent research papers (see below).
🛠 Build
pip install virtual-parquet
or
git clone https://github.com/utndatasystems/virtual.git && cd virtual
pip install .
🔗 Examples
A demo can be found at examples/demo-parquet.ipynb.
🗜️ Compress
Simply compress a Pandas DataFrame with virtual.to_format(df):
import pandas as pd
import virtual
df = pd.read_csv('file.csv')
...
virtual.to_format(df, 'file_virtual.parquet')
% Virtualization finished: Check out 'file_virtual.parquet'.
🥢 Read
Reading in a virtual compress parquet file with virtual.from_format([path]):
import virtual
df = virtual.from_format('file_virtual.parquet')
📊 Query
Or directly run SQL queries on the virtualized Parquet file via duckdb with virtual.query([SQL]):
import virtual
virtual.query(
'select avg(price) from read_parquet("file_virtual.parquet") where year >= 2024',
engine = 'duckdb'
)
Expert-User Features
🔍 Inspect the Functions Found
import pandas as pd
import virtual
df = pd.read_csv('file.csv')
functions = virtual.train(df)
% Functions saved under
functions.json.
📚 Citation
Please do cite our (very) cool work if you use virtual in your work.
@inproceedings{virtual_trl,
title = {{Lightweight Correlation-Aware Table Compression}},
author = {Mihail Stoian and Alexander van Renen and Jan Kobiolka and Ping-Lin Kuo and Josif Grabocka and Andreas Kipf},
booktitle = {NeurIPS 2024 Third Table Representation Learning Workshop},
year = {2024},
url = {https://openreview.net/forum?id=z7eIn3aShi}
}
@inproceedings{virtual_edbt,
author = {Mihail Stoian and Alexander van Renen and Jan Kobiolka and Ping{-}Lin Kuo and Andreas Zimmerer and Josif Grabocka and Andreas Kipf},
editor = {Alkis Simitsis and Bettina Kemme and Anna Queralt and Oscar Romero and Petar Jovanovic},
title = {Virtual: Compressing Data Lake Files},
booktitle = {Proceedings 28th International Conference on Extending Database Technology, {EDBT} 2025, Barcelona, Spain, March 25-28, 2025},
pages = {1066--1069},
publisher = {OpenProceedings.org},
year = {2025},
url = {https://doi.org/10.48786/edbt.2025.90},
doi = {10.48786/EDBT.2025.90},
timestamp = {Mon, 10 Mar 2025 16:32:47 +0100},
biburl = {https://dblp.org/rec/conf/edbt/StoianRKKZGK25.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
Metadata
Release files for virtual-parquet 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| virtual_parquet-0.2.2.tar.gz | 43.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| virtual_parquet-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 89.5 kB
Release files / virtual_parquet-0.2.2.tar.gz
| Download URL | virtual_parquet-0.2.2.tar.gz |
|---|---|
| Size | 43.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9e9fb9800e962126de642cff90874118fe9c4e7f82b8f67ce9178d7ac74df683
|
|
BLAKE2b-256 checksum How to use checksums |
dbe37f8e1af5c0b8b5400ea0881137bce2d5ea83d883c18dc00e01c80e601f6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.0
|
Release files / virtual_parquet-0.2.2-py3-none-any.whl
| Download URL | virtual_parquet-0.2.2-py3-none-any.whl |
|---|---|
| Size | 46.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19c1879f7385f520d70daf037922aa501bc79cf8278cc437e0e268a7357ce964
|
|
BLAKE2b-256 checksum How to use checksums |
3c16258809ee6c8ed490c33a1212d084ac2153d55b1078208ee80417d62aceeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.0
|