Daana CLI

Transform raw operational data into business-ready analytics with declarative YAML models — no manual ETL pipelines.

model.yaml
mapping.yaml
model:
id: ECOMMERCE
entities:
- id: CUSTOMER
attributes:
- id: CUSTOMER_NAME
type: STRING
effective_timestamp: true

Introduction

Getting started

Daana CLI transforms raw operational data into business-ready analytics with declarative YAML models. Define entities once; mappings, history tracking, and multi-source merges are generated for you.

Tutorial

Get Daana running in 5 minutes and see results in 10 more — a hands-on walkthrough.

DMDL Reference

The four YAML files that define your data model — Model, Mapping, Workflow, Connections.

Focal Framework

The metadata-driven architecture under Daana — non-destructive development for data warehouses.

Command reference

Every daana-cli command, flag, and example — generated from the CLI itself.


Why Daana?

If you've worked with data transformations, you've encountered these challenges:

ChallengeTraditional approachDaana approach
History tracking (SCD2)Write complex SQL with valid_from/valid_to logic, maintain manuallyDeclare effective_timestamp: true, history tracked automatically
Multi-source mergingFULL OUTER JOINs with conflict resolution, deduplication logicAdd tables to the same mapping group, merged automatically
Schema evolutionALTER TABLE statements, migration scripts, breaking changesAdd attributes via metadata, no schema changes required
DocumentationSeparate wiki pages, often outdatedDefinitions live in model files, always current

What you define vs. what Daana generates

You write declarative YAML — entities, attributes, relationships, source mappings. Daana generates SQL transformations, history tables, key resolution, and audit lineage.

# model.yaml — your business domain
model:
  id: ECOMMERCE
  entities:
    - id: CUSTOMER
      attributes:
        - id: CUSTOMER_NAME
          type: STRING
          effective_timestamp: true
        - id: CUSTOMER_EMAIL
          type: STRING
          effective_timestamp: true
    - id: ORDER
      attributes:
        - id: ORDER_TOTAL
          type: NUMBER
          effective_timestamp: true
  relationships:
    - id: ORDER_PLACED_BY
      source_entity_id: ORDER
      target_entity_id: CUSTOMER
# customer-mapping.yaml — connect source to model
entity_id: CUSTOMER
mapping_groups:
  - name: default_mapping_group
    tables:
      - connection: dev
        table: stage.customers
        primary_keys: [customer_id]
        ingestion_strategy: FULL_LOG
        entity_effective_timestamp_expression: updated_at
        attributes:
          - id: CUSTOMER_NAME
            transformation_expression: full_name
          - id: CUSTOMER_EMAIL
            transformation_expression: email

That's enough for Daana to compile, deploy, and execute the full transformation pipeline. The output is BI-ready views in your data warehouse with history tracking baked in.


Three paths to get started

Beta tester

Use this path if you want to learn Daana CLI and have access to the daana-cli binary. Prerequisites → install Docker → run daana-cli init my-tutorial --example quickstart.

Self-service evaluation

Build from source. Path 2 in Prerequisites walks through cloning, building, and running the same tutorial as beta testers.

Contributor

Contributing code? See Path 3 in Prerequisites: repository access, Go 1.26+, Task automation tool, the build-from-source checklist.


What's in the docs

  • Tutorial: seven chapters from zero to a Layer 3 analytics layer.
  • DMDL Reference — Model, Mapping, Workflow, Connections.
  • Concepts — Focal Framework, data warehousing fundamentals.
  • Guides — output structure, AI-assisted mapping.
  • Reference — configuration, command reference, glossary, advanced patterns.