Product analytics over your data warehouse
Project description
Mitzu is an open source product analytics tool that queries your data lake or data warehouse.
Features
- Visualization for:
- Funnels
- Segmentation
- Retention
- User Journey (coming soon)
- Revenue calculations (coming soon)
- User Lookup (coming soon)
- Cohorts Analysis
- Standalone web app for non-tech people
- Notebook visual app
- Notebook low-code analytics in python
- Batch ETL jobs support
Supported Integrations
Mitzu integrates with most modern data lake and warehouse solutions:
- AWS Athena
- Databricks Spark (SQL)
- Files - SQLite (csv, parquet, json, etc.)
- MySQL
- PostgreSQL
- Snowflake
- Trino / Starburst
Coming Soon
Quick Start
In this section, we will describe how to start with Mitzu
on your local machine. Skip this section if you rather see Mitzu
in a prepared notebook or webapp. Otherwise get ready and fire up your own data-science notebook.
Install the Mitzu python library
pip install mitzu
Reading The Sample Dataset
The simplest way to get started with Mitzu
is in a data-science notebook. In your notebook read the sample user behavior dataset.
Mitzu can discover your tables in a data warehouse or data lake. For the sake of simplicity we provide you an in-memory sqlite based table that contains
import mitzu.samples as smp
dp = smp.get_sample_discovered_project()
m = dp.create_notebook_class_model()
Segmentation
The following command visualizes the count of unique users
over time who did page visit
action in the last 30 days
.
m.page_visit
In the example above m.page_visit
refers to a user event segment
for which the notebook representation is a segmentation chart
.
If this sounds unfamiliar, don't worry! Later we will explain you everything.
Funnels
You can create a funnel chart
by placing the >>
operator between two user event segments
.
m.page_visit >> m.checkout
This will visualize the conversion rate
of users that first did page_visit
action and then did checkout
within a day in the last 30 days.
Filtering
You can apply filters to user event segment
the following way:
m.page_visit.user_country_code.is_us >> m.checkout
# You can achieve the same filter with:
# (m.page_visit.user_country_code == 'us')
#
# you can also apply >, >=, <, <=, !=, operators.
With this syntax we have narrowed down our page visit
user event segment
to page visits from the US
.
Stacking filters is possible with the &
(and) and |
(or) operators.
m.page_visit.user_country_code.is_us & m.page_visit.acquisition_campaign.is_organic
# if using the comparison operators, make sure you put the user event segments in parenthesis.
# (m.page_visit.user_country_code == 'us') & (m.page_visit.acquisition_campaign == 'organic')
Apply multi value filtering with the any_of
or none_of
functions:
m.page_visit.user_country_code.any_of('us', 'cn', 'de')
# m.page_visit.user_country_code.none_of('us', 'cn', 'de')
Of course you can apply filters on every user event segment
in a funnel.
m.add_to_cart >> (m.checkout.cost_usd <= 1000)
Metrics Configuration
To any funnel or segmentation you can apply the config method. Where you can define the parameters of the metric.
m.page_visit.config(
start_dt="2021-08-01",
end_dt="2021-09-01",
group_by=m.page_visit.domain,
time_group='total',
)
start_dt
should be an iso datetime string, or python datetime, where the metric should start.end_dt
should be an iso datetime string, or python datetime, where the metric should end.group_by
is a property that you can refer to from the notebook class model.time_group
is the time granularity of the query for which the possible values are:hour
,day
,week
,month
,year
,total
Funnels have an extra configuration parameter conv_window
, this has the following format: <VAL> <TIME WINDOW>
, where VAL
is a positive integer.
(m.page_visit >> m.checkout).config(
start_dt="2021-08-01",
end_dt="2021-09-01",
group_by=m.page_visit.domain,
time_group='total',
conv_window='1 day',
)
SQL Generator
For any metric you can print out the SQL code that Mitzu
generates.
This you can do by calling the .print_sql()
method.
(m.page_visit >> m.checkout).config(
start_dt="2021-08-01",
end_dt="2021-09-01",
group_by=m.page_visit.domain,
time_group='total',
conv_window='1 day',
).print_sql()
Pandas DataFrames
Similarly you can access the results in the form of a Pandas DataFrame with the method .get_df()
(m.page_visit >> m.checkout).config(
start_dt="2021-08-01",
end_dt="2021-09-01",
group_by=m.page_visit.domain,
time_group='total',
conv_window='1 day',
).get_df()
Notebook Dashboards
You can also visualize the webapp in a Jupyter Notebook:
import mitzu.samples as smp
dp = smp.get_sample_discovered_project()
dp.notebook_dashboard()
Usage In Notebooks
Webapp
Mitzu can run as a standalone webapp or embedded inside a notebook.
Trying out locally:
docker run -p 8082:8082 imeszaros/mitzu-webapp
Connect Your Own Data
Mitzu is be able to connect to your data warehouse or data lake. To get started with your own data integration please read our handy docs
Contribution Guide
Please read our Contribution Guide
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
File details
Details for the file mitzu-0.5.6.tar.gz
.
File metadata
- Download URL: mitzu-0.5.6.tar.gz
- Upload date:
- Size: 626.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.0 CPython/3.10.6 Linux/5.15.0-1034-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65a511b40fe6954bff60416c297cc26441b973cec6bb4370b945de1f08230fe3 |
|
MD5 | 7578d4e04bfbc319f149a9de83ed67ba |
|
BLAKE2b-256 | 66696cc5e86cb5648dd579782b767d3299cbb9cde0ac50e34025556d2eaf5d9f |
File details
Details for the file mitzu-0.5.6-py3-none-any.whl
.
File metadata
- Download URL: mitzu-0.5.6-py3-none-any.whl
- Upload date:
- Size: 672.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.0 CPython/3.10.6 Linux/5.15.0-1034-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 562961259335234778187667ef8f5b302c9571773f3d5bbb90d282bea8564355 |
|
MD5 | 31d5ecdfbc54c637c2f38372b126c0f2 |
|
BLAKE2b-256 | bad04bd2f9bcc4d909d68f42bf5dad2fb0d9ea508f898b4f30990c6b58365df2 |