Incremental loading limits the amount of data that is returned for each database query. This allows users to load reports incrementally, starting with a small set of rows and adding more in steps as desired.
Incremental loading can shorten the amount of time it takes a report to load and be usable. It can also help reduce continuous load on a database which may improve load balancing performance.
Incremental loading is disabled by default. To enable it, set Admin Console > General > Database Settings > Row Limit Step Size to a value greater than 0. This value sets the initial number of rows returned when the report is first executed, as well as the number of rows returned for each subsequent query.
The step size can be overridden at the report-level (with a smaller value) using the Report Viewer option Report Row Step Limit.
With incremental loading enabled, when an ExpressView is run or a report is run in the Report Viewer (the interactive toolbar must be enabled), the report will only query the first number of rows specified in the configuration setting. If there are fewer rows than the full data set, an alert icon displays on the toolbar with the message "Truncated results displayed".
Click the icon to show a menu with two options for retrieving more data:
- Generate +number to retrieve the next number of rows and add them to the report. (The number is determined by the aforementioned Row Limit Step Size setting).
- Generate All to get the full data set.
Exporting a truncated report from the Report Viewer generates a file with only the existing rows.
Incremental loading has no effect on Dashboards, Chained Reports, or Scheduled Reports. Exporting from the Report Tree and Advanced Report Designer is not affected by incremental loading.
Beginning with v2018.1, Advanced Reports and Express Reports now support Infinite Scrolling. With Incremental Loading enabled, scrolling or paging through the Report Viewer will cause additional rows to be loaded automatically as needed. This eliminates the additional step of having to manually load groups of rows at a time.
Conditions for Infinite Scrolling
Infinite Scrolling requires reports to be designed in a certain manner. If the conditions are not met, users will need to manually step through the rows instead.
Reports must have a visible detail section, a defined sort order, and utilize a data source that supports range selection. Reports cannot contain interactive sorts or filters, Top N filters, CrossTabs, collapsible groups, cross-source or Cartesian joins, in-memory aggregate functions (e.g. RunningSum), custom functions, or server events that use the full data set (e.g. OnDataCombined).
The Row Limit Step Size should be high enough that it returns at least one page of data per execution at minimum. The minimum size recommended is 1000 rows. Otherwise infinite scrolling will be disabled.
Default supported data sources include Oracle, MySQL, DB2, Informix, Microsoft SQL Server, and PostgreSQL.
The method used to construct the range limiting SQL statement depends on the data source, and can be customized by editing the dbconfigs.json and setting the
"RowRangeMethodString" property for each source. See Constants and Enumerators: wrRowRangeSqlMethod for valid values.