mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-09 16:03:31 +00:00
Implement data process graph feature (#1695)
* implement data process graph feature; update the document * add unit test for data process graph * removed auto generated avro files * update image
This commit is contained in:
parent
7fc4d85ceb
commit
40f08ecaf1
Binary file not shown.
|
Before Width: | Height: | Size: 784 KiB After Width: | Height: | Size: 783 KiB |
@ -0,0 +1,40 @@
|
|||||||
|
package com.linkedin.metadata.builders.graph;
|
||||||
|
|
||||||
|
import com.linkedin.common.urn.DataProcessUrn;
|
||||||
|
import com.linkedin.data.template.RecordTemplate;
|
||||||
|
import com.linkedin.metadata.builders.graph.relationship.BaseRelationshipBuilder;
|
||||||
|
import com.linkedin.metadata.builders.graph.relationship.OwnedByBuilderFromOwnership;
|
||||||
|
import com.linkedin.metadata.entity.DataProcessEntity;
|
||||||
|
import com.linkedin.metadata.snapshot.DataProcessSnapshot;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
|
||||||
|
public class DataProcessGraphBuilder extends BaseGraphBuilder<DataProcessSnapshot> {
|
||||||
|
|
||||||
|
private static final Set<BaseRelationshipBuilder> RELATIONSHIP_BUILDERS =
|
||||||
|
Collections.unmodifiableSet(new HashSet<BaseRelationshipBuilder>() {
|
||||||
|
{
|
||||||
|
add(new OwnedByBuilderFromOwnership());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
public DataProcessGraphBuilder() {
|
||||||
|
super(DataProcessSnapshot.class, RELATIONSHIP_BUILDERS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
protected List<? extends RecordTemplate> buildEntities(@Nonnull DataProcessSnapshot snapshot) {
|
||||||
|
final DataProcessUrn urn = snapshot.getUrn();
|
||||||
|
final DataProcessEntity entity = new DataProcessEntity().setUrn(urn)
|
||||||
|
.setName(urn.getNameEntity())
|
||||||
|
.setOrchestrator(urn.getOrchestrator())
|
||||||
|
.setOrigin(urn.getOriginEntity());
|
||||||
|
|
||||||
|
return Collections.singletonList(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -21,6 +21,7 @@ public class RegisteredGraphBuilders {
|
|||||||
Collections.unmodifiableList(new LinkedList<BaseGraphBuilder>() {
|
Collections.unmodifiableList(new LinkedList<BaseGraphBuilder>() {
|
||||||
{
|
{
|
||||||
add(new CorpUserGraphBuilder());
|
add(new CorpUserGraphBuilder());
|
||||||
|
add(new DataProcessGraphBuilder());
|
||||||
add(new DatasetGraphBuilder());
|
add(new DatasetGraphBuilder());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -0,0 +1,37 @@
|
|||||||
|
package com.linkedin.metadata.builders.graph;
|
||||||
|
|
||||||
|
import com.linkedin.common.urn.DataProcessUrn;
|
||||||
|
import com.linkedin.data.template.RecordTemplate;
|
||||||
|
import com.linkedin.metadata.aspect.DataProcessAspectArray;
|
||||||
|
import com.linkedin.metadata.entity.DataProcessEntity;
|
||||||
|
import com.linkedin.metadata.snapshot.DataProcessSnapshot;
|
||||||
|
import java.util.List;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import static com.linkedin.metadata.utils.TestUtils.*;
|
||||||
|
import static org.testng.Assert.*;
|
||||||
|
|
||||||
|
|
||||||
|
public class DataProcessGraphBuilderTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBuildEntity() {
|
||||||
|
DataProcessUrn urn = makeDataProcessUrn("Sqoop ETL");
|
||||||
|
DataProcessSnapshot snapshot = new DataProcessSnapshot().setUrn(urn).setAspects(new DataProcessAspectArray());
|
||||||
|
DataProcessEntity expected = new DataProcessEntity().setUrn(urn)
|
||||||
|
.setName(urn.getNameEntity())
|
||||||
|
.setOrchestrator(urn.getOrchestrator())
|
||||||
|
.setOrigin(urn.getOriginEntity());
|
||||||
|
|
||||||
|
List<? extends RecordTemplate> dataProcessEntities = new DataProcessGraphBuilder().buildEntities(snapshot);
|
||||||
|
|
||||||
|
assertEquals(dataProcessEntities.size(), 1);
|
||||||
|
assertEquals(dataProcessEntities.get(0), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBuilderRegistered() {
|
||||||
|
assertEquals(RegisteredGraphBuilders.getGraphBuilder(DataProcessSnapshot.class).get().getClass(),
|
||||||
|
DataProcessGraphBuilder.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,6 +8,9 @@ import com.linkedin.common.OwnershipType
|
|||||||
@pairings = [ {
|
@pairings = [ {
|
||||||
"destination" : "com.linkedin.common.urn.CorpuserUrn",
|
"destination" : "com.linkedin.common.urn.CorpuserUrn",
|
||||||
"source" : "com.linkedin.common.urn.DatasetUrn"
|
"source" : "com.linkedin.common.urn.DatasetUrn"
|
||||||
|
}, {
|
||||||
|
"destination" : "com.linkedin.common.urn.CorpuserUrn",
|
||||||
|
"source" : "com.linkedin.common.urn.DataProcessUrn"
|
||||||
} ]
|
} ]
|
||||||
record OwnedBy includes BaseRelationship {
|
record OwnedBy includes BaseRelationship {
|
||||||
|
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.linkedin.common.OwnershipType;
|
|||||||
import com.linkedin.common.Status;
|
import com.linkedin.common.Status;
|
||||||
import com.linkedin.common.urn.CorpuserUrn;
|
import com.linkedin.common.urn.CorpuserUrn;
|
||||||
import com.linkedin.common.urn.DataPlatformUrn;
|
import com.linkedin.common.urn.DataPlatformUrn;
|
||||||
|
import com.linkedin.common.urn.DataProcessUrn;
|
||||||
import com.linkedin.common.urn.DatasetUrn;
|
import com.linkedin.common.urn.DatasetUrn;
|
||||||
import com.linkedin.common.urn.Urn;
|
import com.linkedin.common.urn.Urn;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -38,6 +39,11 @@ public class TestUtils {
|
|||||||
return new DatasetUrn(new DataPlatformUrn("mysql"), name, FabricType.DEV);
|
return new DatasetUrn(new DataPlatformUrn("mysql"), name, FabricType.DEV);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
public static DataProcessUrn makeDataProcessUrn(@Nonnull String name) {
|
||||||
|
return new DataProcessUrn("Azure Data Factory", name, FabricType.DEV);
|
||||||
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public static Owner makeOwner(@Nonnull String ldap) {
|
public static Owner makeOwner(@Nonnull String ldap) {
|
||||||
return makeOwner(ldap, OwnershipType.DEVELOPER);
|
return makeOwner(ldap, OwnershipType.DEVELOPER);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user