@Test public void testNestedFieldByName() { FieldAccessDescriptor fieldAccessDescriptor = FieldAccessDescriptor.withFieldNames("field1") .withNestedField("field1", FieldAccessDescriptor.withAllFields()); fieldAccessDescriptor = fieldAccessDescriptor.resolve(NESTED_SCHEMA2); assertTrue(fieldAccessDescriptor.fieldIdsAccessed().isEmpty()); assertEquals(1, fieldAccessDescriptor.nestedFields().size()); FieldAccessDescriptor nestedAccess = fieldAccessDescriptor.nestedFields().get(1); assertTrue(nestedAccess.allFields()); }
@Test public void testPartialAccessNestedField() { FieldAccessDescriptor level1 = FieldAccessDescriptor.withFieldNames("field2"); FieldAccessDescriptor level2 = FieldAccessDescriptor.withFieldNames("field1").withNestedField("field1", level1); FieldAccessDescriptor level3 = FieldAccessDescriptor.withFieldNames("field1").withNestedField("field1", level2); FieldAccessDescriptor resolved = level3.resolve(NESTED_SCHEMA2); assertTrue(resolved.fieldIdsAccessed().isEmpty()); assertEquals(1, resolved.nestedFields().size()); resolved = resolved.nestedFields().get(1); assertTrue(resolved.fieldIdsAccessed().isEmpty()); assertEquals(1, resolved.nestedFields().size()); resolved = resolved.nestedFields().get(1); assertEquals(Sets.newHashSet(2), resolved.fieldIdsAccessed()); }
@Test public void testNestedFieldById() { FieldAccessDescriptor fieldAccessDescriptor = FieldAccessDescriptor.withFieldNames("field1") .withNestedField(1, FieldAccessDescriptor.withAllFields()); fieldAccessDescriptor = fieldAccessDescriptor.resolve(NESTED_SCHEMA2); assertTrue(fieldAccessDescriptor.fieldIdsAccessed().isEmpty()); assertEquals(1, fieldAccessDescriptor.nestedFields().size()); FieldAccessDescriptor nestedAccess = fieldAccessDescriptor.nestedFields().get(1); assertTrue(nestedAccess.allFields()); }
@Test public void testArrayNestedField() { FieldAccessDescriptor level1 = FieldAccessDescriptor.withFieldNames("field2"); FieldAccessDescriptor level2 = FieldAccessDescriptor.withFieldNames("field1").withNestedField("field1", level1); FieldAccessDescriptor resolved = level2.resolve(NESTED_ARRAY_SCHEMA); assertTrue(resolved.fieldIdsAccessed().isEmpty()); assertEquals(1, resolved.nestedFields().size()); resolved = resolved.nestedFields().get(1); assertEquals(Sets.newHashSet(2), resolved.fieldIdsAccessed()); }
@Test public void testMapNestedField() { FieldAccessDescriptor level1 = FieldAccessDescriptor.withFieldNames("field2"); FieldAccessDescriptor level2 = FieldAccessDescriptor.withFieldNames("field1").withNestedField("field1", level1); FieldAccessDescriptor resolved = level2.resolve(NESTED_MAP_SCHEMA); assertTrue(resolved.fieldIdsAccessed().isEmpty()); assertEquals(1, resolved.nestedFields().size()); resolved = resolved.nestedFields().get(1); assertEquals(Sets.newHashSet(2), resolved.fieldIdsAccessed()); } }
@Test @Category(NeedsRunner.class) public void testSelectNestedAll() { PCollection<POJO2NestedAll> pojos = pipeline .apply(Create.of(new POJO2())) .apply( Select.fieldAccess( FieldAccessDescriptor.create() .withNestedField("field2", FieldAccessDescriptor.withAllFields()))) .apply(Convert.to(POJO2NestedAll.class)); PAssert.that(pojos).containsInAnyOrder(new POJO2NestedAll()); pipeline.run(); }
@Test @Category(NeedsRunner.class) public void testSelectNestedPartial() { PCollection<POJO2NestedPartial> pojos = pipeline .apply(Create.of(new POJO2())) .apply( Select.fieldAccess( FieldAccessDescriptor.create() .withNestedField( "field2", FieldAccessDescriptor.withFieldNames("field1", "field3")))) .apply(Convert.to(POJO2NestedPartial.class)); PAssert.that(pojos).containsInAnyOrder(new POJO2NestedPartial()); pipeline.run(); } }
.withNestedField("inner", FieldAccessDescriptor.withFieldNames("field1")); FieldAccessDescriptor field3Selector = FieldAccessDescriptor.create() .withNestedField("inner", FieldAccessDescriptor.withFieldNames("field3"));
.withNestedField("inner", FieldAccessDescriptor.withFieldNames("field1")); FieldAccessDescriptor field2Selector = FieldAccessDescriptor.create() .withNestedField("inner", FieldAccessDescriptor.withFieldNames("field2")); FieldAccessDescriptor field3Selector = FieldAccessDescriptor.create() .withNestedField("inner", FieldAccessDescriptor.withFieldNames("field3"));
FieldAccessDescriptor groupKeys = FieldAccessDescriptor.create() .withNestedField("inner", FieldAccessDescriptor.withFieldNames("field1", "field2")); PCollection<KV<Row, Iterable<OuterPOJO>>> grouped = pipeline