Skip to main content

Laktory

pypi test downloads versions license

An open-source DataOps and dataframe-centric ETL framework for building lakehouses. Use it standalone or extend your existing DABs setup with it.

laktory logo

Laktory is an all-in-one solution for defining both data transformations and Databricks resources. Imagine if Declarative Automation Bundles (DAB) supported any Databricks resources and offered a declarative approach to data transformations, that's essentially Laktory.

Deploy it standalone as your full Databricks DataOps platform, or add it alongside your existing DAB setup to manage pipeline definitions and the resources DAB doesn't cover.

This open-source framework streamlines the creation, deployment, and execution of data pipelines while adhering to essential DevOps practices such as version control, code reviews, and CI/CD integration. Powered by Narwhals, Laktory enables seamless transitions between Apache Spark, Polars, and other frameworks to perform data transformations reliably and at scale. Its modular and flexible design allows you to effortlessly combine SQL statements with DataFrame operations, reducing complexity and enhancing productivity.

what is laktory

Since Laktory pipelines are built on top of Narwhals, they can run in any environment that supports Python, from your local machine to a Kubernetes cluster. Pipelines can be orchestrated using tools like Apache Airflow or deployed directly as Databricks Jobs or Declarative Pipelines, offering both flexible and fully managed execution options.

But Laktory goes beyond data pipelines. It empowers you to define and deploy your entire Databricks data platform, from Unity Catalog and access grants to compute and quality monitoring. This empowers your data team to take full ownership of the solution, eliminating the need to juggle multiple technologies.

No more splitting ownership between Terraform for infrastructure and DAB for workflows. With Laktory, the team that builds the pipelines can own the stack end to end.

dataops

Help

See documentation for more details.

Installation

Install using

pip install laktory

For more installation options, see the Install section in the documentation.

A Basic Example

from laktory import models


node_brz = models.PipelineNode(
    name="brz_stock_prices",
    sources=[{
        "format": "PARQUET",
        "path": "./data/brz_stock_prices/"
    }],
    transformer={
        "nodes": []
    }
)

node_slv = models.PipelineNode(
    name="slv_stock_prices",
    sources=[{
        "node_name": "brz_stock_prices"
    }],
    sinks=[{
        "path": "./data/slv_stock_prices",
        "mode": "OVERWRITE",
        "format": "PARQUET",
    }],
    transformer={
        "nodes": [
            
            # SQL Transformation
            {
                "expr": """
                    SELECT
                      data.created_at AS created_at,
                      data.symbol AS symbol,
                      data.open AS open,
                      data.close AS close,
                      data.high AS high,
                      data.low AS low,
                      data.volume AS volume
                    FROM
                      {df}
                """   
            },
            
            # Spark Transformation
            {
                "func_name": "drop_duplicates",
                "func_kwargs": {
                    "subset": ["created_at", "symbol"]
                }
            },
        ]
    }
)

pipeline = models.Pipeline(
    name="stock_prices",
    nodes=[node_brz, node_slv],
)

pipeline.execute(spark=spark)

To get started with a more useful example, jump into the Quickstart.

Get Involved

Laktory is growing rapidly, and we'd love for you to be part of our journey! Here's how you can get involved:

  • Join the Community: Connect with fellow Laktory users and contributors on our Slack. Share ideas, ask questions, and collaborate!
  • Suggest Features or Report Issues: Have an idea for a new feature or encountering an issue? Let us know on GitHub Issues. Your feedback helps shape the future of Laktory!
  • Contribute to Laktory: Check out our contributing guide to learn how you can tackle issues and add value to the project.

A Lakehouse DataOps Template

A comprehensive template on how to deploy a lakehouse as code using Laktory is maintained here: https://github.com/okube-ai/lakehouse-as-code

In this template, 4 stacks are used to:

  • {cloud_provider}_infra: Deploy the required resources on your cloud provider
  • unity-catalog: Setup users, groups, catalogs, schemas and manage grants
  • workspace: Setup secrets, clusters and warehouses and common files/notebooks
  • workflows: The data workflows to build your lakehouse

Okube Company

okube logo

Okube is dedicated to building open source frameworks, known as the kubes, empowering businesses to build, deploy and operate highly scalable data platforms and AI models.

Metadata

Release files for laktory 0.12.7

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

Source distribution (sdist)

Source distribution for laktory 0.12.7
File Size Uploaded
laktory-0.12.7.tar.gz 796.8 kB Details

Built distribution (wheel)

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

Total release size: 1.8 MB

Release files / laktory-0.12.7.tar.gz

Download URL laktory-0.12.7.tar.gz
Size 796.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a57982e1271686df5f234759016368045b12be7950c6d6a3e006f090ad379b49
BLAKE2b-256 checksum
How to use checksums
34f2d3b408b7a9d4a056ba97fd58c3f6de896114ae2c801e2320cf104f228a56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.14

Release files / laktory-0.12.7-py3-none-any.whl

Download URL laktory-0.12.7-py3-none-any.whl
Size 991.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8ad3f4814d47777a948c689a9ef1868a8d05bad44423ac18092c3bb277e8f1b0
BLAKE2b-256 checksum
How to use checksums
7c5d072cb5e70eeca1a1d20918c5f9505290a3ae2c2cab590c8dc9d348430315
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.14

Release history Release notifications | RSS feed

0.13.0

2 release files

This release

0.12.7 This release

2 release files

0.12.5

2 release files

0.12.4

2 release files

0.12.3

2 release files

0.12.2

2 release files

0.11.9

2 release files

0.11.8

2 release files

0.11.7

2 release files

0.11.6

2 release files

0.11.5

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.17

2 release files

0.8.16

2 release files

0.8.13

2 release files

0.8.12

2 release files

0.8.10

2 release files

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.10

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.12

2 release files

0.5.11

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.12

2 release files

0.4.11

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

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

0.0.29

2 release files

0.0.28

2 release files

0.0.27

2 release files

0.0.26

2 release files

0.0.25

2 release files

0.0.22

2 release files

0.0.21

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

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