Oracle Commerce analytics applications require the ability to manage and query meta-information about the properties and dimensions in the data.
On a basic level, applications need the ability to determine the types (dimension, Alpha property, numeric (floating point or Integer) property, time/date (Time, DateTime, Duration) property, and so on) of keys in the data set.
For example, knowledge of the set of numeric properties enables the application to present reasonable end-user choices for analytics measures. Knowledge of the set of date/time properties enables the application to present the end-user with reasonable GROUP BY selections using date bucketing operators.
Dimension-level configuration is also useful at the application layer. Knowledge of the multi-select settings for a dimension enables the application to present a tailored user interface for selecting refinements from that dimension (for example, radio buttons for a single select dimension versus check boxes for a dimension enabled for multi-select OR). Knowledge of the precedence rule configuration is useful for rendering dimension tree views. Encoding such information as part of the data rather than hard-coding it into the application makes a cleaner application design that requires less maintenance over time as the data changes.
In addition to product-level information about properties and dimensions, analytics applications require support for managing user-level information about properties and dimensions. Examples of this include:
Rendering text descriptions of properties and dimensions presented in the application. An example would be mouse-over tool tips that describe the definition of the dimension or property.
Management of “unit” information for properties. For example, a Price property might be in units of dollars, euros, and so on. A Weight property might be in units of pounds, tons, kilograms, and so on. Knowledge of the appropriate units for a property enables the application to render units on things like charts, while also enabling the application to dynamically conditionalize analytics behavior (so that it would, for example, multiply the euros property by the current conversion rate before adding it to the dollars property).
General per-property and per-dimension application behavior controls. For example, if the data is stored in a denormalized form, a nested GROUP BY may be required before using a property as an analytics measure (for example, with denormalized transaction data, you must GROUP BY “CustomerId” before computing average “Age” to avoid double counting).
The key property feature in the MDEX Engine addresses these needs. The key property feature enables property and dimension keys to be annotated with metadata key/value pairs called key properties (since they are properties of a dimension or property key). These key properties are configured as PROP elements in a new XML file that is part of the application configuration.
In a traditional data warehousing environment, metadata from the warehouse could be exported to an XML key properties file and propagated onwards to the application and rendered to the end user.
Access to key properties is provided to the application through new API
methods: the application calls
ENEQuery.setNavKeyProperties
to request key
properties, then calls
Navigation.getKeyProperties
to retrieve them.
In addition to developer-specified key properties,
Navigation.getKeyProperties
also returns automatically
generated key properties populated by the MDEX Engine. These indicate the type
of the key (dimension, Alpha property, Double property, and so on), features
enabled for the key (such as sort or search), and other application
configuration settings.