Skip to main content

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)

Source distribution for virtual-parquet 0.2.2
File Size Uploaded
virtual_parquet-0.2.2.tar.gz 43.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for virtual-parquet 0.2.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page