in src/main/scala/com/amazon/deequ/analyzers/runners/KLLRunner.scala [124:148]
private[this] def emptySketches(
columnsAndParameters: Map[String, Option[KLLParameters]],
schema: StructType): Map[String, UntypedQuantileNonSample] = {
columnsAndParameters.map { case (column, parameters) =>
val (sketchSize, shrinkingFactor) = parameters match {
case Some(kllParameters) => (kllParameters.sketchSize, kllParameters.shrinkingFactor)
case _ => (KLLSketch.DEFAULT_SKETCH_SIZE, KLLSketch.DEFAULT_SHRINKING_FACTOR)
}
val sketch: UntypedQuantileNonSample = schema(column).dataType match {
case DoubleType => new DoubleQuantileNonSample(sketchSize, shrinkingFactor)
case FloatType => new FloatQuantileNonSample(sketchSize, shrinkingFactor)
case ByteType => new ByteQuantileNonSample(sketchSize, shrinkingFactor)
case ShortType => new ShortQuantileNonSample(sketchSize, shrinkingFactor)
case IntegerType => new IntQuantileNonSample(sketchSize, shrinkingFactor)
case LongType => new LongQuantileNonSample(sketchSize, shrinkingFactor)
// TODO at the moment, we will throw exceptions for Decimals
case _ => throw new IllegalArgumentException(s"Cannot handle ${schema(column).dataType}")
}
column -> sketch
}
}