Skip to main content
Pre-release

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-cli to 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

Running tpchgen-cli

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.

Parquet Generation Performance

More information

  • Watch this demo by @alamb to see tpchgen-cli in action
  • Read the companion blog post in the DataFusion blog to learn about the project's history

References

  • The TPC-H Specification, see the specification page.
  • The Original dbgen Implementation you must submit an official request to access the software dbgen at their official website

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)

Source distribution for tpchgen-cli 4.0.0rc1
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)

Table of built distributions (wheels) for tpchgen-cli 4.0.0rc1
File Actions
tpchgen_cli-4.0.0rc1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for tpchgen_cli-4.0.0rc1-py3-none-win_amd64.whl
tpchgen_cli-4.0.0rc1-py3-none-win32.whl Python 3 none Windows x86-32 Details for tpchgen_cli-4.0.0rc1-py3-none-win32.whl
tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details for tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_x86_64.whl
tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_i686.whl Python 3 none Linux musl 1.2+ x86-32 Details for tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_i686.whl
tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_armv7l.whl Python 3 none Linux musl 1.2+ ARMv7l Details for tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_armv7l.whl
tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details for tpchgen_cli-4.0.0rc1-py3-none-musllinux_1_2_aarch64.whl
tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details for tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl Python 3 none Linux glibc 2.17+ PowerPC 64-le Details for tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl Python 3 none Linux glibc 2.17+ x86-32 Details for tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l Details for tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details for tpchgen_cli-4.0.0rc1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
tpchgen_cli-4.0.0rc1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for tpchgen_cli-4.0.0rc1-py3-none-macosx_11_0_arm64.whl
tpchgen_cli-4.0.0rc1-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for tpchgen_cli-4.0.0rc1-py3-none-macosx_10_12_x86_64.whl

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.

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