Search in sources :

Example 6 with Join

use of uk.gov.gchq.gaffer.operation.impl.join.Join in project Gaffer by gchq.

the class JoinIT method shouldRightKeyInnerJoin.

@Test
public void shouldRightKeyInnerJoin() throws OperationException {
    // Given
    final List<Element> expectedResults = innerJoinElements;
    Join<Element> joinOp = new Join.Builder<Element>().input(inputElements).operation(rhsGetElementsOperation).joinType(JoinType.INNER).matchKey(MatchKey.RIGHT).matchMethod(new ElementMatch(TestPropertyNames.COUNT)).flatten(false).build();
    // When
    final Iterable<? extends MapTuple> results = graph.execute(joinOp, getUser());
    // Then
    assertKeysExist(expectedResults, results, MatchKey.RIGHT);
}
Also used : ElementMatch(uk.gov.gchq.gaffer.store.operation.handler.join.match.ElementMatch) Element(uk.gov.gchq.gaffer.data.element.Element) Join(uk.gov.gchq.gaffer.operation.impl.join.Join) Test(org.junit.Test)

Example 7 with Join

use of uk.gov.gchq.gaffer.operation.impl.join.Join in project Gaffer by gchq.

the class JoinIT method shouldLeftKeyFullJoin.

@Test
public void shouldLeftKeyFullJoin() throws OperationException {
    // Given
    final List<Element> expectedResults = new ArrayList<>(inputElements);
    Join<Element> joinOp = new Join.Builder<Element>().input(inputElements).operation(rhsGetElementsOperation).joinType(JoinType.FULL).matchKey(MatchKey.LEFT).matchMethod(new ElementMatch(TestPropertyNames.COUNT)).flatten(false).build();
    // When
    final Iterable<? extends MapTuple> results = graph.execute(joinOp, getUser());
    // Then
    assertKeysExist(expectedResults, results, MatchKey.LEFT);
}
Also used : ElementMatch(uk.gov.gchq.gaffer.store.operation.handler.join.match.ElementMatch) Element(uk.gov.gchq.gaffer.data.element.Element) ArrayList(java.util.ArrayList) Join(uk.gov.gchq.gaffer.operation.impl.join.Join) Test(org.junit.Test)

Example 8 with Join

use of uk.gov.gchq.gaffer.operation.impl.join.Join in project Gaffer by gchq.

the class JoinIT method shouldRightKeyFullJoin.

@Test
public void shouldRightKeyFullJoin() throws OperationException {
    // Given
    final List<Element> expectedResults = innerJoinElements;
    expectedResults.add(getJoinEntity(TestGroups.ENTITY_3, 8));
    Join<Element> joinOp = new Join.Builder<Element>().input(inputElements).operation(rhsGetElementsOperation).joinType(JoinType.FULL).matchKey(MatchKey.RIGHT).matchMethod(new ElementMatch(TestPropertyNames.COUNT)).flatten(false).build();
    // When
    final Iterable<? extends MapTuple> results = graph.execute(joinOp, getUser());
    // Then
    assertKeysExist(expectedResults, results, MatchKey.RIGHT);
}
Also used : ElementMatch(uk.gov.gchq.gaffer.store.operation.handler.join.match.ElementMatch) Element(uk.gov.gchq.gaffer.data.element.Element) Join(uk.gov.gchq.gaffer.operation.impl.join.Join) Test(org.junit.Test)

Example 9 with Join

use of uk.gov.gchq.gaffer.operation.impl.join.Join in project Gaffer by gchq.

the class JoinIT method shouldRightSideFullJoinUsingKeyFunctionMatch.

@Test
public void shouldRightSideFullJoinUsingKeyFunctionMatch() throws OperationException {
    // Given
    final Map map = new Map.Builder<>().input(Lists.newArrayList(2L, 1L, 2L, 3L)).first(new Identity()).build();
    final ArrayList<Entity> input = Lists.newArrayList(getJoinEntity(TestGroups.ENTITY, 1), getJoinEntity(TestGroups.ENTITY_2, 2), getJoinEntity(TestGroups.ENTITY_2, 2), getJoinEntity(TestGroups.ENTITY_5, 5));
    final Join<Object> leftJoin = new Join.Builder<>().flatten(false).matchKey(MatchKey.RIGHT).joinType(JoinType.FULL).operation(map).matchMethod(new KeyFunctionMatch(new ToLong(), new ExtractProperty("count"))).input(input).build();
    // When
    final Iterable<? extends MapTuple> results = graph.execute(leftJoin, user);
    final List<java.util.Map> loadedResults = new ArrayList<>();
    results.forEach(e -> loadedResults.add(e.getValues()));
    // Then
    assertThat(loadedResults).hasSize(4);
    assertThat(loadedResults.get(0)).containsEntry(MatchKey.LEFT.name(), Lists.newArrayList(getJoinEntity(TestGroups.ENTITY_2, 2), getJoinEntity(TestGroups.ENTITY_2, 2))).containsEntry(MatchKey.RIGHT.name(), 2L);
    assertThat(loadedResults.get(1)).containsEntry(MatchKey.LEFT.name(), Lists.newArrayList(getJoinEntity(TestGroups.ENTITY, 1))).containsEntry(MatchKey.RIGHT.name(), 1L);
    assertThat(loadedResults.get(2)).containsEntry(MatchKey.LEFT.name(), Lists.newArrayList(getJoinEntity(TestGroups.ENTITY_2, 2), getJoinEntity(TestGroups.ENTITY_2, 2))).containsEntry(MatchKey.RIGHT.name(), 2L);
    assertThat(loadedResults.get(3)).containsEntry(MatchKey.LEFT.name(), Lists.newArrayList()).containsEntry(MatchKey.RIGHT.name(), 3L);
}
Also used : ToLong(uk.gov.gchq.koryphe.impl.function.ToLong) Entity(uk.gov.gchq.gaffer.data.element.Entity) ArrayList(java.util.ArrayList) Join(uk.gov.gchq.gaffer.operation.impl.join.Join) KeyFunctionMatch(uk.gov.gchq.gaffer.store.operation.handler.join.match.KeyFunctionMatch) ExtractProperty(uk.gov.gchq.gaffer.data.element.function.ExtractProperty) Identity(uk.gov.gchq.koryphe.impl.function.Identity) Map(uk.gov.gchq.gaffer.operation.impl.Map) Test(org.junit.Test)

Example 10 with Join

use of uk.gov.gchq.gaffer.operation.impl.join.Join in project Gaffer by gchq.

the class JoinIT method shouldRightSideInnerJoinUsingKeyFunctionMatch.

@Test
public void shouldRightSideInnerJoinUsingKeyFunctionMatch() throws OperationException {
    // Given
    final Map map = new Map.Builder<>().input(Lists.newArrayList(4L)).first(new Identity()).build();
    final ArrayList<Entity> input = Lists.newArrayList(getJoinEntity(TestGroups.ENTITY, 4), getJoinEntity(TestGroups.ENTITY_2, 4), getJoinEntity(TestGroups.ENTITY_3, 4));
    final Join<Object> rightJoin = new Join.Builder<>().flatten(true).matchKey(MatchKey.RIGHT).joinType(JoinType.INNER).operation(map).matchMethod(new KeyFunctionMatch(new Identity(), new ExtractProperty("count"))).input(input).build();
    // When
    final Iterable<? extends MapTuple> rightResults = graph.execute(rightJoin, user);
    final List<java.util.Map> loadedResults = new ArrayList<>();
    rightResults.forEach(e -> loadedResults.add(e.getValues()));
    // Then
    assertThat(loadedResults).hasSize(3);
    assertThat(loadedResults.get(0)).containsEntry(MatchKey.LEFT.name(), getJoinEntity(TestGroups.ENTITY, 4)).containsEntry(MatchKey.RIGHT.name(), 4L);
    assertThat(loadedResults.get(1)).containsEntry(MatchKey.LEFT.name(), getJoinEntity(TestGroups.ENTITY_2, 4)).containsEntry(MatchKey.RIGHT.name(), 4L);
    assertThat(loadedResults.get(2)).containsEntry(MatchKey.LEFT.name(), getJoinEntity(TestGroups.ENTITY_3, 4)).containsEntry(MatchKey.RIGHT.name(), 4L);
}
Also used : Entity(uk.gov.gchq.gaffer.data.element.Entity) ArrayList(java.util.ArrayList) Join(uk.gov.gchq.gaffer.operation.impl.join.Join) KeyFunctionMatch(uk.gov.gchq.gaffer.store.operation.handler.join.match.KeyFunctionMatch) ExtractProperty(uk.gov.gchq.gaffer.data.element.function.ExtractProperty) Identity(uk.gov.gchq.koryphe.impl.function.Identity) Map(uk.gov.gchq.gaffer.operation.impl.Map) Test(org.junit.Test)

Aggregations

Join (uk.gov.gchq.gaffer.operation.impl.join.Join)10 Test (org.junit.Test)6 ArrayList (java.util.ArrayList)5 Test (org.junit.jupiter.api.Test)4 Entity (uk.gov.gchq.gaffer.data.element.Entity)4 ElementMatch (uk.gov.gchq.gaffer.store.operation.handler.join.match.ElementMatch)4 Element (uk.gov.gchq.gaffer.data.element.Element)3 ExtractProperty (uk.gov.gchq.gaffer.data.element.function.ExtractProperty)3 OperationTest (uk.gov.gchq.gaffer.operation.OperationTest)3 Map (uk.gov.gchq.gaffer.operation.impl.Map)3 KeyFunctionMatch (uk.gov.gchq.gaffer.store.operation.handler.join.match.KeyFunctionMatch)3 Identity (uk.gov.gchq.koryphe.impl.function.Identity)3 ToLong (uk.gov.gchq.koryphe.impl.function.ToLong)2 GetAllElements (uk.gov.gchq.gaffer.operation.impl.get.GetAllElements)1 Match (uk.gov.gchq.gaffer.operation.impl.join.match.Match)1 JoinHandler (uk.gov.gchq.gaffer.store.operation.handler.join.JoinHandler)1