Search in sources :

Example 1 with Sketch

use of com.yahoo.sketches.theta.Sketch in project druid by druid-io.

the class SketchAggregationTest method testSketchAggregatorFactoryComparator.

@Test
public void testSketchAggregatorFactoryComparator() {
    Comparator<Object> comparator = SketchHolder.COMPARATOR;
    Assert.assertEquals(0, comparator.compare(null, null));
    Union union1 = (Union) SetOperation.builder().build(1 << 4, Family.UNION);
    union1.update("a");
    union1.update("b");
    Sketch sketch1 = union1.getResult();
    Assert.assertEquals(-1, comparator.compare(null, SketchHolder.of(sketch1)));
    Assert.assertEquals(1, comparator.compare(SketchHolder.of(sketch1), null));
    Union union2 = (Union) SetOperation.builder().build(1 << 4, Family.UNION);
    union2.update("a");
    union2.update("b");
    union2.update("c");
    Sketch sketch2 = union2.getResult();
    Assert.assertEquals(-1, comparator.compare(SketchHolder.of(sketch1), SketchHolder.of(sketch2)));
    Assert.assertEquals(-1, comparator.compare(SketchHolder.of(sketch1), SketchHolder.of(union2)));
    Assert.assertEquals(1, comparator.compare(SketchHolder.of(sketch2), SketchHolder.of(sketch1)));
    Assert.assertEquals(1, comparator.compare(SketchHolder.of(sketch2), SketchHolder.of(union1)));
    Assert.assertEquals(1, comparator.compare(SketchHolder.of(union2), SketchHolder.of(union1)));
    Assert.assertEquals(1, comparator.compare(SketchHolder.of(union2), SketchHolder.of(sketch1)));
}
Also used : Sketch(com.yahoo.sketches.theta.Sketch) Union(com.yahoo.sketches.theta.Union) Test(org.junit.Test) GroupByQueryRunnerTest(io.druid.query.groupby.GroupByQueryRunnerTest)

Example 2 with Sketch

use of com.yahoo.sketches.theta.Sketch in project druid by druid-io.

the class SketchHolder method getEstimateWithErrorBounds.

public SketchEstimateWithErrorBounds getEstimateWithErrorBounds(int errorBoundsStdDev) {
    Sketch sketch = getSketch();
    SketchEstimateWithErrorBounds result = new SketchEstimateWithErrorBounds(getEstimate(), sketch.getUpperBound(errorBoundsStdDev), sketch.getLowerBound(errorBoundsStdDev), errorBoundsStdDev);
    return result;
}
Also used : Sketch(com.yahoo.sketches.theta.Sketch)

Example 3 with Sketch

use of com.yahoo.sketches.theta.Sketch in project druid by druid-io.

the class SketchHolder method sketchSetOperation.

public static SketchHolder sketchSetOperation(Func func, int sketchSize, Object... holders) {
    //the final stages of query processing, ordered sketch would be of no use.
    switch(func) {
        case UNION:
            Union union = (Union) SetOperation.builder().build(sketchSize, Family.UNION);
            for (Object o : holders) {
                ((SketchHolder) o).updateUnion(union);
            }
            return SketchHolder.of(union);
        case INTERSECT:
            Intersection intersection = (Intersection) SetOperation.builder().build(sketchSize, Family.INTERSECTION);
            for (Object o : holders) {
                intersection.update(((SketchHolder) o).getSketch());
            }
            return SketchHolder.of(intersection.getResult(false, null));
        case NOT:
            if (holders.length < 1) {
                throw new IllegalArgumentException("A-Not-B requires atleast 1 sketch");
            }
            if (holders.length == 1) {
                return (SketchHolder) holders[0];
            }
            Sketch result = ((SketchHolder) holders[0]).getSketch();
            for (int i = 1; i < holders.length; i++) {
                AnotB anotb = (AnotB) SetOperation.builder().build(sketchSize, Family.A_NOT_B);
                anotb.update(result, ((SketchHolder) holders[i]).getSketch());
                result = anotb.getResult(false, null);
            }
            return SketchHolder.of(result);
        default:
            throw new IllegalArgumentException("Unknown sketch operation " + func);
    }
}
Also used : Intersection(com.yahoo.sketches.theta.Intersection) AnotB(com.yahoo.sketches.theta.AnotB) Sketch(com.yahoo.sketches.theta.Sketch) Union(com.yahoo.sketches.theta.Union)

Example 4 with Sketch

use of com.yahoo.sketches.theta.Sketch in project druid by druid-io.

the class SketchMergeComplexMetricSerde method deserializeColumn.

@Override
public void deserializeColumn(ByteBuffer buffer, ColumnBuilder builder) {
    GenericIndexed<Sketch> ge = GenericIndexed.read(buffer, strategy);
    builder.setComplexColumn(new ComplexColumnPartSupplier(getTypeName(), ge));
}
Also used : Sketch(com.yahoo.sketches.theta.Sketch) ComplexColumnPartSupplier(io.druid.segment.serde.ComplexColumnPartSupplier)

Aggregations

Sketch (com.yahoo.sketches.theta.Sketch)4 Union (com.yahoo.sketches.theta.Union)2 AnotB (com.yahoo.sketches.theta.AnotB)1 Intersection (com.yahoo.sketches.theta.Intersection)1 GroupByQueryRunnerTest (io.druid.query.groupby.GroupByQueryRunnerTest)1 ComplexColumnPartSupplier (io.druid.segment.serde.ComplexColumnPartSupplier)1 Test (org.junit.Test)1