@Experimental(value=SCHEMAS) 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)