This release is a pre-release and may not be stable for production use.
TPC-H Data Generator CLI
tpchgen-cli is a high-performance, parallel command line interface for
generating TPC-H data.
Note: See
tpcgen-clito create both TPC-H and TPC-DS data and the tpcgen-rs project for the full project details.
This tool is more than 10x faster than the next fastest TPCH generator we know
of (duckdb). On a 2023 Mac M3 Max laptop, it easily generates data faster than
can be written to SSD. See BENCHMARKS.md for more details on performance and
benchmarking.
Try with uvx
uvx tpchgen-cli parquet -s 1 --output-dir /tmp/tpch
Install with pip
python -m pip install tpchgen-cli
Install via Rust
Install Rust and compile
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
RUSTFLAGS='-C target-cpu=native' cargo install --locked tpchgen-cli
Then generate TPC-H data:
tpchgen-cli parquet -s 1 --output-dir /tmp/tpch
Examples
# Scale Factor 10, all tables, in Apache Parquet format in the current directory
# (3.6GB, 8 files, 60M lineitem rows, in 5 seconds on a modern laptop)
tpchgen-cli parquet -s 10
# Scale Factor 10, all tables, in `tbl`(csv like) format in the `sf10` directory
# (10GB, 8 files, 60M lineitem rows)
# Note: `tpchgen-cli tbl` also works explicitly
tpchgen-cli -s 10 --output-dir sf10
# Scale Factor 1000, lineitem table, in Apache Parquet format in sf1000 directory,
# 20 part(itions), 100MB row groups
# (220GB, 20 files, 6B lineitem rows, 3.5 minutes on a modern laptop)
tpchgen-cli parquet -s 1000 --tables lineitem --parts 20 --row-group-bytes=100MB --output-dir sf1000
# Per-column encodings (overrides Parquet writer defaults for named columns)
tpchgen-cli parquet -s 1 --tables lineitem --column-encoding=l_comment=DELTA_LENGTH_BYTE_ARRAY,l_shipinstruct=DELTA_LENGTH_BYTE_ARRAY
# Scale Factor 10, partition 2 and 3 of 10 in partitioned directory
#
# partitioned/
# ├── lineitem
# │ ├── lineitem.2.tbl
# │ └── lineitem.3.tbl
# └── orders
# ├── orders.2.tbl
# └── orders.3.tbl
#
for PART in `seq 2 3`; do
tpchgen-cli --tables lineitem,orders --scale-factor=10 --output-dir partitioned --parts 10 --part $PART
done
By default tpchgen-cli shows a per-table progress bar on stderr while data
is generated. Pass --no-progress to disable it (it is also disabled
automatically when --quiet is set, when --stdout is used, or when stderr
is not a terminal, e.g. in CI logs).
Performance
Times to create TPCH tables in Parquet format using tpchgen-cli and duckdb for various scale factors.
| Scale Factor | tpchgen-cli |
DuckDB | DuckDB (proprietary) |
|---|---|---|---|
| 1 | 0:02.24 |
0:12.29 |
0:10.68 |
| 10 | 0:09.97 |
1:46.80 |
1:41.14 |
| 100 | 1:14.22 |
17:48.27 |
16:40.88 |
| 1000 | 10:26.26 |
N/A (OOM) | N/A (OOM) |
- DuckDB (proprietary) is the time required to create TPCH data using the proprietary DuckDB format
- Creating Scale Factor 1000 using DuckDB required 647 GB of memory, which is why it is not included in the table above.
More information
- Watch this demo by
@alamb to see
tpchgen-cliin action - Read the companion blog post in the DataFusion blog to learn about the project's history
References
Metadata
Release files for tpchgen-cli 4.0.0rc1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tpchgen_cli-4.0.0rc1.tar.gz | 633.8 kB | Without provenance | Details for tpchgen_cli-4.0.0rc1.tar.gz |
Built distributions (wheels)
Total release size: 50.4 MB
Release files / tpchgen_cli-4.0.0rc1.tar.gz
| Download URL | tpchgen_cli-4.0.0rc1.tar.gz |
|---|---|
| Size | 633.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d4fb479c1a2fe731ce46730312c369324b62b16ae8936897f113283c352d61ca
|
|
BLAKE2b-256 checksum How to use checksums |
f4869c881d7d6f21333684c23a32f4533879c46ea4f28e2ea985e42729abf854
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-win_amd64.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-win_amd64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7c61981231dd38fbb8ccda973d8914fc257403f7345dcde4b4038a8bcabcfb63
|
|
BLAKE2b-256 checksum How to use checksums |
61188ca7725cecc641b1f8f97f7e065efa06fc20763138891b2d8011d4e08698
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-win32.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-win32.whl |
|---|---|
| Size | 3.6 MB |
| Tags | Python 3 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
8b993cac0e970608d15d99fd8660af94b8b0ac8353d64c78c3c8a859afc50e54
|
|
BLAKE2b-256 checksum How to use checksums |
58f4f0a1a7b95ff173d6aa9b35f7d85b6777f50de5f39bce6a00bdae4baaabdc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_x86_64.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Linux musl 1.2+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
ce72dd626febf057335a6198ca881b40e122276c659eb4f3100c7f521b22a850
|
|
BLAKE2b-256 checksum How to use checksums |
06ef909b3104ba8f7aafb6cc166a372b1984e43a63266696b84010c8b2148bdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_i686.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_i686.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Linux musl 1.2+ x86-32 Python 3 |
|
SHA-256 checksum How to use checksums |
a258f972aea0167593a8fdbd8364d4e7c2b2cc1dfba67ed54bfa52bc35f61a1e
|
|
BLAKE2b-256 checksum How to use checksums |
609f82d59822c17886e1dc9069290272c823ae02f8eaeea7c8acd8467e019380
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_armv7l.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Linux musl 1.2+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
dfcfd577a5519cebf025f9d424deb811a9ea7ef7b8668725400e665ec27baf0b
|
|
BLAKE2b-256 checksum How to use checksums |
c7792167faea23d46515487955e78436a6b095e7ee31bebe108e6e5e073e47c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_aarch64.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
6c4972d08fd7d0348ea2abe2b7a35ff4c37bd58115e3a8e71c844adb1acb954a
|
|
BLAKE2b-256 checksum How to use checksums |
319a9270063c6507a79ebb17bc247c73fc3fad9530fbe11af91c7a07c15e280e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
458494be6db51a1b81308a84ecdeb823b1d2b04d1b0de1e0143ae8a8e2fc0aeb
|
|
BLAKE2b-256 checksum How to use checksums |
eb8e60119c899714e619d1c1b2b4aad5b506c77cb72f9b32ecf6d7a0cdf42aaa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 4.1 MB |
| Tags | Linux glibc 2.17+ PowerPC 64-le Python 3 |
|
SHA-256 checksum How to use checksums |
18a9c9dcb2492a58d356490a659ee8a011c81f00aef83f005cf52fe3bfd1ce79
|
|
BLAKE2b-256 checksum How to use checksums |
24b4548eaa5f139a1917103333df7b1960b827e45bf4d8d3dd8b8333e0b217e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Linux glibc 2.17+ x86-32 Python 3 |
|
SHA-256 checksum How to use checksums |
29886e7c4fcceca3bd67b51bb79009ca4c4927a6d2dd429d70a000cfe154db38
|
|
BLAKE2b-256 checksum How to use checksums |
bbbcad8edc6785edd23bcf379224744053bbc4d0ad5491c7f2ff838f1c48cb2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Linux glibc 2.17+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
20e04a68ce03efd96f5f2d7833c3e13d488e3fa2886f9d160c2bc74dbd6b2570
|
|
BLAKE2b-256 checksum How to use checksums |
92ce66ed7830202876e7a6f83bfd34b66a151296fb049732dcca2804aa89621a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
4d5a42c0c3cd963b830633f0c9348d974480e13196f11bdbfefc708942202eae
|
|
BLAKE2b-256 checksum How to use checksums |
70b4729a2b58651b566c8cc67b1fdacc2d6b78355ca647605c973e691bd8c271
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-macosx_11_0_arm64.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.5 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
171cc104c604f3a13e2b537c964fffaa904ca8577a0036e0e11574abdc46931a
|
|
BLAKE2b-256 checksum How to use checksums |
0f1d87bab9cc51fa73f675920671c359eff81375ea2bce9145b1c7c1eb5501d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Release files / tpchgen_cli-4.0.0rc1-py3-none-macosx_10_12_x86_64.whl
| Download URL | tpchgen_cli-4.0.0rc1-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
f28f99f70c90622075d84f31c715075642356060d3ec7b5035705e4ffceab0ce
|
|
BLAKE2b-256 checksum How to use checksums |
ff57c316982174639fe1fabf7cd4a520d6e10b63a8e009d3bbca907635818d4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.15.0
|
Security for tpchgen-cli 4.0.0rc1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.