Skip to main content

acme-dw

Simple data warehouse using S3

Problem

Some LLM based definitions: A data warehouse is a centralized repository designed for storing, managing, and analyzing structured data from various sources, optimized for query performance and reporting. It typically uses a schema-based approach to organize data in tables and supports complex queries and analytics. In contrast, a data lake is a storage system that holds vast amounts of raw, unstructured, and structured data in its native format until needed. It is designed for scalability and flexibility, allowing for the storage of diverse data types and enabling advanced analytics, machine learning, and big data processing.

We can see how S3 can be easily utilized as a data lake with little extra functionality. However to use it as a data warehouse we need to add some extra functionality that largly depends on the needs of a given domain.

Features

  • Provides read/wrie on schema-less pd.DataFrame/pl.DataFrame
  • Saves pd.DataFrame/pl.DataFrame using parquet format for fast read performance.
  • Standardizes metadata associated with each dataset
  • Support for parquet datasets (datasets spread over multiple parquet files).

Dev environment

The project comes with a python development environment. To generate it, after checking out the repo run:

chmod +x create_env.sh

Then to generate the environment (or update it to latest version based on state of uv.lock), run:

./create_env.sh

This will generate a new python virtual env under .venv directory. You can activate it via:

source .venv/bin/activate

If you are using VSCode, set to use this env via Python: Select Interpreter command.

Example usage

from acme_dw import DW, DatasetMetadata

dw = DW()
        
# Write with DatasetMetadata object
metadata = DatasetMetadata(
    source='yahoo_finance',
    name='price_history', 
    version='v1',
    process_id='fetch_yahoo_data',
    partitions=['minute', 'AAPL', '2025'],
    file_name='20250124',
    file_type='parquet'
)
dw.write_df(df, metadata)
df = dw.read_df(metadata)

Project template

This project has been setup with acme-project-create, a python code template library.

Required setup post use

  • Enable GitHub Pages to be published via GitHub Actions by going to Settings-->Pages-->Source

  • Create release-pypi environment for GitHub Actions to enable uploads of the library to PyPi

  • Setup auth to PyPI for the GitHub Action implemented in .github/workflows/release.yml via Trusted Publisher uv publish doc

  • Once you create the python environment for the first time add the uv.lock file that will be created in project directory to the source control and update it each time environment is rebuilt

  • In order not to replicate documentation in docs/docs/index.md file and README.md in root of the project setup a symlink from README.md file to the index.md file. To do this, from docs/docs dir run:

    ln -sf ../../README.md index.md

Metadata

Release files for acme_dw 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for acme_dw 0.0.5
File Size Uploaded Provenance
acme_dw-0.0.5.tar.gz 8.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for acme_dw 0.0.5
File Interpreter ABI Platform
acme_dw-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 15.1 kB

Release files / acme_dw-0.0.5.tar.gz

Download URL acme_dw-0.0.5.tar.gz
Size 8.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b597cb78b153ab87ca60177af7427614101a4384373317f45b04abc7b7e50ce3
BLAKE2b-256 checksum
How to use checksums
fdd091ac54dc1b49e5740f138e4604363bb901a4c3c06d0c848c7136fd138177
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.6.10

Release files / acme_dw-0.0.5-py3-none-any.whl

Download URL acme_dw-0.0.5-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
259341ccce0ed1c9660844109a9ac8ce1051e4eaa2fea82b739b606812a757ee
BLAKE2b-256 checksum
How to use checksums
bd189313350cafbc4192b56c5855e2fce872d2f6404fc9a8eb6fcfbb95c25a35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.6.10

Security for acme_dw 0.0.5

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