Class DataViewUtils


  • @Internal
    public final class DataViewUtils
    extends Object
    Utilities to deal with DataViews.

    For aggregating functions: A DataView is a field that is either represented as a regular StructuredType or as a RawType that serializes to null when backed by a state backend. In the latter case, a DataViewSpec contains all information necessary to store and retrieve data from state.

    For process table functions: A DataView is a top-level instance that is always backed by a state backend.

    • Method Detail

      • isDataView

        public static boolean isDataView​(org.apache.flink.table.types.logical.LogicalType viewType,
                                         Class<? extends org.apache.flink.table.api.dataview.DataView> viewClass)
        Returns whether the given LogicalType qualifies as a DataView.
      • checkForInvalidDataViews

        public static void checkForInvalidDataViews​(org.apache.flink.table.types.logical.LogicalType type)
        Checks that the given type and its children do not contain data views.
      • extractDataViews

        public static List<DataViewSpec> extractDataViews​(int aggIndex,
                                                          org.apache.flink.table.types.DataType accumulatorDataType)
        Searches for data views in the data type of an accumulator and extracts them.
      • adjustDataViews

        public static org.apache.flink.table.types.DataType adjustDataViews​(org.apache.flink.table.types.DataType accumulatorDataType,
                                                                            boolean hasStateBackedDataViews)
        Modifies the data type of an accumulator regarding data views.

        For performance reasons, each data view is wrapped into a RAW type which gives it LazyBinaryFormat semantics and avoids multiple deserialization steps during access. Furthermore, a data view will not be serialized if a state backend is used (the serializer of the RAW type will be a NullSerializer in this case).

      • createDistinctViewDataType

        public static org.apache.flink.table.types.DataType createDistinctViewDataType​(org.apache.flink.table.types.DataType keyDataType,
                                                                                       int filterArgs,
                                                                                       int filterArgsLimit)
        Creates a special DataType for DISTINCT aggregates.