I have continued on the Environmental Data Discovery Tool I posted last month. At the time, it had a single dataset (water chemistry from streams in Ontario) and accessed data from text files. I have extended this functionality in that data is now accessed from a mysql database, and the project includes 2 data datasets (groundwater and surface water monitoring data) with the possibility to include additional datasets easily. The final system should allow the user to discover interesting opendata-datasets using plots and summary tables quickly. The user has three levels of information: a summary of the entire dataset, summary tables on stations and parameters, and finally plots to allow visualizing the data. Since each dataset has its own field, labels, stations, parameters, etc. the menu must be highly dynamic in order to name things and show only items that make sense for the current dataset.
I was aware when I started the app that this functionality may be a bit too complex for Streamlit, as it seems more focused on building more simple dashboards for simple, specific datasets. However, while I encountered some limitations, but I did not hit any severe obstacle. Some operations are still slow. However, both datasets are enormous (hundreds of stations, parameters, and tens of years with sampling events), and in the end, the system will be used with smaller datasets. Additionally, I have not started optimizing for performance yet.
Here is the top three of my wishlist in my little project so far:
- A Navbar to be used as a Menu
- A grid layout to place plots or controls side by side,
- An easy way to create beautiful tables
- being able to use the hamburger menu for my own links, documentation of the app to name the most important one
Here is what I appreciated most:
- the ability to easily mix plots, text, and tables
- the simplicity of Streamlit and the speed with which I progressed
- the ease with which an app is deployed
The project is far from being finished, but I am positive now that it can be done in Streamlit.
If anyone has examples of database-driven, dynamic Streamlit apps that he or she is willing to share or discuss, I would be very interested and grateful. I have seen the apps and articles on awesome Streamlit already, and they were tremendously helpful.