Skip to main content
Version: I2024.2.x

New Features and Improvements

AtScale contains the following new features and improvements.

I2024.2.7

New MDX functions

AtScale now supports the following MDX functions: Tail, Head, ExtractMember, NonEmpty. These can be used together to calculate subtotals and grand totals at levels higher than day that match the 365-day moving window aggregation.

For more information on the new functions, see the MDX Reference. To see how the new functions can be used together for 365-day moving window aggregation, see Use Cases for Time Dimensions.

ATSCALE-23098

Tableau: Improved tooltip performance

AtScale now uses aggregates to accelerate queries related to Tableau tooltips, providing improved performance for tooltips in reports.

This functionality is enabled by default, and can be controlled via the following cube-level configuration settings:

  • aggregates.systemGenerated.higherOrder.retentionPercentage: The maximum number of active higher order aggregates per cube is calculated as this percentage of the value of aggregates.systemGenerated.activeInstance.retentionLimit for each cube. This pool of system-defined aggregate tables is sized and counted separately from the regular system-defined aggregate table pool. The default value is 30.
  • aggregates.create.higherOrder.enabled: When set to true, allows the aggregate system to build aggregates on a higher level if the compression score at the lowest level is not met. The default value is true.
  • aggregates.create.higherOrder.dimensionalAttributes.size: The limit of dimensional attributes in the query in order to consider building a higher order aggregate. The default value is 10.

For more information, see Aggregate Creation Settings.

ATSCALE-23443, ATSCALE-20707

Distinct count aggregates at non-leaf levels

If you have enabled system-generated distinct count aggregates by setting the aggregates.create.allowExactDistinctCountMeasures.enabled cube-level setting to True, then AtScale now creates distinct count aggregates at the level specified in the query, rather than at the leaf level of the hierarchy. This ensures that distinct count aggregates are used by the query planner.

This functionality is enabled by default, and can be controlled via the new aggregates.create.withDistinctCounts.queryLevel.enabled cube-level setting. For more information, see Aggregate Creation Settings.

ATSCALE-23344

API overrides for grace periods on incremental aggregates

You can now create API calls that override grace periods for incremental aggregate builds on specific datasets. This enables you to run ad-hoc incremental aggregate builds, without having to modify the datasets’ configured grace periods.

This functionality is disabled by default, but can be enabled via the following settings:

  • Engine level: aggregate.batch.gracePeriodOverrides.enabled
  • Cube level: aggregate.batch.cube.gracePeriodOverrides.enabled

For more information, see Rebuilding Aggregates Using the REST API.

ATSCALE-23000

Level aliases as default hierarchical members

You can now include references to level aliases in default hierarchical member expressions. For more information, including examples, see About Default Hierarchical Members.

Additionally, AtScale now validates your default member expressions when you publish your cube, rather than only when queries run on it. This functionality can be controlled via the new schema.validate.defaultMembers engine setting. For more information, see Schema Settings.

ATSCALE-22748

Support for referencing calculation group members in calculated measures

You can now include references to calculation group members within calculated measures.

This enables the isolated evaluation and reuse of individual calculation group expressions. For example, the calculation group "TimeCalc" MTD calculation can be individually referenced with different Measures to compute the Month-To-Date Sales/Customer Calculated Measure: ([DateCustom].[TimeCalcs].[MTD], [Measures].[SalesTotal]) / ([DateCustom].[TimeCalcs].[MTD], [Measures].[SaleCount])

For more information, see Referencing Calculation Groups in Calculated Measures.

ATSCALE-23619

Queries now apply dimensional filters to fact tables

AtScale now applies dimension key filters to fact tables, allowing the data warehouse to apply fact table partition pruning and/or clustering optimizations to the query. This enhancement only applies to queries that filter on the dimension's key level.

ATSCALE-20874

Query optimization for measures with unrelated dimensions handling enabled

AtScale now optimizes outbound queries on measures that use the Include empty cells in query results option for unrelated dimensions handling. These queries now use dummy SELECT statements to avoid performing full fact table scans, thereby reducing resource cost.

This functionality is enabled by default and can be controlled via the following cube settings:

  • query.planning.simplifyNullSubqueries: Enables the removal of FROM clauses from non-join queries or subqueries that have been planned to only return NULL. This setting is enabled by default.
  • query.joins.optimization.simplifyNullJoins: Enables the removal of FROM clauses from join queries or subqueries that have been planned to only return NULL. This setting is enabled by default.
  • query.joins.optimization.simplifyNullSemiAdditives: Enables the removal of FROM clauses from semi-additive subqueries whose measures have been planned to be NULL. This occurs even if there are dimensional selections along with the NULL measure. This setting is enabled by default. Note that it is only applied if the QUERY.PLANNING.SEMIADDITIVE.FORCEINDIVIDUALMEASURECHECK engine setting is also enabled.

For more information on these settings, see Query Settings. For more information on unrelated dimensions handling, see About Queries on Dimensions that are Unrelated to One or More Queried Measures.

ATSCALE-23249

I2024.2.6

Crossjoin MDX function

AtScale now supports the Crossjoin MDX function, which returns a set that is the cross product of one or more sets. For more information, see Crossjoin.

ATSCALE-22685

Common table expressions

The AtScale engine now uses common table expressions (CTEs) to reduce redundancy in queries, thereby reducing query size.

This functionality is controlled via the new QUERY.PLANNING.ALLOWCTES engine setting, which is enabled by default. For more information, see Query Settings.

ATSCALE-15188

I2024.2.4

Semi-additive measures now support aggregation across multiple hierarchies

You can now configure semi-additive measures to execute their non-additive behavior when evaluated against several specific hierarchies, rather than being triggered by a single attribute. This functionality increases the generalizability of LVNE/FVNE measures, and saves you from having to author calculated measures with CASE statements wrapping individually created LVNE/FVNE measures.

To support this functionality, the Semi Additive Measure field in the Create and Edit a Measure dialog boxes now allows you to select multiple attributes, rather than just one.

For more information, see Add Semi-Additive Measures.

ATSCALE-21212

Distinct Sum aggregation for non-additive measures

You can now create non-additive measures that use Distinct Sum aggregation, which provides the sum of distinct values for integers.

To support this functionality, the Aggregation Type field in the Create and Edit a Measure dialog boxes contains a new option called Distinct Sum.

For more information on working with distinct sum measures, see Non-Additive Measures. For more information on creating non-additive measures, see Add Additive or Non-Additive Measures.

ATSCALE-21703

Measure support for MDX DateAdd and TimeStampAdd

The DateAdd and TimeStampAdd MDX functions can now be used in calculated measures. Additionally, they can now accept measures and calculated measures as arguments.

For more information, see DateAdd and TimeStampAdd.

ATSCALE-21883

Support for referencing calculation groups in calculated measures

Measures inside of calculated measures can now be scoped by the member range defined in a calculation group. This is typically a quantity of time like Month-to-Date or Equivalent Period in the Last Year.

To make this capability as re-usable as possible, you are no longer required to reference a specific hierarchy in your calculation group code. Additionally, for ParallelPeriods, you no longer need to reference a specific hierarchy level by name (e.g. "Year Level"), and can instead use metadata types, such as TimeYears.

For more information, see Referencing Calculation Groups in Calculated Measures.

ATSCALE-22059

In-memory dimensional aggregates is now GA

The in-memory dimensional aggregates functionality is now GA. For more information, see In-Memory Dimensional Aggregates.

In-dimensional aggregate support for security dimensions

In memory-dimensional aggregates can now be configured to join with security dimensions.

To enable this functionality, you must set the aggregates.dimensional.allowJoinsToSecondaries.enabled engine setting to TRUE. This configures the Create User Defined Aggregate dialog to include security dimension hierarchy levels.

For more information, see In-Memory Dimensional Aggregates.

ATSCALE-21651, ATSCALE-21651, ATSCALE-21965

I2024.2.3

In-memory dimensional aggregates is now GA

The in-memory dimensional aggregates functionality is now GA. For more information, see In-Memory Dimensional Aggregates.

I2024.2.2

In-memory dimensional aggregates is now GA

The in-memory dimensional aggregates functionality is now GA. For more information, see In-Memory Dimensional Aggregates.

Query Planning Optimization

AtScale now optimizes the planning stage for queries on complex calculated measures involving large numbers of CASE statements, resulting in faster processing times. For information on how the optimization works, see Optimizing Queries for Calculated Measures.

ATSCALE-21342, ATSCALE-21002

I2024.2.1

In-memory dimensional aggregates is now GA

The in-memory dimensional aggregates functionality is now GA. For more information, see In-Memory Dimensional Aggregates.

Aggregation functions for calculated measures

You can now set the specific aggregation function to use for a calculated measure when it is referenced by the Aggregate MDX function. This enables you to more easily reference calculated measures from calculation groups.

To support this functionality, the dialog boxes for creating and editing calculated measures now contain an MDX Aggregation Function field, where you can select the aggregation function to use.

note

Note: AtScale recommends setting MDX Aggregation Function to a value other than None for calculated measures that are referenced via calculation groups.

For more information on the new field, see Add Calculated Measures. For more information on the Aggregate MDX function, see Aggregate.

ATSCALE-20582

New MDX Functions

AtScale now supports the following MDX functions: NULLEXCEPT, ALLMEMBEREXCEPT, ALLMEMBER. These enable you to control how sensitive your server-side calculations are to the inbound query context (i.e., the dimensions used in a query's grouping and filtering directives).

For more information on the new functions, see MDX Reference.

ATSCALE-19554

Tableau with PostgreSQL

You can now connect to Tableau using the PostgreSQL JDBC driver. For instructions on configuring this, see Installing PostgreSQL JDBC Drivers.

ATSCALE-20346

Tableau: Improved tooltip performance

AtScale now more efficiently supports MIN/MAX queries on dimension attributes, providing improved performance for tooltips in Tableau reports.

ATSCALE-20241

Distinct Count Estimate Aggregates with Databricks SQL

AtScale can now create aggregates using the distinct count estimate function when connected to a Databricks SQL data warehouse.

ATSCALE-10988

New DAX Function

AtScale now supports the UTCNOW DAX function. For more information on using DAX Tabular with AtScale, see Using DAX Tabular.

ATSCALE-19848

Microsoft Excel: Improved Performance for Multi-Dimensional Result Set Assembly

AtScale now has improved performance for multi-dimensional result set assembly in Microsoft Excel, resulting in faster processing times.

Previously, result set assembly in Excel took a long time for queries that returned high numbers of cells. This improvement results in a 75% reduction in processing time for queries in the range of 100 thousand cells, and a 90% reduction in time for queries in the range of 1 million cells.

ATSCALE-16696

Outbound query optimization for multi-fact models

AtScale is now optimized to reduce the size of outbound queries for multi-fact models that contain calculated measures that use CASE statements to check hierarchy members, and that emit 1-of-n measures from a single fact table.

ATSCALE-20234