Refine search
@ScalarFunction @SqlType(ColorType.NAME) public static long rgb(@SqlType(StandardTypes.BIGINT) long red, @SqlType(StandardTypes.BIGINT) long green, @SqlType(StandardTypes.BIGINT) long blue) { checkCondition(red >= 0 && red <= 255, INVALID_FUNCTION_ARGUMENT, "red must be between 0 and 255"); checkCondition(green >= 0 && green <= 255, INVALID_FUNCTION_ARGUMENT, "green must be between 0 and 255"); checkCondition(blue >= 0 && blue <= 255, INVALID_FUNCTION_ARGUMENT, "blue must be between 0 and 255"); return (red << 16) | (green << 8) | blue; }
@Description("inverse of normal cdf given a mean, std, and probability") @ScalarFunction @SqlType(StandardTypes.DOUBLE) public static double inverseNormalCdf(@SqlType(StandardTypes.DOUBLE) double mean, @SqlType(StandardTypes.DOUBLE) double sd, @SqlType(StandardTypes.DOUBLE) double p) { checkCondition(p > 0 && p < 1, INVALID_FUNCTION_ARGUMENT, "p must be 0 > p > 1"); checkCondition(sd > 0, INVALID_FUNCTION_ARGUMENT, "sd must be > 0"); return mean + sd * 1.4142135623730951 * Erf.erfInv(2 * p - 1); }
/** * Interpolate a color between lowColor and highColor based on the provided value * <p/> * The value is truncated to the range [0, 1] if necessary * Color must be a valid rgb value of the form #rgb */ @ScalarFunction @SqlType(ColorType.NAME) public static long color(@SqlType(StandardTypes.DOUBLE) double fraction, @SqlType(ColorType.NAME) long lowColor, @SqlType(ColorType.NAME) long highColor) { checkCondition(lowColor >= 0, INVALID_FUNCTION_ARGUMENT, "lowColor not a valid RGB color"); checkCondition(highColor >= 0, INVALID_FUNCTION_ARGUMENT, "highColor not a valid RGB color"); fraction = Math.min(1, fraction); fraction = Math.max(0, fraction); return interpolate((float) fraction, lowColor, highColor); }
@Description("a pseudo-random number between 0 and value (exclusive)") @ScalarFunction(value = "random", alias = "rand", deterministic = false) @SqlType(StandardTypes.SMALLINT) public static long randomSmallint(@SqlType(StandardTypes.SMALLINT) long value) { checkCondition(value > 0, INVALID_FUNCTION_ARGUMENT, "bound must be positive"); return ThreadLocalRandom.current().nextInt((int) value); }
@Description("a pseudo-random number between 0 and value (exclusive)") @ScalarFunction(alias = "rand", deterministic = false) @SqlType(StandardTypes.BIGINT) public static long random(@SqlType(StandardTypes.BIGINT) long value) { checkCondition(value > 0, INVALID_FUNCTION_ARGUMENT, "bound must be positive"); return ThreadLocalRandom.current().nextLong(value); }
@ScalarFunction("sequence") @SqlType("array(date)") public static Block sequenceDateDayToSecond( @SqlType(StandardTypes.DATE) long start, @SqlType(StandardTypes.DATE) long stop, @SqlType(StandardTypes.INTERVAL_DAY_TO_SECOND) long step) { checkCondition( step % TimeUnit.DAYS.toMillis(1) == 0, INVALID_FUNCTION_ARGUMENT, "sequence step must be a day interval if start and end values are dates"); return fixedWidthSequence(start, stop, step / TimeUnit.DAYS.toMillis(1), DATE); }
@Description("a pseudo-random number between 0 and value (exclusive)") @ScalarFunction(value = "random", alias = "rand", deterministic = false) @SqlType(StandardTypes.TINYINT) public static long randomTinyint(@SqlType(StandardTypes.TINYINT) long value) { checkCondition(value > 0, INVALID_FUNCTION_ARGUMENT, "bound must be positive"); return ThreadLocalRandom.current().nextInt((int) value); }
@Description("a pseudo-random number between 0 and value (exclusive)") @ScalarFunction(value = "random", alias = "rand", deterministic = false) @SqlType(StandardTypes.INTEGER) public static long randomInteger(@SqlType(StandardTypes.INTEGER) long value) { checkCondition(value > 0, INVALID_FUNCTION_ARGUMENT, "bound must be positive"); return ThreadLocalRandom.current().nextInt((int) value); }
@Description("absolute value") @ScalarFunction @SqlType(StandardTypes.BIGINT) public static long abs(@SqlType(StandardTypes.BIGINT) long num) { checkCondition(num != Long.MIN_VALUE, NUMERIC_VALUE_OUT_OF_RANGE, "Value -9223372036854775808 is out of range for abs(bigint)"); return Math.abs(num); }
@Description("absolute value") @ScalarFunction("abs") @SqlType(StandardTypes.SMALLINT) public static long absSmallint(@SqlType(StandardTypes.SMALLINT) long num) { checkCondition(num != Short.MIN_VALUE, NUMERIC_VALUE_OUT_OF_RANGE, "Value -32768 is out of range for abs(smallint)"); return Math.abs(num); }
@Description("absolute value") @ScalarFunction("abs") @SqlType(StandardTypes.INTEGER) public static long absInteger(@SqlType(StandardTypes.INTEGER) long num) { checkCondition(num != Integer.MIN_VALUE, NUMERIC_VALUE_OUT_OF_RANGE, "Value -2147483648 is out of range for abs(integer)"); return Math.abs(num); }
@Description("absolute value") @ScalarFunction("abs") @SqlType(StandardTypes.TINYINT) public static long absTinyint(@SqlType(StandardTypes.TINYINT) long num) { checkCondition(num != Byte.MIN_VALUE, NUMERIC_VALUE_OUT_OF_RANGE, "Value -128 is out of range for abs(tinyint)"); return Math.abs(num); }
@Description("normal cdf given a mean, standard deviation, and value") @ScalarFunction @SqlType(StandardTypes.DOUBLE) public static double normalCdf( @SqlType(StandardTypes.DOUBLE) double mean, @SqlType(StandardTypes.DOUBLE) double standardDeviation, @SqlType(StandardTypes.DOUBLE) double value) { checkCondition(standardDeviation > 0, INVALID_FUNCTION_ARGUMENT, "standardDeviation must be > 0"); return 0.5 * (1 + Erf.erf((value - mean) / (standardDeviation * Math.sqrt(2)))); }
@Description("Beta cdf given the a, b parameters and value") @ScalarFunction @SqlType(StandardTypes.DOUBLE) public static double betaCdf( @SqlType(StandardTypes.DOUBLE) double a, @SqlType(StandardTypes.DOUBLE) double b, @SqlType(StandardTypes.DOUBLE) double value) { checkCondition(value >= 0 && value <= 1, INVALID_FUNCTION_ARGUMENT, "value must be 0 >= v >= 1"); checkCondition(a > 0 && b > 0, INVALID_FUNCTION_ARGUMENT, "a, b must be > 0"); BetaDistribution distribution = new BetaDistribution(null, a, b, BetaDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); return distribution.cumulativeProbability(value); }
@Description("inverse of Beta cdf given a, b parameters and probability") @ScalarFunction @SqlType(StandardTypes.DOUBLE) public static double inverseBetaCdf( @SqlType(StandardTypes.DOUBLE) double a, @SqlType(StandardTypes.DOUBLE) double b, @SqlType(StandardTypes.DOUBLE) double p) { checkCondition(p >= 0 && p <= 1, INVALID_FUNCTION_ARGUMENT, "p must be 0 >= p >= 1"); checkCondition(a > 0 && b > 0, INVALID_FUNCTION_ARGUMENT, "a, b must be > 0"); BetaDistribution distribution = new BetaDistribution(null, a, b, BetaDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); return distribution.inverseCumulativeProbability(p); }
@SqlType("array(unknown)") public static Block repeat( @SqlNullable @SqlType("unknown") Boolean element, @SqlType(StandardTypes.INTEGER) long count) { checkCondition(element == null, INVALID_FUNCTION_ARGUMENT, "expect null values"); BlockBuilder blockBuilder = createBlockBuilder(UNKNOWN, count); return repeatNullValues(blockBuilder, count); }
@Description("decode the 64-bit big-endian binary in IEEE 754 double-precision floating-point format") @ScalarFunction("from_ieee754_64") @SqlType(StandardTypes.DOUBLE) public static double fromIEEE754Binary64(@SqlType(StandardTypes.VARBINARY) Slice slice) { checkCondition(slice.length() == Double.BYTES, INVALID_FUNCTION_ARGUMENT, "Input floating-point value must be exactly 8 bytes long"); return Double.longBitsToDouble(Long.reverseBytes(slice.getLong(0))); }
@Description("decode the 32-bit big-endian binary in IEEE 754 single-precision floating-point format") @ScalarFunction("from_ieee754_32") @SqlType(StandardTypes.REAL) public static long fromIEEE754Binary32(@SqlType(StandardTypes.VARBINARY) Slice slice) { checkCondition(slice.length() == Integer.BYTES, INVALID_FUNCTION_ARGUMENT, "Input floating-point value must be exactly 4 bytes long"); return Integer.reverseBytes(slice.getInt(0)); }
@Description("The bucket number of a value given a lower and upper bound and the number of buckets") @ScalarFunction("width_bucket") @SqlType(StandardTypes.BIGINT) public static long widthBucket(@SqlType(StandardTypes.DOUBLE) double operand, @SqlType(StandardTypes.DOUBLE) double bound1, @SqlType(StandardTypes.DOUBLE) double bound2, @SqlType(StandardTypes.BIGINT) long bucketCount) checkCondition(bucketCount > 0, INVALID_FUNCTION_ARGUMENT, "bucketCount must be greater than 0"); checkCondition(!isNaN(operand), INVALID_FUNCTION_ARGUMENT, "operand must not be NaN"); checkCondition(isFinite(bound1), INVALID_FUNCTION_ARGUMENT, "first bound must be finite"); checkCondition(isFinite(bound2), INVALID_FUNCTION_ARGUMENT, "second bound must be finite"); checkCondition(bound1 != bound2, INVALID_FUNCTION_ARGUMENT, "bounds cannot equal each other");
@Description("returns Unicode code point of a single character string") @ScalarFunction("codepoint") @SqlType(StandardTypes.INTEGER) public static long codepoint(@SqlType("varchar(1)") Slice slice) { checkCondition(countCodePoints(slice) == 1, INVALID_FUNCTION_ARGUMENT, "Input string must be a single character string"); return getCodePointAt(slice, 0); }