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());
    }
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