Database Settings

The Database Settings allow administrators to adjust how Exago interfaces with databases. Additional type-specific settings allow you to specify which driver to utilize when connecting to each data source.

The following Database Settings are available:

Database Timeout

Maximum number of seconds allowed for a single query to run before forced timeout.

Note: This setting will also control the maximum number of seconds that a Web Service API method can run. If set to ‘0’ the Web Service time out will be ‘infinite’.

Database Row Limit

Maximum number of rows returned on an execution. This only applies to Tables, Views and Functions. Set to '0' to return all rows.

Row Limit Step Size (v2017.2+)

Maximum number of rows returned on a query. Set to '0' to return all rows. Set to > '0' to enable Incremental Loading for Advanced Reports and ExpressViews. The value determines how many rows are returned for each user-initiated data query.

Disable Non-Joined Data Objects

If True users are not able to add Data Objects to a report that does not have a join path with at least one other Data Object on the report. Set to False to disable this behavior.

Enable Special Cartesian Processing

If True any one-to-many Joins will cause special processing to avoid data repeating on the report. Set to False to disable this behavior.

Aggregate and Group in Database (v2016.3+

If True, aggregate and grouping calculations will be done in the database when possible. This will provide a performance boost for reports with group sections.

Important: Before enabling this, you must ensure that all One-To-Many Joins in your environment are correctly identified and set as One-To-Many in the Join options menu. If these joins are not properly identified, reports which utilize them will return incorrect aggregate data. See Database Aggregation for more information.

Convert Formula Filters and Sorts to SQL (v2018.2+)

If True, formula filters and sorts will be converted to SQL when possible. The converted SQL statements will be placed in the WHERE (for formula filters) and ORDER BY (for formula sorts) clauses when querying data for the report. If set to False, all formula filtering and sorting will occur in-memory.

For more information, please see the Converting Formula Sorts to SQL section below.

Important: Due to innate difference between Exago's formula engine and SQL database engines, there may be discrepancies in data returned between two methods. Additionally, because the converted SQL formulas may contain arbitrary input, the connection string must be read-only access. For more information please see the Database Formulas article.


Type-Specific Database Settings

Each Type of Data Sources has the following settings available.

Data Provider

The name that can be used programmatically to refer to the data provider. This matches the InvariantName found as a property of DbProviderFactories in the machine.config file. See this link for more information.

Table Schema Properties

Specifies how to retrieve the schema of tables.

View Schema Properties

Specifies how to retrieve the schema of views.

Function Schema Properties

Specifies how to retrieve the schema of functions.

Procedure Schema Properties

Specifies how to retrieve the schema of procedures.

Note: For any of the Schema Property settings you can dynamically refer to properties from the Data Source’s connection string by surrounding the property name in @ symbols. For example, "@database@" will be replaces with the database name from the connection string of the Data Source being queried.


Converting Formula Sorts to SQL

When Convert Formula Filters and Sorts to SQL is enabled, Exago will attempt push all formula sorts to the database instead of running them locally. This feature converts formula sorts on a report to SQL syntax so that they can be appended to the ORDER BY clause of the query. When applicable, formula sorting will then be pushed to the database level of report execution, improving execution performance.

For example, a report may be sorted by the following formula, which organizes the data based upon whether or not an Order has a Revenue of greater than or equal to $1000.


This formula sort would be converted to the following SQL statement and appended to the ORDER BY clause of the query during report execution.

(CASE WHEN dbo.[OrderDetails].[Quantity] * dbo.[OrderDetails].[UnitPrice] >=
1000 THEN '1' ELSE '0' END) asc

Formula Dictionary

All defined Exago formula to SQL statement translations can be found in the dbconfigs.json file located in the Config > Other directory of the Exago install. The translations are located under the Formula Dictionary of each database type listed in this JSON file.

For example, the following contains part of the Formula Dictionary for the MySQL database:

"and": ["({0} AND {1})"],
"if": ["(CASE WHEN {0} THEN {1} ELSE {2} END)"],
"or": ["({0} OR {1})"],
"len": ["CHAR_LENGTH({0})"],
"date": ["STR_TO_DATE('{0}/{1}/{2}', '%Y/%m/%d')"],

SQL syntax translations may be added in this file for any custom functions that are defined. Functions may also be overloaded, meaning that a client can define multiple versions of a function that can take a variable amount of arguments and Exago will choose the correct function based on the number of arguments that are passed to it. Functions with an unbounded number of arguments, however, cannot be defined.

Notes on Behavior

Please take the following information into consideration when utilizing this feature:

  • Non-SQL databases (e.g., Mongo, ElasticSearch, Excel) are not supported by this feature. All sorting for reports using non-SQL databases will occur in-memory.
  • DB2 is supported by this feature; however, there are limitations regarding what formulas can be translated to SQL when using this database type.
  • If a sort contains reference to an object from a different data source than the one that is being queried for report execution, then all sorting will occur in-memory.
  • If a sort contains reference to an object from an Excel data source, then all sorting will occur in-memory.
  • If no sorts exist on a report then no SQL will be appended to the query.
  • Boolean expressions will prioritize False values when set to ascending and True values when set to descending.
  • If sorts that cannot be properly translated to SQL exist on a report, then SQL statements will be generated and appended to the database query up to the sort that cannot be translated. For example, if the third sort on a report is untranslatable, then only the first two sorts will be translated and appended.
  • Calculations that are pushed to the database may differ in comparison to those run in-memory by Exago. For example, pi (π) is rounded to the 15th digit in Exago but is only rounded to the 6th digit in MySQL by default. These differences in calculations vary depending on the database type and should be taken into consideration when enabling this feature.


Hidden Article Information

Article Author
created 2016-01-13 22:39:37 UTC
updated 2019-05-16 21:00:00 UTC

data, General, database settings, admin console,
Have more questions? Submit a request