blueflood-core/src/main/java/com/rackspacecloud/blueflood/rollup/SlotKey.java
public SlotKey extrapolate(Granularity destGranularity) {

        if (destGranularity.equals(this.getGranularity())) {
            return this;
        }
        if (!destGranularity.isCoarser(getGranularity())) {
            throw new IllegalArgumentException("Destination granularity must be coarser than the current granularity");
        }

        int factor = getGranularity().numSlots() / destGranularity.numSlots();
        int parentSlot = getSlot() / factor;

        return SlotKey.of(destGranularity, parentSlot, getShard());
    }
public SlotKey extrapolate(Granularity destGranularity) {

        if (destGranularity.equals(this.getGranularity())) {
            return this;
        }
        if (!destGranularity.isCoarser(getGranularity())) {
            throw new IllegalArgumentException("Destination granularity must be coarser than the current granularity");
        }

        int factor = getGranularity().numSlots() / destGranularity.numSlots();
        int parentSlot = getSlot() / factor;

        return SlotKey.of(destGranularity, parentSlot, getShard());
    }
public SlotKey extrapolate ( Granularity destGranularity ) { if ( destGranularity . equals ( this . getGranularity ( ) ) ) { return this ; } if ( ! destGranularity . isCoarser ( getGranularity ( ) ) ) { throw new IllegalArgumentException ( "Destination granularity must be coarser than the current granularity" ) ; } int factor = getGranularity ( ) . numSlots ( ) / destGranularity . numSlots ( ) ; int parentSlot = getSlot ( ) / factor ; return SlotKey . of ( destGranularity , parentSlot , getShard ( ) ) ; }
This method would extrapolate a given slotkey to a corresponding parent slotkey of a given(higher) granularity.

For example: For a given slotkey 'metrics_5m,1,30' which corresponds to granularity=5m, slot=1, shard=30, if we
extrapolate this to a destination granularity of 20m, this would return 'metrics_20m,0,30',  which
corresponds to granularity=20m, slot=0, shard=30 which is a parent key of the given slotkey

@param destGranularity
@return
This method would extrapolate a given slotkey to a corresponding parent slotkey of a given ( higher ) granularity .