Skip to main content

Production-grade semantic analytics framework. Power BI-style modeling with DuckDB's sub-millisecond query performance.

Project description

Flowboard

Production-Grade Semantic Analytics Framework

Flowboard is a lightweight, intent-driven analytics engine that brings Power BI-style semantic modeling to Python. Build multi-table data models, query with natural intent, and visualize resultsโ€”all with blazing-fast in-memory execution powered by DuckDB.

Why Flowboard?

  • Semantic First: Define dimensions and measures once, query with intent
  • DuckDB-Powered: Sub-millisecond analytics on datasets up to available RAM
  • Multi-Table: Built-in relationship management across tables
  • Zero Dependencies Hell: Minimal overhead, fast installation
  • Production Ready: Designed for embedded analytics and data apps

Installation

pip install flowboard

Requires Python 3.8+


Quick Start: 60-Second Example

import flowboard as fb

# 1. Load data
sales_table = fb.load_csv('sales.csv')

# 2. Define semantic model
model = fb.SemanticModel()
model.add_table(
    'sales',
    dimensions=['date', 'region', 'product'],
    measures={
        'revenue': 'SUM(amount)',
        'profit': 'SUM(amount - cost)',
        'units': 'COUNT(*)'
    }
)

# 3. Query with intent
result = fb.query("revenue by region", model)

# 4. Visualize
chart = fb.chart(result)
chart.show()

Core Features

๐Ÿ“Š Multi-Format Data Loading

fb.load_csv('data.csv')      # CSV auto-detection
fb.load_parquet('data.parquet')  # Columnar format
fb.load_xlsx('data.xlsx')    # Excel spreadsheets

๐ŸŽฏ Intent-Driven Queries

fb.query("revenue by month", model)
fb.query("profit by region", model)
fb.query("units by product", model)

๐Ÿ”— Relationship Management

model.add_relationship('sales', 'customer_id', 'customers', 'id')

๐Ÿ“ˆ One-Line Visualization

chart = fb.chart(result)  # Returns interactive Plotly figure
chart.show()

Industry Use Cases

E-Commerce Analytics

model.add_table('orders', 
    dimensions=['date', 'category', 'region'],
    measures={'gmv': 'SUM(total)', 'orders': 'COUNT(*)'}
)
result = fb.query("gmv by category", model)

SaaS Metrics Dashboard

model.add_table('events',
    dimensions=['event_type', 'cohort', 'date'],
    measures={'dau': 'COUNT(DISTINCT user_id)', 'sessions': 'COUNT(*)'}
)
result = fb.query("dau by cohort", model)

Financial Reporting

model.add_table('transactions',
    dimensions=['account', 'quarter'],
    measures={'revenue': 'SUM(amount)', 'margin': 'SUM(profit)'}
)
result = fb.query("revenue by account", model)

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚        Flowboard API Layer          โ”‚
โ”‚  (Semantic Model + Intent Query)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     DuckDB Execution Engine         โ”‚
โ”‚    (Sub-ms Query Performance)       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    Data Loaders (CSV/Parquet/XLSX)  โ”‚
โ”‚         + Relationship Mgmt         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

API Reference

load_csv(path) โ†’ str

Load CSV file into DuckDB. Returns table name.

load_parquet(path) โ†’ str

Load Parquet file into DuckDB. Returns table name.

load_xlsx(path) โ†’ str

Load Excel file into DuckDB. Returns table name.

SemanticModel()

Define your data model.

Methods:

  • add_table(name, dimensions, measures) โ€” Register a table with semantic metadata
  • add_relationship(t1, col1, t2, col2) โ€” Define foreign key relationships

query(intent, model) โ†’ list[dict]

Execute semantic query. Format: "<measure> by <dimension>"

chart(result) โ†’ plotly.graph_objects.Figure

Generate interactive bar chart from query result.


Performance Characteristics

Dataset Size Query Latency Memory Usage
< 100MB < 1ms Minimal
< 1GB 1-10ms 1-2GB
< 10GB 10-100ms 5-15GB

Benchmarks on modern hardware (2023+)


Development

git clone https://github.com/gyanankur23/flowboard
cd flowboard
pip install -e .[dev]
pytest

License

MIT โ€” See LICENSE file for details.


Contributing

Contributions welcome! Please open an issue or PR on GitHub.

For questions and discussions, reach out to: gyanankur9@gmail.com


Flowboard v0.1.1 | Built for data teams, by data builders.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flowboard-0.1.2.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flowboard-0.1.2-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file flowboard-0.1.2.tar.gz.

File metadata

  • Download URL: flowboard-0.1.2.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for flowboard-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3e0c156645948e9dba6bad065a32214e372ffea26033b94397333ace0e76b418
MD5 81231504ee3ebfbc27e2e324d4494f0c
BLAKE2b-256 e2c0c6a4ff34acefd9f60a12cc905ae2c7b4cd02dabfe579725c9e68b4ac1a2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowboard-0.1.2.tar.gz:

Publisher: publish.yml on Gyanankur23/flowboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flowboard-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: flowboard-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for flowboard-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b7c89d201006bf6b1455701b99a147e182b6c66d261a7f3c1399d0d2e6984906
MD5 a1226f4f77fc0973bc12377bba37ff96
BLAKE2b-256 bf8c42609937203211d56d55cfc9695186920eb65a1633189a4352d9c704b5b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for flowboard-0.1.2-py3-none-any.whl:

Publisher: publish.yml on Gyanankur23/flowboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page