A dataflow may contain multiple views, each of which may only be optimized locally. However, information like demand and predicate pushdown can be applied across views once we understand the context in which the views will be executed.
Optimizes the implementation of each dataflow.
Pushes demand through views in
view_sequence in order, removing
columns not demanded.
Pushes filters down through views in
view_sequence in order.
Propagates information about monotonic inputs through views.