Best Practices for Designing Dashboards
Jump to navigation
Jump to search
This article describes common best practices that should be followed when working with dashboards. Following these best practices make sure that dashboards are easy to maintain, respond quickly and are understandable and illustrative.
Easiness of use
- Use the on-screen settings for settings that often users want to change, as they are easier to access than opening the settings dialog. They also guide users to variate and adjust parameters that are relevant for the analysis.
- Limit the shown case and event attributes and event types, if there are some that are not used in the analysis. This will make the dropdown lists shorter making it easier for users to find the relevant selections. The shorter lists don't have performance impact, though.
- Mappings from measures and dimensions to visualization, such as X- and Y-axis can be set freely, so dimensions don't always need to go to the X-axis and measures to the Y-axis. For some special analysis, it might be easier to use the table to first configure the desired measures and dimensions, and then switch to the desired graphical visualization (such as column, bar or line chart) and map the table columns to the chart.
- Use presets as basis when creating charts. The presets contain commonly needed analysis, so in many cases you'll find what you are looking for from the presets. It's easy to create a chart by starting from a preset, and continue modifying the chart settings for your customized needs.
Data visualization
- If the automatically generated title is not descriptive enough, use a custom title. Also define custom labels for measures and dimensions if they describe the them better. The measure and dimension labels are shown in chart axes, tooltips and table headers. In many measures and dimensions, the automatically generated titles are suitable.
- Check that each measure and dimension has a descriptive unit. For example, the generic process mining terms "cases" and "events" might be replaced with what they actually represent, such as orders, incidents etc.
- Note how the special values, such as nulls and empty strings, are presented by setting descriptive labels for them. For example, when showing duration between events, cases which don't have the events which the duration is calculated from, are shown as nulls, and instead of an empty label, the label can be "Events missing" etc.
- Use the conditional formatting to improve KPI's visualization, especially in tables where the bare numbers are slow to read. There are variety of visualization options, such as background color, databar and icons. Colors can be based on predefined traffic lights or continuous color scales.
- Avoid the Custom Layout settings (JSON) as their compatibility with future QPR ProcessAnalyzer releases might not be maintained in a stable way. Use the custom layout settings only when it's absolutely necessary to achieve the desired visualization.
Using filters
- Filters can be added both to the dashboard level (affecting all charts) and to individual charts. For filters that will be used by most charts, are usually best to set to the dashboard level. For those charts that don't use the common filters, the Chart Follows Dashboards Filters setting can be disabled. Notable difference between the dashboard and chart filters is that the dashboard filters are all the time visible in the dashboard, and they can be easily changed by users. From the performance viewpoint, it doesn't matter in which level the filters are defined.
- Dashboard filter can either be an Unsaved filter or it can be saved as a separate filter object in the model. The dashboard anyways stores the filter rules, so saving the filter separately is not required. The difference is that the saved filter has a descriptive name which is visible below the model name. Also when the dashboard level filter rules are changed, the original filter can be restored by selecting the saved filter in the filters menu.
- If no meaningful filters can be created from a chart, disable the Create Filters from Chart setting. When filtering is disabled, the cursor indicates that there are no clickable items in the chart, and users don't accidentally create filters that have no meaning in the analysis.
Performance optimization
- For the Analyzed objects setting, prefer Cases and Events only when required, as calculating from events is slower than cases, as there are more events than cases. Some measures, even though calculated from the event level data, can still be calculated from measures and dimensions available in Cases. Also Variations, Event types and Flows are generally fast, whereas Flow Occurrences is slow, as there are even more flow occurrence objects than events.
- The more there are charts in the dashboard, the more it takes to open the dashboard and all charts shown. This is because each chart performs a calculation which are all done at the same time in the server. If the dashboard opens slowly, charts could be divided into multiple dashboards and links created to navigate between them.
- Prefer ready-made measures and dimensions, and create custom only when there is no ready-made available. This is because the ready-made measures and dimensions have been optimized for performance. When creating a custom measure or dimension, you need to be careful not to write the calculation formula in an inefficient way.
- Limit the number of returned rows by using the Maximum Rows setting. The less there are rows, the better the performance as there is less data to calculate, less data to transfer, and less data to visualize. In many dashboards, limiting the amount of shown data also improves usability, as it avoids overflow of too detailed information.
- Sorting the data affects performance, so use sorting only when it's relevant for the analysis.
- There are occasions when the Statistical calculations can be used instead of going to a custom expression. Also the Adjustment expression may be useful in avoiding a custom expressions in some KPI's.
- Group Rows Exceeding Maximum goes through all rows that otherwise would be left out of the calculation, which has an impact on the performance, so use it only when the information is useful for the analysis.
- Dimensioning is not needed, when there is a row for each analyzed object (case, event, etc.). For example, Cases as Analyzed objects and dimensioning by case id will lead to a row for each case, but the same result can be achieved by disabling dimensioning, which will improve performance.
Advanced performance optimization
- For slow performing charts, use the Benchmark Performance to experiment which settings provide the best performance. Usually the first thing to do is setting up a working chart, and if the chart shows too slowly, with the benchmark performance you can try to find an alternative and faster way to calculate the same chart.
- Avoid calculating same expressions multiple times in different measures of the same chart. If there are repeating expressions, create a separate measure for the repeating part, and define the measure as a variable, which can then be referenced from other measures.
- When using custom expressions, and there are parts of the expression that give same result for all measures/dimensions, calculate that part separately in the Additional root expression and store the result to a variable. This way the calculation is done only once improving performance significantly. For example, if creating a measure that makes a comparison to the entire model, such as percentage of the entire model data, the model level part should be calculated in the Additional root expression.
- Sampling the data improves performance significantly. The idea of sampling is to pick only a portion of the root objects for the dimension and measure calculation to improve performance. Still, in most charts sampling cannot be used, as it affects the analysis results, for example count of cases and events. See more of the Analyzed objects sample size setting.
- Calculated attributes can improve performance, as they can pre-calculate expressions already in the model loading. For example, event level information can be calculated to case level using calculated case attributes. Calculated attributes cannot be used when there is event type filtering applied, as the calculated attributes are calculated when the model is loaded and thus filtering doesn't affect them. Also, don't use calculated attributes unnecessarily, because they are stored into memory, and thus they consume memory similar to normal attributes.
- In calculated attributes, avoid calculating anything from the entire model data, because it will lead to very slow performance in model loading. Especially for large models, calculated attributes should be used to refer only to the case itself and its events.
- Different models can be used in the same dashboard, and for example filtering still works if the models use same case/event attribute and event type names. This allows to create models optimized for specific charts, which might improve performance.
Exporting data
- When exporting large amount of data, use the CSV export, as it performs better for large dataset comparing to the Excel export. Note that when using the CSV export, you don't need to increase the Maximum rows setting, but instead set the Rows to export in the CSV export dialog (as the settings work independently of each other).
- Very large datasets (such as over million rows) cannot be exported even with the CSV export in one run. To get the data exported, the dataset can be divided into smaller parts by using the Start at row and Rows to export settings.