Thanks for checking in to see what’s new for Release 92! This release, we bring you the results of a massive multi-team effort, first launched over one year ago, and now the default machinery on which all new and existing projects are run: GoodData's new Extensible Analytics Engine. Read on for the details.
New updates since release 92:
With its innovative architecture, GoodData’s Extensible Analytics Engine (XAE) unlocks a number of new features that empower users to tackle more complex use cases and streamlines the processes by which they carry out existing ones. Coupled with new query performance optimizations, XAE simply delivers better reporting value.
New XAE-enabled features include include exception reporting (NULL handling), conditional reporting, advanced ranking, running totals, and square root functions. Each feature, further described below, is associated with new extensions of our query language for defining custom metrics, MAQL.
XAE Enabled Features
Select any feature below to learn more about its associated MAQL syntax.
Square root function (SQRT( ))
The square root function returns the square root of a constant, fact, or metric. This is useful for computing the standard deviation of a set of values from its average.
More info: Square Root function
Exception reporting (NULL handling)
XAE's IFNULL function lets you predefine the way GoodData deals with any missing values that are returned by a metric expression. IFNULL is especially useful in cases where a sub metric is referred to within another metric’s definition. Wrapping the sub metric in an IFNULL statement keeps the encompassing metric from becoming null due to one of its components returning a null value.
More info: IFNULL function
Conditional reporting (IF THEN ELSE and CASE)
Using conditional statements like IF-ELSE (supporting two conditions) and CASE (supporting three or more conditions) you can create complex metrics to perform different computations depending on whether certain user-defined criteria are met.
Advanced ranking (RANK and TOP|BOTTOM(n%))
XAE adds support for new ranking functions, including ranking within groups and percentage ranks.
Running totals (RUNSUM, RUNMAX, RUNMIN, RUNAVG)
GoodData now supports running total functions within metric definitions. Supported functions include running sum, maximum, minimum, and average. Running total metrics can be reused in other metrics, within reports, or to create cumulative charts. They can be created in the Custom Metric Editor using MAQL statements such as RUNSUM(fact), or in the Simple Metric Editor as shown below.
Date attribute arithmetics
With XAE, you can now perform arithmetic operations on date attributes within GoodData, rather than converting attribute values to fact values before data loading or during ETL. This is not only more convenient, but leads to performance improvements as well.
With XAE, GoodData is able to carry out nested transformations. In the case of the following two metrics, where the former is nested within the latter, the final result is intelligently adjusted by two years, rather than just one:
Metric1: SELECT SUM(Amount) FOR PREVIOUS(Year)
Metric2: SELECT SUM(Metric1) FOR PREVIOUS(Year)
You can also use this feature to combine transformations of varying granularity: such as FOR PREVIOUS(Year) and FOR PREVIOUS(Month) in the following case:
SELECT (SELECT SUM(Amount) FOR PREVIOUS(Year)) FOR PREVIOUS(Month)
In this case, the sum returned would represent Amount facts from the month that took place one year and one month ago.
Metric transformations of a different granularity from the report level attribute
XAE can now transform metric values by a different granularity than that of the report level attribute. For example, consider a report that categorizes data using a Year attribute, with one metric defined as:
SELECT SUM(Amount) FOR NEXT(Month)
This would yield the sum of Amount from February 1 of the current year to January 31 of the following year.
Filter and transformation interactions
In the legacy engine, transformed metrics were liable to generate errors when constrained by certain filters.
Consider the metric SELECT SUM(Amount) FOR NEXT(Year). In the legacy engine, this metric would generate an error if added to a new report that broke metrics across a Quarter attribute, and contained a filter such as TOP(3) Quarter by the metric in YEAR = 2013. In XAE, the results would be returned. The report would display values for each of the top three quarters (by Amount) from 2014 (since the FOR NEXT(Year) metric is the one being ranked and filtered, and 2014 is the year that follows 2013).
NULL values multiplied by 0 dropped from evaluation
In the legacy engine, 0 * NULL = 0, which eliminated the informational value of the NULL – particularly when using the computation as part of another metric. In AQE, 0 * NULL is dropped from evaluation. If needed, you can bracket the potential null value with an IFNULL statement to handle these scenarios more gracefully, without breaking or distorting parent metrics.
NULL dropped in TOP/BOTTOM
In the legacy engine, NULL values encountered in a TOP/BOTTOM ranking returned the value 1000, which was liable to confuse the ranking results. In XAE, NULLs returned in a ranking are now considered to be smaller than any other value – meaning NULL values are ranked even lower than values of zero.
Case optimization refers to an internal technique used in the legacy engine for improving performance. In the legacy engine, when a user was editing a report, case optimization sometimes referenced the wrong cache, and the user received report results that differed from those displayed to users who opened the report without editing it. XAE features even better performance optimization, as additional safeguards have been introduced to keep reports from referencing inappropriate caches.
In XAE, reports with two or more attributes will only display those attribute values that have fact values associated with them. In other words, for reports with two or more attributes, XAE does not perform full cartesian products of all attribute elements. Instead, it limits the set of attribute values to those that contain some data in their fact tables. If there is no data for a fact, it cannot be factored into a cartesian product.
For example, if you insert the simple metric SELECT 1 into a report that contains a Year attribute, the report will display all years supported by GoodData, starting from 1900 up to 2050. But add a fact-populated attribute, such as Product, and the list of years is now limited to only those in which there is data in the fact tables for Product.
What's New: Release 92.1
Performance Improvements through HTML5 Chart Rendering
New HTML5 canvas rendering for GoodData charts offers performance improvements for all modern browsers: Firefox, Chrome, and Internet Explorer 9. (Charts in IE8 continue to be rendered using VML or Silverlight, depending on whether the Silverlight plugin is installed.)
Public APIs for White Labeling
Public REST APIs can now be used to set up white labeling in GoodData. Organization owners (domain administrators) can now modify web portal content and set all styling properties that were previously included in the read-only APIs.
For more information see GoodData's documentation on APIs for white labeling.
On the Horizon
GoodData is committed to rolling out new, innovative features. Here's what we've been hard at work on:
Sorting in charts will allow you to sort chart values directly from the Report Editor's sliding configuration pane.
New Australian regions like state, suburb, and postal code will be available for breaking down geographic data in Geo chart widgets.
Simple Metric Editor update: running total functions selectable from within user interface. Create running total metrics on the fly, without having to visit the Custom Metric Editor. The update will support all four running total functions: RUNSUM, RUNAVG, RUNMIN, RUNMAX.