Interface Transform<S,T>

Type Parameters:
S - Java class of source values
T - Java class of transformed values
All Superinterfaces:
Serializable
All Known Implementing Classes:
Days, Hours, Months, UnknownTransform

public interface Transform<S,T> extends Serializable
A transform function used for partitioning.

Implementations of this interface can be used to transform values, check or types, and project predicates to predicates on partition values.

  • Method Details

    • apply

      @Deprecated default T apply(S value)
      Deprecated.
      use bind(Type) instead; will be removed in 2.0.0
      Transforms a value to its corresponding partition value.
      Parameters:
      value - a source value
      Returns:
      a transformed partition value
    • bind

      default SerializableFunction<S,T> bind(Type type)
      Returns a function that applies this transform to values of the given type.
      Parameters:
      type - an Iceberg Type
      Returns:
      a Function that applies this transform to values of the given type.
    • canTransform

      boolean canTransform(Type type)
      Checks whether this function can be applied to the given Type.
      Parameters:
      type - a type
      Returns:
      true if this transform can be applied to the type, false otherwise
    • getResultType

      Type getResultType(Type sourceType)
      Returns the Type produced by this transform given a source type.
      Parameters:
      sourceType - a type
      Returns:
      the result type created by the apply method for the given type
    • preservesOrder

      default boolean preservesOrder()
      Whether the transform preserves the order of values (is monotonic).

      A transform preserves order for values when for any given a and b, if a < b then apply(a) <= apply(b).

      Returns:
      true if the transform preserves the order of values
    • satisfiesOrderOf

      default boolean satisfiesOrderOf(Transform<?,?> other)
      Whether ordering by this transform's result satisfies the ordering of another transform's result.

      For example, sorting by day(ts) will produce an ordering that is also by month(ts) or year(ts). However, sorting by day(ts) will not satisfy the order of hour(ts) or identity(ts).

      Returns:
      true if ordering by this transform is equivalent to ordering by the other transform
    • project

      UnboundPredicate<T> project(String name, BoundPredicate<S> predicate)
      Transforms a predicate to an inclusive predicate on the partition values produced by the transform.

      This inclusive transform guarantees that if pred(v) is true, then projected(apply(v)) is true.

      Parameters:
      name - the field name for partition values
      predicate - a predicate for source values
      Returns:
      an inclusive predicate on partition values
    • projectStrict

      UnboundPredicate<T> projectStrict(String name, BoundPredicate<S> predicate)
      Transforms a predicate to a strict predicate on the partition values produced by the transform.

      This strict transform guarantees that if strict(apply(v)) is true, then pred(v) is also true.

      Parameters:
      name - the field name for partition values
      predicate - a predicate for source values
      Returns:
      an inclusive predicate on partition values
    • isIdentity

      default boolean isIdentity()
      Return whether this transform is the identity transform.
      Returns:
      true if this is an identity transform, false otherwise
    • isVoid

      default boolean isVoid()
      Return whether this transform is the void transform.
      Returns:
      true if this is a void transform, false otherwise
    • toHumanString

      @Deprecated default String toHumanString(T value)
      Deprecated.
      use toHumanString(Type, Object) instead; will be removed in 2.0.0
      Returns a human-readable String representation of a transformed value.

      null values will return "null"

      Parameters:
      value - a transformed value
      Returns:
      a human-readable String representation of the value
    • toHumanString

      default String toHumanString(Type type, T value)
    • dedupName

      default String dedupName()
      Return the unique transform name to check if similar transforms for the same source field are added multiple times in partition spec builder.
      Returns:
      a name used for dedup