Streamlit
Streamlit uses Python to build shareable dashboards without the need for front-end development experience.
Step 1: Clone the repository
Run the command below to download the example dashboard:
git clone --depth 1 --filter=blob:none --sparse https://github.com/snowplow-incubator/snowplow-accelerator-resources.git ;
cd snowplow-accelerator-resources
git sparse-checkout set advanced-analytics-mobile-accelerator/streamlit
Next, move into the streamlit repository
cd advanced-analytics-mobile-accelerator/streamlit
Step 2: Install requirements
Run the command below to install the project requirements and run the virtual environment.
❗❗ This implementation has been tested with the following dependencies: python = 3.9.13, streamlit = 1.18.1, pandas = 1.5.3, pandas-gbq = 0.19.1, plotly = 5.13.0, snowflake-connector-python = 3.0.0, pyarrow = 10.0.1 . If you run into package compatibility issues or encounter any errors try using them to build your own environment.
pipenv install
pipenv shell
Step 3: Set-up Database Connection
Create a secrets file at .streamlit/secrets.toml
and add your BigQuery/Databricks/Snowflake connection details.
For BigQuery: make sure you specify your custom derived
dataset which will be the source schema for the dashboard.
Ensure secrets.toml
is in .gitignore
to keep your information safe.
For BigQuery, we recommend setting up your credentials in a similar way to your dbt profiles.yml
, as seen here
# .streamlit/secrets.toml
[gcp_service_account]
type = "service_account"
project_id = "xxx"
private_key_id = "xxx"
private_key = "xxx"
client_email = "xxx"
client_id = "xxx"
auth_uri = "https://accounts.google.com/o/oauth2/auth"
token_uri = "https://oauth2.googleapis.com/token"
auth_provider_x509_cert_url = "https://www.googleapis.com/oauth2/v1/certs"
client_x509_cert_url = "xxx"
[bigquery]
dataset = "dbt_xxx_derived"
For Snowflake we recommend setting up your credentials in a similar way to your dbt profile.yml
, as seen here
# .streamlit/secrets.toml
[snowflake]
user = "xxx"
password = "xxx"
account = "xxx"
database = "xxx"
schema = "xxx" # This should point to your derived schema
warehouse = "xxx"
role = "xxx"
For Databricks, we recommend setting up your credentials in a similar way to your dbt profiles.yml
, as seen here
# .streamlit/secrets.toml
[databricks]
databricks_server_hostname = "xxx"
databricks_http_path = "xxx"
databricks_token = "xxx"
schema = "xxx" # This should point to your derived schema
catalog = "xxx"
Step 4: Specify warehouse
Edit the warehouse you are using on line 10 of the Dashboard.py
file to one of snowflake
, bigquery
or databricks
.
Step 5: Run the Streamlit dashboard
Run the command below to run the streamlit locally
streamlit run Dashboard.py
For Snowflake users, in case the dashboard does not load due to errors such as ‘This session does not have a current database. Call ‘USE DATABASE’, or use a qualified name.’ a possible workaround is to assign default ROLE to the Snowflake user that could handle this.