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 metadataadd_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e0c156645948e9dba6bad065a32214e372ffea26033b94397333ace0e76b418
|
|
| MD5 |
81231504ee3ebfbc27e2e324d4494f0c
|
|
| BLAKE2b-256 |
e2c0c6a4ff34acefd9f60a12cc905ae2c7b4cd02dabfe579725c9e68b4ac1a2d
|
Provenance
The following attestation bundles were made for flowboard-0.1.2.tar.gz:
Publisher:
publish.yml on Gyanankur23/flowboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flowboard-0.1.2.tar.gz -
Subject digest:
3e0c156645948e9dba6bad065a32214e372ffea26033b94397333ace0e76b418 - Sigstore transparency entry: 1694647005
- Sigstore integration time:
-
Permalink:
Gyanankur23/flowboard@6f37fa3935f619469da6dfc67c0ffc899d6ada9f -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Gyanankur23
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6f37fa3935f619469da6dfc67c0ffc899d6ada9f -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7c89d201006bf6b1455701b99a147e182b6c66d261a7f3c1399d0d2e6984906
|
|
| MD5 |
a1226f4f77fc0973bc12377bba37ff96
|
|
| BLAKE2b-256 |
bf8c42609937203211d56d55cfc9695186920eb65a1633189a4352d9c704b5b1
|
Provenance
The following attestation bundles were made for flowboard-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on Gyanankur23/flowboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flowboard-0.1.2-py3-none-any.whl -
Subject digest:
b7c89d201006bf6b1455701b99a147e182b6c66d261a7f3c1399d0d2e6984906 - Sigstore transparency entry: 1694647979
- Sigstore integration time:
-
Permalink:
Gyanankur23/flowboard@6f37fa3935f619469da6dfc67c0ffc899d6ada9f -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Gyanankur23
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6f37fa3935f619469da6dfc67c0ffc899d6ada9f -
Trigger Event:
push
-
Statement type: