Skip to content

Commit 39ce889

Browse files
committed
fix entity.graphql & timestamp mappers
1 parent 900c914 commit 39ce889

File tree

4 files changed

+143
-13
lines changed

4 files changed

+143
-13
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.linkedin.datahub.graphql.types.common.mappers;
2+
3+
import com.linkedin.datahub.graphql.QueryContext;
4+
import com.linkedin.datahub.graphql.generated.TimeStamp; // Note this import - the GraphQL TimeStamp
5+
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
6+
import javax.annotation.Nonnull;
7+
import javax.annotation.Nullable;
8+
9+
public class TimeStampMapper implements ModelMapper<com.linkedin.common.TimeStamp, TimeStamp> {
10+
11+
public static final TimeStampMapper INSTANCE = new TimeStampMapper();
12+
13+
public static TimeStamp map(
14+
@Nullable QueryContext context, @Nonnull final com.linkedin.common.TimeStamp timestamp) {
15+
return INSTANCE.apply(context, timestamp);
16+
}
17+
18+
@Override
19+
public TimeStamp apply(
20+
@Nullable QueryContext context, @Nonnull final com.linkedin.common.TimeStamp timestamp) {
21+
final TimeStamp result = new TimeStamp();
22+
result.setTime(timestamp.getTime());
23+
if (timestamp.hasActor()) {
24+
result.setActor(timestamp.getActor().toString());
25+
}
26+
return result;
27+
}
28+
}

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/dataprocessinst/mappers/DataProcessInstanceMapper.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import com.linkedin.datahub.graphql.QueryContext;
88
import com.linkedin.datahub.graphql.generated.DataProcessInstance;
99
import com.linkedin.datahub.graphql.generated.EntityType;
10-
import com.linkedin.datahub.graphql.types.common.mappers.AuditStampMapper;
10+
import com.linkedin.datahub.graphql.types.common.mappers.TimeStampMapper;
1111
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
1212
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
1313
import com.linkedin.dataprocess.DataProcessInstanceProperties;
@@ -50,11 +50,13 @@ private void mapDataProcessProperties(
5050
DataProcessInstanceProperties dataProcessInstanceProperties =
5151
new DataProcessInstanceProperties(dataMap);
5252
dpi.setName(dataProcessInstanceProperties.getName());
53-
if (dataProcessInstanceProperties.hasCreated()) {
54-
dpi.setCreated(AuditStampMapper.map(context, dataProcessInstanceProperties.getCreated()));
55-
}
53+
54+
com.linkedin.datahub.graphql.generated.DataProcessInstanceProperties properties =
55+
new com.linkedin.datahub.graphql.generated.DataProcessInstanceProperties();
56+
properties.setCreated(TimeStampMapper.map(context, dataProcessInstanceProperties.getCreated()));
5657
if (dataProcessInstanceProperties.hasExternalUrl()) {
5758
dpi.setExternalUrl(dataProcessInstanceProperties.getExternalUrl().toString());
5859
}
60+
dpi.setProperties(properties);
5961
}
6062
}

datahub-graphql-core/src/main/resources/entity.graphql

+107-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ Root type used for fetching DataHub Metadata
1414
Coming soon listEntity queries for listing all entities of a given type
1515
"""
1616
type Query {
17+
_empty: String
18+
}
19+
20+
21+
extend type Query {
1722
"""
1823
Fetch a Data Platform by primary key (urn)
1924
"""
@@ -262,8 +267,16 @@ type Query {
262267
Fetch all Business Attributes
263268
"""
264269
listBusinessAttributes(input: ListBusinessAttributesInput!): ListBusinessAttributesResult
270+
271+
"""
272+
Fetch a Data Process Instance by primary key (urn)
273+
"""
274+
dataProcessInstance(urn: String!): DataProcessInstance
275+
276+
265277
}
266278

279+
267280
"""
268281
An ERModelRelationship is a high-level abstraction that dictates what datasets fields are erModelRelationshiped.
269282
"""
@@ -6581,12 +6594,12 @@ type DataProcessInstance implements EntityWithRelationships & Entity {
65816594
"""
65826595
When the run was kicked off
65836596
"""
6584-
created: AuditStamp
6597+
created: AuditStamp!
65856598

65866599
"""
65876600
The name of the data process
65886601
"""
6589-
name: String
6602+
name: String!
65906603

65916604
"""
65926605
Edges extending from this entity.
@@ -9483,6 +9496,18 @@ type AuditStamp {
94839496
actor: String
94849497
}
94859498

9499+
type TimeStamp {
9500+
"""
9501+
When did the event occur
9502+
"""
9503+
time: Long!
9504+
9505+
"""
9506+
The actor involved in the event
9507+
"""
9508+
actor: String
9509+
}
9510+
94869511
"""
94879512
Input for creating a new group
94889513
"""
@@ -9829,9 +9854,13 @@ type MLModelGroup implements EntityWithRelationships & Entity & BrowsableEntity
98299854

98309855
type MLModelGroupProperties {
98319856

9832-
description: String
9857+
description: String
98339858

9834-
createdAt: Long
9859+
createdAt: Long @deprecated(reason: "Use `created` instead")
9860+
9861+
created: TimeStamp
9862+
9863+
lastModified: TimeStamp
98359864

98369865
version: VersionTag
98379866
}
@@ -9994,9 +10023,16 @@ type MLMetric {
999410023

999510024
type MLModelProperties {
999610025

10026+
"""
10027+
The name of the model used in display
10028+
"""
10029+
name: String!
10030+
999710031
description: String
999810032

9999-
date: Long
10033+
date: Long @deprecated(reason: "Use `created` instead")
10034+
10035+
lastModified: TimeStamp
1000010036

1000110037
version: String
1000210038

@@ -10008,6 +10044,8 @@ type MLModelProperties {
1000810044

1000910045
trainingMetrics: [MLMetric]
1001010046

10047+
trainingJobs: [String!]
10048+
1001110049
mlFeatures: [String!]
1001210050

1001310051
tags: [String!]
@@ -10017,6 +10055,8 @@ type MLModelProperties {
1001710055
customProperties: [CustomPropertiesEntry!]
1001810056

1001910057
externalUrl: String
10058+
10059+
created: TimeStamp
1002010060
}
1002110061

1002210062
type MLFeatureProperties {
@@ -12793,3 +12833,65 @@ type CronSchedule {
1279312833
"""
1279412834
timezone: String!
1279512835
}
12836+
12837+
12838+
type DataProcessInstanceProperties {
12839+
12840+
name: String!
12841+
12842+
externalUrl: String
12843+
12844+
created: TimeStamp
12845+
12846+
customProperties: [CustomPropertiesEntry!]
12847+
}
12848+
12849+
12850+
type MLTrainingRunProperties {
12851+
12852+
id: String
12853+
12854+
outputUrls: [String]
12855+
12856+
hyperParams: [MLHyperParam]
12857+
12858+
trainingMetrics: [MLMetric]
12859+
}
12860+
12861+
extend type DataProcessInstance {
12862+
12863+
"""
12864+
Additional read only properties associated with the Data Job
12865+
"""
12866+
properties: DataProcessInstanceProperties
12867+
12868+
"""
12869+
Additional properties when subtype is Training Run
12870+
"""
12871+
mlTrainingRunProperties: MLTrainingRunProperties
12872+
12873+
"""
12874+
The specific instance of the data platform that this entity belongs to
12875+
"""
12876+
dataPlatformInstance: DataPlatformInstance
12877+
12878+
"""
12879+
Sub Types that this entity implements
12880+
"""
12881+
subTypes: SubTypes
12882+
12883+
"""
12884+
The parent container in which the entity resides
12885+
"""
12886+
container: Container
12887+
12888+
"""
12889+
Standardized platform urn where the data process instance is defined
12890+
"""
12891+
platform: DataPlatform!
12892+
12893+
"""
12894+
Recursively get the lineage of containers for this entity
12895+
"""
12896+
parentContainers: ParentContainersResult
12897+
}

metadata-integration/java/openlineage-converter/src/main/java/io/datahubproject/openlineage/converter/OpenLineageToDataHub.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -706,12 +706,10 @@ private static DataProcessInstanceProperties getJobDataProcessInstanceProperties
706706
OpenLineage.RunEvent event) throws URISyntaxException {
707707
DataProcessInstanceProperties dpiProperties = new DataProcessInstanceProperties();
708708
dpiProperties.setName(event.getRun().getRunId().toString());
709-
AuditStamp auditStamp = new AuditStamp();
709+
TimeStamp timeStamp = new TimeStamp();
710710
if (event.getEventTime() != null) {
711-
auditStamp.setTime(event.getEventTime().toInstant().toEpochMilli());
711+
dpiProperties.setCreated(timeStamp.setTime(event.getEventTime().toInstant().toEpochMilli()));
712712
}
713-
auditStamp.setActor(Urn.createFromString(URN_LI_CORPUSER_DATAHUB));
714-
dpiProperties.setCreated(auditStamp);
715713
return dpiProperties;
716714
}
717715

0 commit comments

Comments
 (0)