/** * Return a descriptor that access the specified fields. * * <p>By default, if the field is a nested row (or a container containing a row), all fields of * said rows are accessed. For finer-grained acccess to nested rows, call withNestedField and pass * in a recursive {@link FieldAccessDescriptor}. */ public static FieldAccessDescriptor withFieldIds(Integer... ids) { return withFieldIds(Arrays.asList(ids)); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsByFields<InputT> aggregateFieldsById( List<Integer> inputFieldIds, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, Field outputField) { return aggregateFields(FieldAccessDescriptor.withFieldIds(inputFieldIds), fn, outputField); }
/** * Returns a transform that groups all elements in the input {@link PCollection} keyed by the list * of fields specified. The output of this transform will be a {@link KV} keyed by a {@link Row} * containing the specified extracted fields. The returned transform contains further builder * methods to control how the grouping is done. */ public static <T> ByFields<T> byFieldIds(Integer... fieldIds) { return new ByFields<>(FieldAccessDescriptor.withFieldIds(fieldIds)); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateFieldsById( List<Integer> inputFieldIds, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, Field outputField) { return aggregateFields(FieldAccessDescriptor.withFieldIds(inputFieldIds), fn, outputField); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateFieldsById( List<Integer> inputFieldIds, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, String outputFieldName) { return aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldIds), fn, outputFieldName); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsByFields<InputT> aggregateFieldsById( List<Integer> inputFieldIds, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, Field outputField) { return aggregateFields(FieldAccessDescriptor.withFieldIds(inputFieldIds), fn, outputField); }
/** * Join by the following field ids. * * <p>The same field ids are used in all input PCollections. */ public static Inner byFieldIds(Integer... fieldIds) { return byFieldAccessDescriptor(FieldAccessDescriptor.withFieldIds(fieldIds)); }
/** Same as {@link #byFieldIds(Integer...)}. */ public static <T> ByFields<T> byFieldIds(Iterable<Integer> fieldIds) { return new ByFields<>(FieldAccessDescriptor.withFieldIds(fieldIds)); }
/** The same as {@link #aggregateFields} but with field ids. */ public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateFieldsById( List<Integer> inputFieldIds, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, String outputFieldName) { return aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldIds), fn, outputFieldName); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsByFields<InputT> aggregateFieldsById( List<Integer> inputFieldIds, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, String outputFieldName) { return aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldIds), fn, outputFieldName); }
/** * Select the following field ids for the specified PCollection. * * <p>Each PCollection in the input must have fields specified for the join key. */ public Inner byFieldIds(TupleTag<?> tag, Integer... fieldIds) { return byFieldAccessDescriptor(tag, FieldAccessDescriptor.withFieldIds(fieldIds)); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateFieldsById( List<Integer> inputFieldIds, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, Field outputField) { return aggregateFields(FieldAccessDescriptor.withFieldIds(inputFieldIds), fn, outputField); }
/** * Select the following field ids for the specified PCollection. * * <p>Each PCollection in the input must have fields specified for the join key. */ public static Inner byFieldIds(TupleTag<?> tag, Integer... fieldIds) { return byFieldAccessDescriptor(tag, FieldAccessDescriptor.withFieldIds(fieldIds)); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsByFields<InputT> aggregateField( int inputFieldId, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, String outputFieldName) { return new CombineFieldsByFields<>( byFields, schemaAggregateFn.aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldId), fn, outputFieldName)); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateField( int inputFieldId, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, Field outputField) { return new CombineFieldsGlobally<>( schemaAggregateFn.aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldId), fn, outputField)); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateField( int inputFieldId, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, String outputFieldName) { return new CombineFieldsGlobally<>( schemaAggregateFn.aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldId), fn, outputFieldName)); }
public <CombineInputT, AccumT, CombineOutputT> CombineFieldsByFields<InputT> aggregateField( int inputFieldId, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, String outputFieldName) { return new CombineFieldsByFields<>( this, SchemaAggregateFn.<InputT>create() .aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldId), fn, outputFieldName)); }
/** The same as {@link #aggregateField} but using field id. */ public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateField( int inputFieldId, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, String outputFieldName) { return new CombineFieldsGlobally<>( SchemaAggregateFn.<InputT>create() .aggregateFields( FieldAccessDescriptor.withFieldIds(inputFieldId), fn, outputFieldName)); }
/** The same as {@link #aggregateField} but using field id. */ public <CombineInputT, AccumT, CombineOutputT> CombineFieldsGlobally<InputT> aggregateField( int inputFielId, CombineFn<CombineInputT, AccumT, CombineOutputT> fn, Field outputField) { return new CombineFieldsGlobally<>( SchemaAggregateFn.<InputT>create() .aggregateFields(FieldAccessDescriptor.withFieldIds(inputFielId), fn, outputField)); }
@Test public void testFieldIds() { FieldAccessDescriptor fieldAccessDescriptor = FieldAccessDescriptor.withFieldIds(1, 3).resolve(SIMPLE_SCHEMA); assertEquals(Sets.newHashSet(1, 3), fieldAccessDescriptor.fieldIdsAccessed()); }