@PublicEvolving public interface SupportsProjectionPushDown
Given the following SQL:
CREATE TABLE t (i INT, r ROW < d DOUBLE, b BOOLEAN>, s STRING); SELECT s, r.d FROM t;
In the above example,
s are required fields. Other fields can be
skipped in a projection. Compared to table's schema, fields are reordered.
By default, if this interface is not implemented, a projection is applied in a subsequent operation after the source.
For efficiency, a source can push a projection further down in order to be close to the actual
data generation. A projection is only selecting fields that are used by a query (possibly in a
different field order). It does not contain any computation. A projection can either be performed
on the fields of the top-level row only or consider nested fields as well (see
Note: If a source implements
SupportsComputedColumnPushDown, the projection must be
applied to the physical data in the first step. The
(already aware of the projection) will then use the projected physical data and insert computed
columns into the result.
|Modifier and Type||Method and Description|
Provides the field index paths that should be used for a projection.
Returns whether this source supports nested projection.
void applyProjection(int projectedFields)
In the example mentioned in
SupportsProjectionPushDown, this method would receive:
projectedFields- field index paths of all fields that must be present in the physically produced data
Copyright © 2014–2021 The Apache Software Foundation. All rights reserved.