Automated Scheduled Reporting in Sisense
Originaly published in the Sisense community
Automated Scheduled Reporting in Sisense
Well hello there,
Ever since we started using Sisense, we received questions from our end-users (customers as an OEM) for a more featured way of scheduling reports. Out of the box, Sisense's scheduled reporting is done on a dashboard level and does not allow for a lot of customization.
- A dashboard needs to be shared with the user
- The only option is an email report and/or a PDF
- No central overview of all scheduled reports
- No filter settings per report
- No triggering of a report based on a KPI alert
Code all the way
In the beginning, when we were still using Sisense for Windows, we started writing Python scripts to do all these things for us. It could generate not only PDFs but also Excel, CSV, and Word documents with the extension to set filters per job. Per job, we could also set the recipients, which did not necessarily have to be Sisense-users.
A nice addition was that we could also iterate over filter values and merge PDFs for a multi-view report.
We would schedule these jobs with the Windows Task Scheduler and we were on our way. The biggest downside was that coding each job took a lot of time. Furthermore, the code was prone to error and not doable for our end-users at all which made it time-consuming for us to maintain.
If you are interested in the Python scripts, let me know. I can share those with you
N8N; transitioning from code to low-code
To combat these issues, we started looking into expanding our N8N deployment. N8N is an open-source (self-hosted/cloud-hosted) alternative to Zapier. It has an easy-to-use GUI to set up workflows.
We would build generic workflows to generate PDFs, Excel, and CSVs via Sisense-APIs. These workflows would be triggered by a cronjob that would run every 5 minutes. End-users could create their preferred reports via a Blox form. This would be saved in our database. The workflows would read out that database for a specific time and reports set for that time would be processed.
It was also a nice addition that users could see and maintain the reports themselves all from a Sisense dashboard.
It reduced the load on my team in setting up and maintaining all those scripts. It also decreased the amount of errors due to the excellent logging capabilities of N8N.
Unfortunately, this was not the perfect solution for us. Although it was very cost-effective (the only cost were the time we put in), it did lack some features and user-friendliness.
Sisense Report Manager - from low-code to lower-code
In came the Sisense Report Manager. It took a few versions before it had the capabilities we were looking for (from a security perspective), however since that feature was added we have been using the Sisense Report Manager to our satisfaction. At the moment we have around 1150 reports in the Report Manager that are being sent daily (sometimes even multiple times a day). With a centralized view, it is easy for designers (and us admins) to monitor all reports, send them at will if needed, and see if reports were sent successfully. It is more user-friendly, has a nice overview, and is more stable than our python/n8n variants.
Some aspects can be improved, such as selecting custom filters without the need to code, triggering a report via a Sisense pulse alert, only sending to users with whom you have shared the dashboard, and iterating over filter values.
Paldi Report Manager - from lower-code to no-code
Over the years we have built out an excellent relationship with Paldi Solutions, a Sisense Premium Partner. Do check out their plugins. The ones we use are simply amazing (expandable pivot, advanced filters, widget toolbar, indicator card, new visualizations) and affordable.
When they released their Report Manager we jumped on board to check it out and it did not disappoint. It is like the Sisense Report Manager but on steroids. Not only does it offer the same capabilities it improved on it.
Setting custom filters
Setting custom filters is way more user-friendly. It is not with code, but with the same dropdown/functionalities users have on a dashboard level. Simply set your filters via a list, calendar, or timespan.
Iterating over filter values
Even more amazing is the ability to iterate over filter values. Let's say you want a report from 3 departments. Within the old ways that we were doing this, this would have resulted in 3 separate jobs/reports. With the Paldi Report Manager, you can set it to iterate over a filter (or some of its values). It will create a report per value and merge those PDFs.
Excellent additions are...
Furthermore, it is possible to dynamically set the file name. Within the Sisense Report Manager, it would get the dashboard-name plus the date. Within the Paldi Report Manager, you can give it any name you want. Even (!) measure and/or dimension values. For example you filter on department A, you can then set this name dynamically as a filename. Amazing.
These dynamic placeholders can also be set in the email body. You can customize the text (not possible within the Sisense Report Manager) and add placeholders such as; current date, refresh time of the datasource, and values from the dashboard such as measurements and dimensions.
As you maybe have noticed, the application is fully translatable
Last but not least, each job gets a webhook which you can easily trigger from a Sisense Pulse Alert or even from your application. This makes the integration of these kinds of reports even better.
Conclusion
There is a Dutch saying: "op elk potje past een dekseltje" (there is a lid for every jar) which would loosely translate to there is something out there for everyone. For us, this is the Paldi Report Manager. It fits all our needs and support is amazing (kudos to @Evgeni-Rovinsky ). Our feedback and feature requests are picked up and implemented within a few days.
If you have any questions let me know. Regarding N8N we have built some amazing extensions on Sisense. For example, we created an ability for designers to create/edit/delete users and groups (for their organization) or send data which we store in a database that is imported by Sisense.