From 19bc2e46bf24f11cc10186be91ae72520d0c066d Mon Sep 17 00:00:00 2001 From: Sai Kaushik Ponnekanti Date: Sun, 12 Apr 2026 15:51:47 -0700 Subject: [PATCH 1/2] feat: include outputFacets and inputFacets in Dataset API responses Update the DatasetDao SQL queries (findDatasetByName and findAll) to include facets of type 'output' in addition to the existing 'dataset', 'unknown', and 'input' types. Previously, facets reported as outputFacets (e.g., OutputStatistics) or inputFacets (e.g., DataQualityMetrics, DataQualityAssertions) by OpenLineage integrations were stored in the dataset_facets table with their correct type but were filtered out by the query because it only matched 'dataset', 'unknown', and 'input' types. Note: 'input' type was already included in findDatasetByName but 'output' was missing from both queries. The findAll query was also missing 'output'. Closes #1746 --- api/src/main/java/marquez/db/DatasetDao.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/marquez/db/DatasetDao.java b/api/src/main/java/marquez/db/DatasetDao.java index 48a48da246..8d3d29c2e1 100644 --- a/api/src/main/java/marquez/db/DatasetDao.java +++ b/api/src/main/java/marquez/db/DatasetDao.java @@ -87,7 +87,7 @@ LEFT JOIN ( JSONB_AGG(df.facet ORDER BY df.lineage_event_time ASC) AS facets FROM dataset_facets AS df WHERE df.facet IS NOT NULL AND - (df.type ILIKE 'dataset' OR df.type ILIKE 'unknown' OR df.type ILIKE 'input') AND + (df.type ILIKE 'dataset' OR df.type ILIKE 'unknown' OR df.type ILIKE 'input' OR df.type ILIKE 'output') AND df.dataset_uuid = (SELECT uuid FROM datasets WHERE name = :datasetName AND namespace_name = :namespaceName) GROUP BY df.dataset_version_uuid ) f ON f.dataset_version_uuid = d.current_version_uuid @@ -132,7 +132,8 @@ default void setFields(Dataset ds) { WHERE df.facet IS NOT NULL AND (df.type ILIKE 'dataset' OR df.type ILIKE 'unknown' - OR df.type ILIKE 'input') + OR df.type ILIKE 'input' + OR df.type ILIKE 'output') AND df.dataset_uuid IN (SELECT UUID FROM datasets_view From 18d7ddd5c9eb0a5512cd7e26eb275162ea3c009c Mon Sep 17 00:00:00 2001 From: Sai Kaushik Ponnekanti Date: Sun, 12 Apr 2026 15:53:06 -0700 Subject: [PATCH 2/2] feat: include output facets in DatasetVersion queries Update DatasetVersionDao SQL queries (findByUuid and findAll) to also include facets of type 'output' alongside the existing 'dataset', 'unknown', and 'input' types. This ensures that facets like OutputStatistics reported by OpenLineage integrations are returned in DatasetVersion API responses. --- api/src/main/java/marquez/db/DatasetVersionDao.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/marquez/db/DatasetVersionDao.java b/api/src/main/java/marquez/db/DatasetVersionDao.java index df06e714b4..28c3afd8ff 100644 --- a/api/src/main/java/marquez/db/DatasetVersionDao.java +++ b/api/src/main/java/marquez/db/DatasetVersionDao.java @@ -203,7 +203,7 @@ WITH selected_dataset_versions AS ( ), selected_dataset_version_facets AS ( SELECT dv.uuid, dv.dataset_name, dv.namespace_name, df.run_uuid, df.lineage_event_time, df.facet FROM selected_dataset_versions dv - LEFT JOIN dataset_facets_view df ON df.dataset_version_uuid = dv.uuid AND (df.type ILIKE 'dataset' OR df.type ILIKE 'unknown' OR df.type ILIKE 'input') + LEFT JOIN dataset_facets_view df ON df.dataset_version_uuid = dv.uuid AND (df.type ILIKE 'dataset' OR df.type ILIKE 'unknown' OR df.type ILIKE 'input' OR df.type ILIKE 'output') ) SELECT d.type, d.name, d.physical_name, d.namespace_name, d.source_name, d.description, dv.lifecycle_state,\s dv.created_at, dv.uuid AS current_version_uuid, dv.version, dv.dataset_schema_version_uuid, dv.fields, dv.run_uuid AS createdByRunUuid, @@ -273,7 +273,7 @@ LEFT JOIN ( facet as facets,lineage_event_time FROM dataset_facets_view WHERE - (type ILIKE 'dataset' OR type ILIKE 'unknown' OR type ILIKE 'input') + (type ILIKE 'dataset' OR type ILIKE 'unknown' OR type ILIKE 'input' OR type ILIKE 'output') ) f ON f.dataset_version_uuid = dv.uuid WHERE dv.namespace_name = :namespaceName AND dv.dataset_name = :datasetName