Skip to content

Conversation

@franciscojavierarceo
Copy link
Member

What this PR does / why we need it:

This PR introduces a unified transformation system that consolidates the transformation capabilities into a single, powerful @transformation decorator. This addresses fragmentation across different transformation approaches and enables seamless training-serving consistency through dual registration.

from feast.transformation import transformation

@transformation(
    mode="python",           # Execution mode: python, pandas, sql, etc.
    when="on_write",         # Timing: on_read, on_write, batch, streaming
    online=True,             # Enable dual registration for training-serving consistency
    sources=[driver_source], # Input data sources
    schema=[                 # Output schema definition
        Field(name="trip_duration_minutes", dtype=Float64),
        Field(name="trip_cost_usd", dtype=Float64)
    ],
    entities=[driver],      # Entity relationships
    name="trip_features"    # Optional custom name
)
def trip_feature_transform(inputs):
    """Calculate trip features from raw driver data."""
    return [
        {
            "trip_duration_minutes": inp["trip_seconds"] / 60,
            "trip_cost_usd": inp["distance_km"] * 2.50 + 3.00
        }
        for inp in inputs
    ]

Which issue(s) this PR fixes:

#4584, #5716, #5689

Misc

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
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.

2 participants