Aggregation Groupings

Aggregation groupings are defined based on fields and aggregation selectors.

An aggregation grouping is created based on how fields and aggregation selectors are defined. A separate grouping instance is dynamically generated for each unique combination of values from the specified fields and matrices. If the composite meter has aggregation groupings, every impact on the composite value has a corresponding impact on exactly one aggregation grouping. The total of the component values for each aggregation grouping always equals the composite value.

Data for grouping instances is generated in a wallet on an as-needed basis, within each period of the composite value. Each new period of the composite value starts with no grouping instances, and instances are added as needed within the new period. Each period can have a different set of instances, and an instance not impacted within a period is not generated within the wallet.

Note: Charge meters not associated with a service type include both usage and non-usage charges. The aggregation groupings often reference fields not present in usage messages. For aggregation groupings these fields are treated as not set. If an aggregation grouping definition uses aggregation selectors (matrices), the aggregation selectors might use normalizers on usage message fields. Because such fields might not be present for non-usage charges, these normalizers must specify a normalization value for these fields. These issues do not apply to charge meters associated with a service type because they only measure usage charges.

For more information about creating aggregation selectors, see the discussion about creating an aggregation selector in My MATRIXX Help.

Aggregation Selectors

To define an aggregation grouping using matrices, create aggregation selectors. Pricing administrators create aggregation selectors in the pricing data and reference one or more aggregation selectors from the meter template for the composite meter. An aggregation selector object is an independent, reusable pricing object that includes an ordered list of matrices.
Note: An aggregation selector must produce a value or an error is generated and the transaction is canceled.
As with other pricing objects that contain a list of matrices, a matrix cell can have a SKIP value. If every matrix applied in the list results in a SKIP, an error is generated, and the transaction is canceled. Each aggregation selector object includes a name field that is used as part of the identifying resulting aggregation instances.

Fields and Matrices

Aggregation groupings are specified with a combination of field names and matrices.

Aggregation groupings can be based on rate tags or on fields from the purchased offer, product offer, bundle, or catalog item. Use field names when every unique value for the field is to result in a separate grouping. If a field is not set, it is treated as having a distinct null value.
Note: If a composite meter is a usage meter or a turnstile meter, and has aggregation groupings defined with offer fields or rate tags and multiple groupings match when charges are applied in parallel, the component for one grouping is incremented by the full amount and the other components are not incremented. To avoid this situation, use offer fields and rate tags in usage meters or turnstile meters only when multiple groupings always match when multiple charges are applied in parallel.

When specifying a field name, the set of possible values for the field can change over time without changing the definition of the composite meter. For example, if usage is measured for each value that could appear in a country code field in the network message, no change is needed in the meter definition if the set of all country codes changes. Fields for aggregate groupings cannot be list fields, array fields, blob fields, or a sub-structure, however, you can use individual fields within a sub-structure.

Use matrices when separate groupings are not needed for every combination of every possible value for each relevant field. For example, a grouping is based on field F1, which can have 4 values, and field F2, which can have 10 values. If a separate grouping based on F2 is only needed if F1 has one of its possible values, then the maximum number of groupings produced is 13, 10 for one value of F1 and 1 value each for the other 3 values of F1, rather than 40 values (4 values for F1 and 10 values for F2).

For more information about adding aggregation selectors and fields, see the discussion about configuring meter template aggregations in My MATRIXX Help.