MINOR: Add support for search index column lineage (#16032)

This commit is contained in:
Mayur Singal 2024-04-25 14:15:02 +05:30 committed by GitHub
parent 5fe8024708
commit b14b191416
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 0 deletions

View File

@ -11,6 +11,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import org.openmetadata.schema.type.Column;
import org.openmetadata.schema.type.Field;
import org.openmetadata.schema.type.SearchIndexField;
import org.openmetadata.schema.type.TagLabel;
import org.openmetadata.service.exception.CatalogExceptionMessage;
import org.openmetadata.service.util.FullyQualifiedName;
@ -73,6 +74,14 @@ public final class ColumnUtil {
}
}
public static void validateSearchIndexFieldFQN(List<SearchIndexField> fields, String fieldFQN) {
boolean exists = findChildren(fields, "getChildren", fieldFQN);
if (!exists) {
throw new IllegalArgumentException(
CatalogExceptionMessage.invalidFieldName("field", fieldFQN));
}
}
public static Set<String> getAllTags(Column column) {
Set<String> tags = new HashSet<>();
if (!listOrEmpty(column.getTags()).isEmpty()) {

View File

@ -18,6 +18,7 @@ import static org.openmetadata.service.Entity.CONTAINER;
import static org.openmetadata.service.Entity.DASHBOARD;
import static org.openmetadata.service.Entity.DASHBOARD_DATA_MODEL;
import static org.openmetadata.service.Entity.MLMODEL;
import static org.openmetadata.service.Entity.SEARCH_INDEX;
import static org.openmetadata.service.Entity.TABLE;
import static org.openmetadata.service.Entity.TOPIC;
import static org.openmetadata.service.search.SearchClient.GLOBAL_SEARCH_ALIAS;
@ -39,6 +40,7 @@ import org.openmetadata.schema.entity.data.Container;
import org.openmetadata.schema.entity.data.Dashboard;
import org.openmetadata.schema.entity.data.DashboardDataModel;
import org.openmetadata.schema.entity.data.MlModel;
import org.openmetadata.schema.entity.data.SearchIndex;
import org.openmetadata.schema.entity.data.Table;
import org.openmetadata.schema.entity.data.Topic;
import org.openmetadata.schema.type.ColumnLineage;
@ -207,6 +209,11 @@ public class LineageRepository {
Entity.getEntity(TABLE, entityReference.getId(), "columns", Include.NON_DELETED);
ColumnUtil.validateColumnFQN(table.getColumns(), columnFQN);
}
case SEARCH_INDEX -> {
SearchIndex searchIndex =
Entity.getEntity(SEARCH_INDEX, entityReference.getId(), "fields", Include.NON_DELETED);
ColumnUtil.validateSearchIndexFieldFQN(searchIndex.getFields(), columnFQN);
}
case TOPIC -> {
Topic topic =
Entity.getEntity(TOPIC, entityReference.getId(), "messageSchema", Include.NON_DELETED);