Datamart Watcher Use Case 2: Outliers - Margin Opportunity (Actionable Insights)

In this example, we will configure a Datamart Watcher to alert us about customers with an “underperforming” margin.

If such a negative trend is detected, Actions are created so that we can determine the root cause (e.g., low list price, low guidance, high level of discounting) and take action to set the correct customer/market price.

Prerequisites

  • Transactional data are available.

  • There are the following fields available in the transactional data:

    • Customer ID

    • Pricing Date

    • Invoice Price

    • Gross Margin

  • Margin calculated on the Customer ID level.

    • CustomerMargin Rollup

  • The Actionable Insights capability is available.

  • Customer Insights Dashboards are available.

  • For the Optimization-supported version:

    • The Optimization module is available.

    • Clustering Model is available.

    • Python engine is supported in the partition.

Alert Definition

Peer comparison among customer segment’s Xth (default value: 5) percentile of customers with lowest margin is used for defining the floor margin and margin opportunity.

If the customer’s margin in the defined period is lower than the floor margin identified within the respective customer segment, the alert is raised on the defined level of entity and the Margin Opportunity is calculated.

Time Period

Last 6 months

Entity

Customer ID

Measures

Floor Margin, Customer Margin, Customer Revenue

Threshold

Floor Margin = Customer segment’s Xth Percentile = Xth Percentile of Customers with the lowest Margin, calculated per Customer segment.

X = 5 by default

Margin Opportunity Definition

Customer Revenue * Customer Segment Floor Margin - Customer Margin)

Detection Rule

Customer Margin < Customer Segment 5th Percentile

Configuration

In some parts, the setup steps have two different versions – Basic or Optimization-supported, depending on if transactions data based segmentation is used (Basic) or if clustering provided by Clustering Model is used (Optimization-supported).

Optimization-Supported Solution – Additional Setup

If the solution is supposed to use the Clustering Model (Optimization-supported), take the two below-listed steps first and then continue with the standard setup:

  1. Execute all the Clustering Model’s steps incl. the last step (Export Clustering to Data Source) so that the ClusterName dimension is exported to the sourcing Datamart.

  2. Add the Cluster dimension (provided by the Clustering Model) to the transactional Datamart using the Field Picker in the Datamart setting and re-run the respective Data Load.

Rollup

First, we will create a rollup that will calculate the gross margin percentage per customer.

  1. Create a new Rollup and name it CustomerSegmentMargin (CustomerClusterMargin for the Optimization-supported version).

  2. Select a transactional Datamart as Data Source.

  3. Add Group by: Select Customer Group and Customer ID (Cluster Name and Customer ID for Optimization-supported version).

  4. As a Measure, select GrossMarginPct and define the expression as sum(Gross Margin) / sum(Invoice Price).

  5. Set up a Generic Filter: We only want the transactions for the last 3 months.

Data Scope

In the first step, we will configure the source data.

  1. Define Series 1, let’s call it Customer Margin and Revenue.

    1. Select a transactional Datamart as Data Source.

    2. Add Group by: These optional hierarchical dimensions can be used to assign actions to different users in the Action Definition step. We will select Customer Group as Level 1, Customer ID as Level 2 and Customer Name as Level 3. Actions will be created based on this lowest level. Customer name is better than ID for presenting the results to the users.

    3. As a first Measure select GrossMarginPct, as Aggregation select Function and define it as SUM(Gross Margin) / SUM(Invoice Price).
      As a second measure select SUM of Invoice Price. Name the measure Revenue.

    4. Set up a Generic Filter: Pricing Date between 6 months ago and the current day.

  2. Add Series 2, let’s call it Floor Margin.

     

    1. As Data Source select:

      • CustomerSegmentMargin Rollup for the basic version.

      • CustomerClusterMargin Rollup for the Optimization-supported version.

    2. Adjust Group by:

      • Customer Group for the basic version.

      • Customer Name for the Optimization-supported version.

    3. As a Measure, select GrossMarginPct and define the expression as Percentile_disc(p0_GrossMarginPct, 0.05). Name the measure FloorMarginPct.

       

  3. Add a Join Series, let’s call it Margin Opportunity.

     

    1. Set up the Definition. The base series (Base Period) is preselected and non-editable, for the joined series select Floor Margin and as Dimension select in both cases Customer Group (Cluster Name for the Optimization-supported version). This will be the key connecting data from both series.

       

    2. Create two Measures:

      • Gross Margin Pct Delta defined as Series2(Floor Margin).FloorMarginPct - Series1(Margin and Revenue).GrossMarginPct.

         

      • Margin Opportunity defined as Series1(Margin and Revenue).Revenue * (Series2(Floor Margin).FloorMarginPct - Series1(Margin and Revenue).GrossMarginPct).

Detection Rules

In the second step, we will set the rules for detecting a low margin.

  1. In the Series drop-down list select the Margin Opportunity join series.

  2. Add the following Rule: Margin Opportunity is greater than 10. We set the threshold to this value to avoid raising alert for cases where the opportunity is really low.

  3. Click Preview Rules to see how many records meet the set rule.

  4. Set up a Schedule: We want the rule to be evaluated once every month, so we will set Period to Month and Interval to 1.

Action Definition

In the third step, define Actions that will be generated when the detection rule condition is met.

  1. Click Create Action and add Summary, Description and the Due Date.

  2. Select user(s) in Assign to or Assign to per Dimension.

  3. Add a Dashboard.

    1. Select the Customer Insights - Customer Detail View Dashboard.

    2. Customer is a mandatory field but right now can be filled with a temporary value because the dashboard embedded in a particular Action will be set for the the respective Customer ID for which the Action has been generated.

    3. Set Time Filter to Last 6 Months (L6M).

Summary

In the fourth step, review the complete setup of the Watcher and submit it for approval.