Skip to content

feat: Allow default openlineage configuration#6467

Merged
franciscojavierarceo merged 2 commits into
feast-dev:masterfrom
jacob-bush-shopify:openlineage-config
Jun 3, 2026
Merged

feat: Allow default openlineage configuration#6467
franciscojavierarceo merged 2 commits into
feast-dev:masterfrom
jacob-bush-shopify:openlineage-config

Conversation

@jacob-bush-shopify

@jacob-bush-shopify jacob-bush-shopify commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

The default behaviour of openlineage is to print to the console. However, feast does not allow standard openlineage configuration. By omitting the transport by default, we maintain the same default behaviour of printing to the console, but give much greater flexibility to end users. For example, this allows composite transports, filtering of events, etc.

Which issue(s) this PR fixes:

Checks

  • I've made sure the tests are passing.
  • My commits are signed off (git commit -s)
  • My PR title follows conventional commits format

Testing Strategy

  • Unit tests
  • Integration tests
  • Manual tests
  • Testing is not required for this change

Manual 🎩

Configuring openlineage

openlineage:
  enabled: true

Current default behaviour

❯ feast apply                                       
/Users/jacobbush/tmp/feast_demos/openlineage/exact_bobcat/feature_repo/feature_definitions.py:27: DeprecationWarning: Entity value_type will be mandatory in the next release. Please specify a value_type for entity 'driver'.
  driver = Entity(name="driver", join_keys=["driver_id"])
Applying changes for project exact_bobcat
/Users/jacobbush/tmp/feast_demos/openlineage/.venv/lib/python3.13/site-packages/feast/feature_store.py:690: RuntimeWarning: On demand feature view is an experimental feature. This API is stable, but the functionality does not scale well for offline retrieval
  warnings.warn(
No changes to registry
INFO:openlineage.client.client:OpenLineageClient will use `console` transport
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:36:57.247434+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "vals_to_add", "uri": "feast://vals_to_add"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "", "description": "", "field_mapping": {}, "name": "vals_to_add", "source_type": "RequestSource", "tags": {}, "timestamp_field": ""}}, "inputFacets": {}, "name": "vals_to_add", "namespace": "exact_bobcat"}, {"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "driver_hourly_stats_source", "uri": "data/driver_stats.parquet"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "created", "description": "", "field_mapping": {}, "name": "driver_hourly_stats_source", "source_type": "FileSource", "tags": {}, "timestamp_field": "event_timestamp"}}, "inputFacets": {}, "name": "driver_hourly_stats_source", "namespace": "exact_bobcat"}, {"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "driver_stats_push_source", "uri": "feast://driver_stats_push_source"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "", "description": "", "field_mapping": {}, "name": "driver_stats_push_source", "source_type": "PushSource", "tags": {}, "timestamp_field": ""}}, "inputFacets": {}, "name": "driver_stats_push_source", "namespace": "exact_bobcat"}, {"facets": {"feast_entity": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastEntityFacet.json", "description": "", "join_keys": ["driver_id"], "name": "driver", "owner": "", "tags": {}, "value_type": "ValueType.UNKNOWN"}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "driver_id", "type": "ValueType.UNKNOWN"}]}}, "inputFacets": {}, "name": "driver", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feast_feature_views_exact_bobcat", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["driver"], "features": ["conv_rate", "acc_rate", "avg_daily_trips", "driver_metadata", "driver_config", "driver_profile"], "name": "driver_hourly_stats", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {"team": "driver_performance"}, "ttl_seconds": 86400}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "name": "driver_hourly_stats", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["driver"], "features": ["conv_rate", "acc_rate", "avg_daily_trips", "driver_metadata", "driver_config", "driver_profile"], "name": "driver_hourly_stats_fresh", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {"team": "driver_performance"}, "ttl_seconds": 86400}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "name": "driver_hourly_stats_fresh", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["__dummy"], "features": ["conv_rate_plus_val1", "conv_rate_plus_val2"], "name": "transformed_conv_rate_fresh", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {}, "ttl_seconds": 0}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "transformed_conv_rate_fresh", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["__dummy"], "features": ["conv_rate_plus_val1", "conv_rate_plus_val2"], "name": "transformed_conv_rate", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {}, "ttl_seconds": 0}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "transformed_conv_rate", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "265845fd-55e4-4c72-aa34-11a497460bd4"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:36:57.247949+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "inputFacets": {}, "name": "driver_hourly_stats", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v2", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v2' aggregates features from: driver_hourly_stats, transformed_conv_rate. Total features: 8."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 8, "feature_views": ["driver_hourly_stats", "transformed_conv_rate"], "logging_enabled": false, "name": "driver_activity_v2", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v2", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "1fc7c154-7ac2-4af5-94c0-1cf8684e2404"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:36:57.248255+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}]}}, "inputFacets": {}, "name": "driver_hourly_stats", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v1", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v1' aggregates features from: driver_hourly_stats, transformed_conv_rate. Total features: 3."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 3, "feature_views": ["driver_hourly_stats", "transformed_conv_rate"], "logging_enabled": false, "name": "driver_activity_v1", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v1", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "0e26db11-9fa2-4782-917e-0b91b1406f26"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:36:57.248473+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "inputFacets": {}, "name": "driver_hourly_stats_fresh", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate_fresh", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v3", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v3' aggregates features from: driver_hourly_stats_fresh, transformed_conv_rate_fresh. Total features: 8."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 8, "feature_views": ["driver_hourly_stats_fresh", "transformed_conv_rate_fresh"], "logging_enabled": false, "name": "driver_activity_v3", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v3", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "9e128fd1-41f6-43c6-8a97-2aba72ee4bac"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
No changes to infrastructure

With these changes, the only difference appears to be a warning log that there is no config. Fallback is still console transport.

❯ uv tool run --from ~/tmp/feast --with openlineage-python feast apply
Installed 70 packages in 172ms
/Users/jacobbush/tmp/feast_demos/openlineage/exact_bobcat/feature_repo/feature_definitions.py:27: DeprecationWarning: Entity value_type will be mandatory in the next release. Please specify a value_type for entity 'driver'.
  driver = Entity(name="driver", join_keys=["driver_id"])
Applying changes for project exact_bobcat
/Users/jacobbush/.cache/uv/archive-v0/K59LZTbHZV0ll_GEi5pWK/lib/python3.13/site-packages/feast/feature_store.py:871: RuntimeWarning: On demand feature view is an experimental feature. This API is stable, but the functionality does not scale well for offline retrieval
  warnings.warn(
No changes to registry
WARNING:openlineage.client.client:Couldn't find any OpenLineage transport configuration; will print events to console.
INFO:openlineage.client.client:OpenLineageClient will use `console` transport
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:40:32.735121+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "driver_hourly_stats_source", "uri": "data/driver_stats.parquet"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "created", "description": "", "field_mapping": {}, "name": "driver_hourly_stats_source", "source_type": "FileSource", "tags": {}, "timestamp_field": "event_timestamp"}}, "inputFacets": {}, "name": "driver_hourly_stats_source", "namespace": "exact_bobcat"}, {"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "vals_to_add", "uri": "feast://vals_to_add"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "", "description": "", "field_mapping": {}, "name": "vals_to_add", "source_type": "RequestSource", "tags": {}, "timestamp_field": ""}}, "inputFacets": {}, "name": "vals_to_add", "namespace": "exact_bobcat"}, {"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "driver_stats_push_source", "uri": "feast://driver_stats_push_source"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "", "description": "", "field_mapping": {}, "name": "driver_stats_push_source", "source_type": "PushSource", "tags": {}, "timestamp_field": ""}}, "inputFacets": {}, "name": "driver_stats_push_source", "namespace": "exact_bobcat"}, {"facets": {"feast_entity": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastEntityFacet.json", "description": "", "join_keys": ["driver_id"], "name": "driver", "owner": "", "tags": {}, "value_type": "ValueType.UNKNOWN"}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "driver_id", "type": "ValueType.UNKNOWN"}]}}, "inputFacets": {}, "name": "driver", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feast_feature_views_exact_bobcat", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["driver"], "features": ["conv_rate", "acc_rate", "avg_daily_trips", "driver_metadata", "driver_config", "driver_profile"], "name": "driver_hourly_stats", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {"team": "driver_performance"}, "ttl_seconds": 86400}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "name": "driver_hourly_stats", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["driver"], "features": ["conv_rate", "acc_rate", "avg_daily_trips", "driver_metadata", "driver_config", "driver_profile"], "name": "driver_hourly_stats_fresh", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {"team": "driver_performance"}, "ttl_seconds": 86400}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "name": "driver_hourly_stats_fresh", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["__dummy"], "features": ["conv_rate_plus_val1", "conv_rate_plus_val2"], "name": "transformed_conv_rate", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {}, "ttl_seconds": 0}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "transformed_conv_rate", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["__dummy"], "features": ["conv_rate_plus_val1", "conv_rate_plus_val2"], "name": "transformed_conv_rate_fresh", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {}, "ttl_seconds": 0}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "transformed_conv_rate_fresh", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "f25377d6-96cc-4577-903c-d5bbc6ca1f2d"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:40:32.735775+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "inputFacets": {}, "name": "driver_hourly_stats_fresh", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate_fresh", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v3", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v3' aggregates features from: driver_hourly_stats_fresh, transformed_conv_rate_fresh. Total features: 8."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 8, "feature_views": ["driver_hourly_stats_fresh", "transformed_conv_rate_fresh"], "logging_enabled": false, "name": "driver_activity_v3", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v3", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "96e5f3ec-1e6f-44bb-a858-4f317de97a97"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:40:32.736071+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "inputFacets": {}, "name": "driver_hourly_stats", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v2", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v2' aggregates features from: driver_hourly_stats, transformed_conv_rate. Total features: 8."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 8, "feature_views": ["driver_hourly_stats", "transformed_conv_rate"], "logging_enabled": false, "name": "driver_activity_v2", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v2", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "2ba25258-9211-4675-be18-2165ee857fa5"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:40:32.736344+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}]}}, "inputFacets": {}, "name": "driver_hourly_stats", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v1", "namespace": "exact_bobcat"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v1' aggregates features from: driver_hourly_stats, transformed_conv_rate. Total features: 3."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 3, "feature_views": ["driver_hourly_stats", "transformed_conv_rate"], "logging_enabled": false, "name": "driver_activity_v1", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v1", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "95cd461f-6638-4d0c-bd43-5b07910032d4"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
No changes to infrastructure

And if we create an openlineage.yml file in the same directory

transport:
  type: transform
  transformer_class: openlineage.client.transport.transform.JobNamespaceReplaceTransformer
  transformer_properties:
    new_job_namespace: new_value
  transport:
    type: console

Then we can see that the transform transport is used, and the job namespace is transformed to new_value

❯ uv tool run --from ~/tmp/feast --with openlineage-python feast apply
/Users/jacobbush/tmp/feast_demos/openlineage/exact_bobcat/feature_repo/feature_definitions.py:27: DeprecationWarning: Entity value_type will be mandatory in the next release. Please specify a value_type for entity 'driver'.
  driver = Entity(name="driver", join_keys=["driver_id"])
Applying changes for project exact_bobcat
/Users/jacobbush/.cache/uv/archive-v0/K59LZTbHZV0ll_GEi5pWK/lib/python3.13/site-packages/feast/feature_store.py:871: RuntimeWarning: On demand feature view is an experimental feature. This API is stable, but the functionality does not scale well for offline retrieval
  warnings.warn(
No changes to registry
INFO:openlineage.client.client:OpenLineageClient will use `transform` transport
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:41:44.654834+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "vals_to_add", "uri": "feast://vals_to_add"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "", "description": "", "field_mapping": {}, "name": "vals_to_add", "source_type": "RequestSource", "tags": {}, "timestamp_field": ""}}, "inputFacets": {}, "name": "vals_to_add", "namespace": "exact_bobcat"}, {"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "driver_stats_push_source", "uri": "feast://driver_stats_push_source"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "", "description": "", "field_mapping": {}, "name": "driver_stats_push_source", "source_type": "PushSource", "tags": {}, "timestamp_field": ""}}, "inputFacets": {}, "name": "driver_stats_push_source", "namespace": "exact_bobcat"}, {"facets": {"dataSource": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet", "name": "driver_hourly_stats_source", "uri": "data/driver_stats.parquet"}, "feast_dataSource": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastDataSourceFacet.json", "created_timestamp_field": "created", "description": "", "field_mapping": {}, "name": "driver_hourly_stats_source", "source_type": "FileSource", "tags": {}, "timestamp_field": "event_timestamp"}}, "inputFacets": {}, "name": "driver_hourly_stats_source", "namespace": "exact_bobcat"}, {"facets": {"feast_entity": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastEntityFacet.json", "description": "", "join_keys": ["driver_id"], "name": "driver", "owner": "", "tags": {}, "value_type": "ValueType.UNKNOWN"}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "driver_id", "type": "ValueType.UNKNOWN"}]}}, "inputFacets": {}, "name": "driver", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feast_feature_views_exact_bobcat", "namespace": "new_value"}, "outputs": [{"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["driver"], "features": ["conv_rate", "acc_rate", "avg_daily_trips", "driver_metadata", "driver_config", "driver_profile"], "name": "driver_hourly_stats_fresh", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {"team": "driver_performance"}, "ttl_seconds": 86400}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "name": "driver_hourly_stats_fresh", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["driver"], "features": ["conv_rate", "acc_rate", "avg_daily_trips", "driver_metadata", "driver_config", "driver_profile"], "name": "driver_hourly_stats", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {"team": "driver_performance"}, "ttl_seconds": 86400}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "name": "driver_hourly_stats", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["__dummy"], "features": ["conv_rate_plus_val1", "conv_rate_plus_val2"], "name": "transformed_conv_rate_fresh", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {}, "ttl_seconds": 0}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "transformed_conv_rate_fresh", "namespace": "exact_bobcat", "outputFacets": {}}, {"facets": {"feast_featureView": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureViewFacet.json", "description": "", "entities": ["__dummy"], "features": ["conv_rate_plus_val1", "conv_rate_plus_val2"], "name": "transformed_conv_rate", "offline_enabled": false, "online_enabled": true, "owner": "", "tags": {}, "ttl_seconds": 0}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "transformed_conv_rate", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "863f7b49-2a67-4ff0-8228-92a01cd8997b"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:41:44.656098+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}]}}, "inputFacets": {}, "name": "driver_hourly_stats", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v1", "namespace": "new_value"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v1' aggregates features from: driver_hourly_stats, transformed_conv_rate. Total features: 3."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 3, "feature_views": ["driver_hourly_stats", "transformed_conv_rate"], "logging_enabled": false, "name": "driver_activity_v1", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v1", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "282d9d48-c0ad-414b-ac18-6c7f6feb6e94"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:41:44.656792+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "inputFacets": {}, "name": "driver_hourly_stats_fresh", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate_fresh", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v3", "namespace": "new_value"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v3' aggregates features from: driver_hourly_stats_fresh, transformed_conv_rate_fresh. Total features: 8."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 8, "feature_views": ["driver_hourly_stats_fresh", "transformed_conv_rate_fresh"], "logging_enabled": false, "name": "driver_activity_v3", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"fields": [], "name": "driver_metadata", "type": "Map"}, {"fields": [], "name": "driver_config", "type": "Json"}, {"fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v3", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "84392575-4010-4592-8818-0304ba55e699"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
INFO:openlineage.client.transport.console:{"eventTime": "2026-06-03T13:41:44.657523+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}]}}, "inputFacets": {}, "name": "driver_hourly_stats", "namespace": "exact_bobcat"}, {"facets": {"schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "inputFacets": {}, "name": "transformed_conv_rate", "namespace": "exact_bobcat"}], "job": {"facets": {"feast_project": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastProjectFacet.json", "offline_store_type": "", "online_store_type": "", "project_name": "exact_bobcat", "provider": "local", "registry_type": "file"}}, "name": "feature_service_driver_activity_v2", "namespace": "new_value"}, "outputs": [{"facets": {"documentation": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-1-0/DocumentationDatasetFacet.json#/$defs/DocumentationDatasetFacet", "description": "Feature Service 'driver_activity_v2' aggregates features from: driver_hourly_stats, transformed_conv_rate. Total features: 8."}, "feast_featureService": {"_producer": "feast", "_schemaURL": "https://feast.dev/spec/facets/1-0-0/FeastFeatureServiceFacet.json", "description": "", "feature_count": 8, "feature_views": ["driver_hourly_stats", "transformed_conv_rate"], "logging_enabled": false, "name": "driver_activity_v2", "owner": "", "tags": {}}, "schema": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-2-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet", "fields": [{"fields": [], "name": "conv_rate", "type": "Float32"}, {"fields": [], "name": "acc_rate", "type": "Float32"}, {"description": "Average daily trips", "fields": [], "name": "avg_daily_trips", "type": "Int64"}, {"description": "Driver metadata as key-value pairs", "fields": [], "name": "driver_metadata", "type": "Map"}, {"description": "Driver configuration as JSON", "fields": [], "name": "driver_config", "type": "Json"}, {"description": "Driver profile as a typed struct", "fields": [], "name": "driver_profile", "type": "Struct({name: String, age: String})"}, {"fields": [], "name": "conv_rate_plus_val1", "type": "Float64"}, {"fields": [], "name": "conv_rate_plus_val2", "type": "Float64"}]}}, "name": "driver_activity_v2", "namespace": "exact_bobcat", "outputFacets": {}}], "producer": "feast", "run": {"facets": {"tags": {"_producer": "feast", "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/TagsRunFacet.json#/$defs/TagsRunFacet", "tags": [{"key": "openlineage_client_version", "source": "OPENLINEAGE_CLIENT", "value": "1.47.1"}]}}, "runId": "fcaffd2c-8b11-424d-b9f3-219ae91e20b2"}, "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent"}
No changes to infrastructure

Misc

- config.py: get_transport_config() returns None when transport_type is
  None, allowing OpenLineage SDK to use its own defaults
- config.py: update docstrings to reflect None default
- repo_config.py: change transport_type from StrictStr='console' to
  Optional[StrictStr]=None
- docs/reference/openlineage.md: update config table default
- 07-openlineage-and-materialization.md: update field reference table
- skills/references/configuration.md: update comment

Signed-off-by: Jacob Bush <jacob.bush@shopify.com>
Co-authored-by: AI (Pi/Claude Opus 4.6 [250k]) <noreply@pi.dev>
Signed-off-by: Jacob Bush <jacob.bush@shopify.com>
@jacob-bush-shopify jacob-bush-shopify changed the title [feat]: Allow default openlineage configuration feat: Allow default openlineage configuration Jun 3, 2026
@jacob-bush-shopify jacob-bush-shopify marked this pull request as ready for review June 3, 2026 13:44
@jacob-bush-shopify jacob-bush-shopify requested a review from a team as a code owner June 3, 2026 13:44

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 3 additional findings.

Open in Devin Review

@franciscojavierarceo franciscojavierarceo merged commit 276b6df into feast-dev:master Jun 3, 2026
39 checks passed
@jacob-bush-shopify jacob-bush-shopify deleted the openlineage-config branch June 3, 2026 16:20
franciscojavierarceo pushed a commit that referenced this pull request Jun 13, 2026
# [0.64.0](v0.63.0...v0.64.0) (2026-06-13)

### Bug Fixes

* Add async_supported property to RedisOnlineStore ([9b088fe](9b088fe))
* Add missing feast init templates to operator CRD and enhance persistence documentation ([1941d4d](1941d4d))
* Allow to publish from reference branch ([5458ec8](5458ec8))
* API calls list ([4203eb7](4203eb7))
* **bigquery:** Enable list inference for parquet loads in offline_write_batch ([9243497](9243497)), closes [#5845](#5845)
* Bump grpcio dependencies ([07b4782](07b4782))
* **compute-engine/local:** Honor field_mapping on join keys in dedup + join nodes ([#6395](#6395)) ([bd01824](bd01824))
* **dynamodb:** Avoid tag race condition by using diff-based tag updates ([#6479](#6479)) ([bad2b7d](bad2b7d)), closes [#6418](#6418)
* **dynamodb:** Fix mypy type for _build_projection_expression return ([217b4da](217b4da))
* Fix intermittent async test failures for DynamoDB and Redis ([63c5eb1](63c5eb1))
* Fix mongodb blog title ([57d28d4](57d28d4))
* Fix shared SQL registry crash - avoid unnecessary UDF deserialization in proto cache building ([ac588d7](ac588d7))
* Fix SparkRetrievalJob.persist() failing for SparkSource ([209d7cd](209d7cd))
* Fixed formatting and image for mongo blog ([#6377](#6377)) ([f8389fb](f8389fb))
* Fixes for ray source ([7f592a4](7f592a4))
* **go:** skip registry refresh when cache_ttl_seconds <= 0 ([97ed40c](97ed40c))
* Handle array of strings columns in Athena materialization ([#6324](#6324)) ([4ed0278](4ed0278))
* make milvus VARCHAR max_length configurable, remove hardcoded 512 limit ([3b98c22](3b98c22))
* **operator:** Set appProtocol: grpc on registry gRPC Service ([#6367](#6367)) ([c9ae2b4](c9ae2b4))
* PyJWT 2.10+ added validation that rejects empty HMAC keys ([e756ffe](e756ffe))
* RemoteOnlineStore sends all features in a single HTTP request ([8f187dd](8f187dd))
* Remove registry proto dump to enforce RBAC and add permission checks to Commit/Refresh RPCs ([328431f](328431f))
* Remove selector migration job - no longer needed ([51c325e](51c325e))
* replace broken .claude skill symlink with correct relative path ([4541690](4541690))
* Replace selector label strip patch with migration Job for upgrade-safe selector uniqueness ([00dea50](00dea50))
* Scope feature view name conflict check to current project in file-based registry ([#6369](#6369)) ([a4fde83](a4fde83)), closes [#6209](#6209)
* **snowflake:** Stop double-quoting connection identifiers ([#6462](#6462)) ([e914d59](e914d59))
* **spark:** S3/GCS PyArrow filesystem resolution for staging paths ([#6442](#6442)) ([ae50414](ae50414))
* **trino:** Clean up temporary entity tables after retrieval ([#6381](#6381)) ([d86b13d](d86b13d)), closes [#6306](#6306)
* Update go-feature-server base image to Go 1.25 and fix operator Dockerfile COPY permissions ([86ef0bc](86ef0bc))

### Features

* [Backend] Data Quality Monitoring with native compute, multi-backend support, REST API, CLI ([#6202](#6202)) ([5458c37](5458c37))
* Add apache flink compute engine ([#6476](#6476)) ([9636d6a](9636d6a))
* Add demo noteboooks for users ([e362173](e362173))
* Add enabled/disabled toggle for feature views ([#6401](#6401)) ([5f1fa0d](5f1fa0d)), closes [#6395](#6395)
* Add Label View to init template ([ec272d5](ec272d5))
* Add mTLS support to remote registry gRPC client ([#6474](#6474)) ([c9602d8](c9602d8))
* Add Prometheus gauges for FeatureStore installation telemetry ([#6354](#6354)) ([1b681b7](1b681b7))
* Adds registry REST API endpoints for managing entities, data sources, and feature views ([#6413](#6413)) ([f77bd1d](f77bd1d))
* Allow CRUD on entities, data sources, and feature views from UI ([#6412](#6412)) ([2321c07](2321c07))
* Allow default openlineage configuration ([#6467](#6467)) ([276b6df](276b6df))
* **bigquery:** Support DATE-type event timestamp columns ([#6362](#6362)) ([753dee5](753dee5)), closes [#2530](#2530)
* **cli:** Add `feast projects delete` command (closes [#5095](#5095)) ([#6318](#6318)) ([1a4b96c](1a4b96c))
* Data Quality Monitoring added in feast UI ([#6422](#6422)) ([fa271be](fa271be))
* **dynamodb:** Use ProjectionExpression when requested_features is set ([0adc906](0adc906)), closes [#6058](#6058)
* Enhance DataSource and FeatureView modals with error handling and submission states ([96d7169](96d7169))
* Expose registry endpoints on feature server for MCP access ([f77981c](f77981c))
* Feast First-Class LabelView Implementation ([#6292](#6292)) ([c0e7e5d](c0e7e5d))
* Feast-MLflow Integration ([#6235](#6235)) ([7279c75](7279c75))
* Operational metrics for offline store and SOX metrics for both ([#6340](#6340)) ([65b1b80](65b1b80))
* Pre-compute feature service ([8011550](8011550))
* REST API-backed UI for RBAC compatibility and per-page lazy loading ([#6414](#6414)) ([6ae80af](6ae80af))
* Support non-string map key types ([#6382](#6382)) ([#6383](#6383)) ([728aa2e](728aa2e))
* Update FeatureStore CRD with DRA Fields ([01241e4](01241e4))

### Performance Improvements

* Cache feature view resolution in get_online_features to reduce per-request overhead ([55c2f18](55c2f18))
* Optimize feature serving latency with batched async Redis, cached checks fix ([103809a](103809a))
* Replace MessageToDict with optimized custom dict builder ([#6015](#6015)) ([9902064](9902064))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants