Environmental Data Discovery Tool, continued

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.

3 Likes

Hi @godot63.

Awesome work and thanks for sharing.

Your wishlist is also very much my wishlist and they are all (except maybe the beautifull tables one) feature requests on Github.

To me there is no doubt that Streamlit is the fastest one to develop small apps and prototypes in. The api is so efficient and the app looks good by default. The other frameworks like Bokeh, Panel, Voila and Dash have more advanced features (currently). But it takes time to use them.

For example if you can do more advanced layout and styling you spend time on it. And having a more reactive api with callbacks gives you more power but also requires more concentration and architecture design to develop.

But Streamlit.io :slight_smile: we still need the advanced features for the more advanced use cases.

Thanks, Marc,
I agree with you on Streamlit being incredibly fast to develop simple, good looking applications. And at the pace this still relatively new library progresses, I don’t doubt that my wish list will sooner or later be fulfilled. BTW, you are doing a great job promoting Streamlit on Awesome Streamlit; it’s a great resource, where I have found a lot of inspiration and solutions. Many thanks for that!
I was wondering why the beautiful tables are not on your wishlist: Do you already have a workable solution for it that you can recommend, or do you think the current output is sufficient? My main request would not be for more beautiful tables but rather allowing the user to download the data. Do you know if this is a request already?

Beautiful and more interactive (filter +select rows) tables are on my wish list. I just dont think anyone really has made that feature request.

Regarding file download the is an example in the Gallery at awesome-streamlit.org. Its called File Download Workaround.

thanks Marc
this works perfectly for me. I had seen the discussion, but probably was discouraged by the terms workaround and “only for small data”. I have played around and downloaded files with a few thousand rows easily. This is all I need for now.

1 Like

Thanks for the feedback @godot63 . Nice to know that it can be used for several thousands of rows. I have just not experimented with it. So I don’t know where the limit is.

I called it Workaround because 1) It’s not an official part of Streamlit and I expect there to be some official solution one day 2) I don’t how much data it will suport 3) I think the right solution would be some kind of REST API endpoint instead.

But I can see it’s used in many different web applications based on different technologies. So it’s not that much of a hack/ workaround.