in dashboard/src/main/java/com/google/cloud/solutions/realtimedash/dashboard/TimeseriesMetricsController.java [110:136]
public ImmutableSet<OverlapMetric> variantOverlap(Jedis redisClient) {
Set<String> variants = redisClient.keys("set_var_*");
if (variants == null || variants.size() == 0) {
return ImmutableSet.of();
}
return Sets.combinations(variants, 2)
.stream()
.map(variantCombination -> variantCombination.toArray(new String[0]))
.map(variantCombination -> {
String sinterStoreKey = Joiner.on("-").join("overlap_", variantCombination);
redisClient.sinterstore(sinterStoreKey, variantCombination);
ImmutableSet<String> variantCombinationSet
= Arrays.stream(variantCombination).map(name -> name.replaceFirst("set_var_", ""))
.collect(toImmutableSet());
return OverlapMetric.builder()
.setDimensions(variantCombinationSet)
.setMetric(redisClient.scard(sinterStoreKey))
.build();
})
.collect(toImmutableSet());
}