From 58b456c27dab04398380daa3e75fe7a303b234ea Mon Sep 17 00:00:00 2001 From: Aditya Radhakrishnan Date: Fri, 29 Apr 2022 12:02:57 -0700 Subject: [PATCH] feat(analytics): display glossary term percentage coverage (#4782) --- .../analytics/resolver/GetHighlightsResolver.java | 14 +++++++++----- .../linkedin/common/GlossaryTermAssociation.pdl | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/analytics/resolver/GetHighlightsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/analytics/resolver/GetHighlightsResolver.java index a0b919d1d1..6b8e0a8d8b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/analytics/resolver/GetHighlightsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/analytics/resolver/GetHighlightsResolver.java @@ -87,6 +87,8 @@ public final class GetHighlightsResolver implements DataFetcher> } int numEntitiesWithOwners = getNumEntitiesFiltered(index, ImmutableMap.of("hasOwners", ImmutableList.of("true"))); int numEntitiesWithTags = getNumEntitiesFiltered(index, ImmutableMap.of("hasTags", ImmutableList.of("true"))); + int numEntitiesWithGlossaryTerms = + getNumEntitiesFiltered(index, ImmutableMap.of("hasGlossaryTerms", ImmutableList.of("true"))); int numEntitiesWithDescription = getNumEntitiesFiltered(index, ImmutableMap.of("hasDescription", ImmutableList.of("true"))); @@ -94,18 +96,20 @@ public final class GetHighlightsResolver implements DataFetcher> if (numEntities > 0) { double percentWithOwners = 100.0 * numEntitiesWithOwners / numEntities; double percentWithTags = 100.0 * numEntitiesWithTags / numEntities; + double percentWithGlossaryTerms = 100.0 * numEntitiesWithGlossaryTerms / numEntities; double percentWithDescription = 100.0 * numEntitiesWithDescription / numEntities; if (entityType == EntityType.DOMAIN) { // Don't show percent with domain when asking for stats regarding domains - bodyText = String.format("%.2f%% have owners, %.2f%% have tags, %.2f%% have description!", percentWithOwners, - percentWithTags, percentWithDescription); + bodyText = + String.format("%.2f%% have owners, %.2f%% have tags, %.2f%% have glossary terms, %.2f%% have description!", + percentWithOwners, percentWithTags, percentWithGlossaryTerms, percentWithDescription); } else { int numEntitiesWithDomains = getNumEntitiesFiltered(index, ImmutableMap.of("hasDomain", ImmutableList.of("true"))); double percentWithDomains = 100.0 * numEntitiesWithDomains / numEntities; - bodyText = - String.format("%.2f%% have owners, %.2f%% have tags, %.2f%% have description, %.2f%% have domain assigned!", - percentWithOwners, percentWithTags, percentWithDescription, percentWithDomains); + bodyText = String.format( + "%.2f%% have owners, %.2f%% have tags, %.2f%% have glossary terms, %.2f%% have description, %.2f%% have domain assigned!", + percentWithOwners, percentWithTags, percentWithGlossaryTerms, percentWithDescription, percentWithDomains); } } return Optional.of(Highlight.builder().setTitle(title).setValue(numEntities).setBody(bodyText).build()); diff --git a/metadata-models/src/main/pegasus/com/linkedin/common/GlossaryTermAssociation.pdl b/metadata-models/src/main/pegasus/com/linkedin/common/GlossaryTermAssociation.pdl index e10507b525..3e833d13c2 100644 --- a/metadata-models/src/main/pegasus/com/linkedin/common/GlossaryTermAssociation.pdl +++ b/metadata-models/src/main/pegasus/com/linkedin/common/GlossaryTermAssociation.pdl @@ -10,6 +10,7 @@ record GlossaryTermAssociation { @Searchable = { "fieldName": "glossaryTerms", "fieldType": "URN", + "hasValuesFieldName": "hasGlossaryTerms", "addToFilters": true, "filterNameOverride": "Glossary Term" }