Package org.apache.iceberg.transforms
Interface Transform<S,T>
- Type Parameters:
S
- Java class of source valuesT
- Java class of transformed values
- All Superinterfaces:
Serializable
- All Known Implementing Classes:
Days
,Hours
,Months
,UnknownTransform
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 Summary
Modifier and TypeMethodDescriptiondefault T
Deprecated.default SerializableFunction
<S, T> Returns a function that applies this transform to values of the giventype
.boolean
canTransform
(Type type) Checks whether this function can be applied to the givenType
.default String
Return the unique transform name to check if similar transforms for the same source field are added multiple times in partition spec builder.getResultType
(Type sourceType) Returns theType
produced by this transform given a source type.default boolean
Return whether this transform is the identity transform.default boolean
isVoid()
Return whether this transform is the void transform.default boolean
Whether the transform preserves the order of values (is monotonic).project
(String name, BoundPredicate<S> predicate) Transforms apredicate
to an inclusive predicate on the partition values produced by the transform.projectStrict
(String name, BoundPredicate<S> predicate) Transforms apredicate
to a strict predicate on the partition values produced by the transform.default boolean
satisfiesOrderOf
(Transform<?, ?> other) Whether ordering by this transform's result satisfies the ordering of another transform's result.default String
toHumanString
(Type type, T value) default String
toHumanString
(T value) Deprecated.usetoHumanString(Type, Object)
instead; will be removed in 2.0.0
-
Method Details
-
apply
Deprecated.usebind(Type)
instead; will be removed in 2.0.0Transforms a value to its corresponding partition value.- Parameters:
value
- a source value- Returns:
- a transformed partition value
-
bind
Returns a function that applies this transform to values of the giventype
. -
canTransform
Checks whether this function can be applied to the givenType
.- Parameters:
type
- a type- Returns:
- true if this transform can be applied to the type, false otherwise
-
getResultType
Returns theType
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
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
Transforms apredicate
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 valuespredicate
- a predicate for source values- Returns:
- an inclusive predicate on partition values
-
projectStrict
Transforms apredicate
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 valuespredicate
- 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.usetoHumanString(Type, Object)
instead; will be removed in 2.0.0Returns 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
-
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
-
bind(Type)
instead; will be removed in 2.0.0