public class SelectHelpers
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
SelectHelpers.RowSelectorContainer |
Modifier and Type | Field and Description |
---|---|
static SerializableFunction<java.util.List<java.lang.String>,java.lang.String> |
CONCAT_FIELD_NAMES
This policy keeps all levels of a name.
|
static SerializableFunction<java.util.List<java.lang.String>,java.lang.String> |
KEEP_NESTED_NAME
This policy keeps the raw nested field name.
|
Constructor and Description |
---|
SelectHelpers() |
Modifier and Type | Method and Description |
---|---|
static FieldAccessDescriptor |
allLeavesDescriptor(Schema schema,
SerializableFunction<java.util.List<java.lang.String>,java.lang.String> nameFn) |
static Schema |
getOutputSchema(Schema inputSchema,
FieldAccessDescriptor fieldAccessDescriptor)
Get the output schema resulting from selecting the given
FieldAccessDescriptor from the
given schema. |
static RowSelector |
getRowSelector(Schema inputSchema,
FieldAccessDescriptor fieldAccessDescriptor) |
static RowSelector |
getRowSelectorOptimized(Schema inputSchema,
FieldAccessDescriptor fieldAccessDescriptor) |
public static final SerializableFunction<java.util.List<java.lang.String>,java.lang.String> CONCAT_FIELD_NAMES
public static final SerializableFunction<java.util.List<java.lang.String>,java.lang.String> KEEP_NESTED_NAME
public static Schema getOutputSchema(Schema inputSchema, FieldAccessDescriptor fieldAccessDescriptor)
FieldAccessDescriptor
from the
given schema.
Fields are always extracted and then stored in a new Row. For example, consider the following Java POJOs:
class UserEvent {
String userId;
String eventId;
int eventType;
Location location;
}
class Location {
double latitude;
double longitude;
}
If selecting just the location field, then the returned schema will wrap that of the singular field being selected; in this case the returned schema will be a Row containing a single Location field. If location.latitude is selected, then the returned Schema will be a Row containing a double latitude field.
The same holds true when selecting from lists or maps. For example:
class EventList {
List<UserEvent> events;
}
If selecting events.location.latitude, the returned schema will contain a single array of Row, where that Row contains a single double latitude field; it will not contain an array of double.
public static RowSelector getRowSelectorOptimized(Schema inputSchema, FieldAccessDescriptor fieldAccessDescriptor)
public static RowSelector getRowSelector(Schema inputSchema, FieldAccessDescriptor fieldAccessDescriptor)
public static FieldAccessDescriptor allLeavesDescriptor(Schema schema, SerializableFunction<java.util.List<java.lang.String>,java.lang.String> nameFn)