Symptom
Users may experience the following issues when working with complex Story reports:
-
Lag or slowness in the Story Designer interface
-
Delays when adding widgets or pages
-
Exporting reports takes longer than 3 minutes
-
Charts and tables render slowly
-
Filters cause unresponsiveness or freezing
-
Browser crashes with “Aw Snap” error in Chrome due to Out of Memory (OOM)
Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental.
Environment
- SAP SuccessFactors HCM Suite
- Analytics & Reporting (Ad Hoc, YouCalc, ORD)
- Story Reports
- Analytics & Reporting (Ad Hoc, YouCalc, ORD)
Reproducing the Issue
-
Open or edit the affected Report Story
-
Attempt to run or export the report
-
Observe slow performance or browser crash
-
Alternatively, navigate to Report Center and run/export the Story
-
Notice delays or memory-related errors during execution
Cause
Performance degradation, Out of Memory (OOM) and browser crashes stem from:
-
Excessive/improper usage of joins and autojoins in query design
-
Large datasets in tables or charts (e.g., data extraction use cases, designing 'List' reports with Global data)
-
Nested calculated columns and linked dimensions
-
Overuse of widgets, especially data-heavy ones like tree maps or large tables
-
Filters applied inefficiently or with too many members
-
In rare scenarios, Browser memory limit breach (~4 GB) due to the memory consumed while rendering the data in Story
Resolution
Refer the Implementation Design Principles to start your journey with Story reports.
Design Considerations
1. Cartesian Join
|
Description | Examples | How to analyze? | Recommendation |
|
Incorrectly choosing the combination of objects can result in Cartesian joins, leading to an explosion of records being fetched for a single user. This creates numerous combinations of data that must be held in memory, causing OOM exceptions. |
|
|
|
2. Multiple Alias
|
Description | Examples | How to analyze? | Recommendation |
|
Using the same object multiple times by duplicating it is a common scenario, to transpose data. This can lead to excessive memory consumption as multiple instances of the same object occupy the memory. |
|
|
|
3. Nested/Complex Calculated Columns
|
Description | Examples | How to analyze? | Recommendation |
|
Using calculated columns within other calculated columns and employing multiple If-Else blocks in a single calculated column can increase the complexity and memory usage. Each layer of calculation consumes additional memory, exacerbating the OOM issue. Example: If (PayComp = '123', A, |
|
|
|
4. Filters at Story Level Rather than Query Level
|
Description | Examples | How to analyze? | Recommendation |
|
Adding too many filters at the Story level means retrieving and rendering a vast amount of data before applying the filters. This approach requires the entire dataset to be held in memory, resulting in potential OOM exceptions. |
|
|
|
5. Filters on Query Level rather than Table Level
|
Description | Examples | How to analyze? | Recommendation |
|
Adding filter on the table rather than the query (especially for driving table) can reduce the SQL statement sent to the server, preventing OOM. This is due to the table filters being considered first, only after query filters are applied.
|
|
|
|
6. Time trend Analysis (usage of extensive Date Range)
|
Description | Examples | How to analyze? | Recommendation |
|
Having a large date range applied on table/s can cause large amount of data being sent to the server.
|
|
|
|
7. Hierarchy Reports
|
Description | Examples | How to analyze? | Recommendation |
|
Avoid trying to create hierarchies in Story Reports. Doing so may cause issues not only for the given report, but also if other reports are run in parallel may run into errors.
|
|
|
|
8. Story level calculations
|
Description | Examples | How to analyze? | Recommendation |
|
Limit the use of calculations at the Story widget level. Below examples intends to aggregation of specific pay component.
|
| Create a calculated column, of the similar design, and use it in the widget. Verify if the report works fine. | Provide similar suggestion to move all Story calculations, possible to be moved, to Query level. |
Additional design considerations:
Look for these aspects to understand the heaviness of the Story:
- Too many pages
- Too many fields in a data source (i.e.in particular fields which are not used in the story)
- Too many data sources, used in a single Story page
- Usage of multiple data sources and linking via Link Dimensions to bypass 120 column limits
- Split query into multiple data sources and apply each to separate page
- Split report into multiple parts by applying a filter on the driving table (per region?)
Data Considerations
Identifying the amount of data |
Understanding the number of Records fetched for a single User, at query level
Similar testing can be performed at Position, Department etc., level based on the query design |
Understanding the number of records, using a Numeric Point widget
|
Finding the Join which is leading to high number of records being fetched
|
|---|---|---|---|
| Provide Best Practices with Customer |
| ||
By addressing these design patterns and optimizing both the design and data handling processes, you can significantly reduce the occurrence of OOM exceptions and improve the performance of your SuccessFactors Story Reports.
See Also
Keywords
story, slowness, slow, performance, successfactors, report, center, out of memory, oom, aw snap, guidelines , KBA , LOD-SF-ANA-SAC , Stories in People Analytics , LOD-SF-ANA-SAC-QDS , Query Designer - Filter, Calculated Column, Params , LOD-SF-ANA-SAC-SDS , Story Designer - Story & Formatting , Problem
Product
Attachments
| Pasted image.png |
| Pasted image.png |
| Multiple Alias.png |
SAP Knowledge Base Article - Public