SUMMARY
Non aggregating metrics are typically used for values that do not derive their values from typical arithmetic functions like sum, difference, product, etc. A scenario may exist where the values of non aggregating metrics are desired to be seen at multiple levels within a hierarchy, but the subtotal values may differ at a lower level of granularity versus a higher level of granularity if nulls are present in the data. This article aims to explain this behavior.
DESCRIPTION
When warehouse nulls are present or simulated in data with non aggregating metrics, and the metrics are desired to display values at various levels of dimensionality in a hierarchy, then an issue may exist where subtotals display different values at different levels. This can be reproduced in Strategy Tutorial with a simple report design.
STEPS TO REPRODUCE



VIDEO
CAUSE
The cause for the behavior is due to warehouse nulls showing up in the data, but other values show up as well in earlier periods of time. End on hand will take the last value, and in this case the Analytical Engine appears to pass the last displayed value – excluding the null when an actual value is present in the grid – to the subtotal for grand totaling. When the value is not a null and is a zero, then the zero is appropriately passed and used in the subtotal.
ACTION
One method that was found to force the subtotal to use the warehouse null was to only display a single moment in time that had the null, and no other data. In the example used here, this would mean that only Dec2011 is shown on the grid, and the Analytical Engine will use the null value in the subtotal and pass it as a 0.


Null handling for this particular scenario appears to be tricky. If at all possible, using a zero as the data in the warehouse rather than a null should get the desired result for subtotaling, but a zero and a null are different, so this may be undesired.
The warehouse null cannot be forced to be a zero with the NullToZero() function because the value does not exist at all, so the Analytical Engine cannot pass it to the subtotal when other values are present. The cells of warehouse nulls will display as a formatted 0, but the actual value of 0 is not there, so the Analytical Engine will pass the last displayed value to the subtotal.
TO LEARN MORE
For more information about non aggregating metrics, please refer to the Advanced Reporting Guide product manual in Chapter 2: Advanced Metrics, specifically the “Grouping options for nonaggregatable metrics” section.