Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
7383550
feat: updating protos to separate transformation
franciscojavierarceo Mar 17, 2024
6bcff8d
fixed stuff...i think
franciscojavierarceo Mar 17, 2024
ea58ace
updated tests and registry diff function
franciscojavierarceo Mar 18, 2024
1713313
updated base registry
franciscojavierarceo Mar 18, 2024
4a00c12
updated react component
franciscojavierarceo Mar 18, 2024
97a8bb6
formatted
franciscojavierarceo Mar 18, 2024
5190d6c
updated stream feature view proto
franciscojavierarceo Mar 18, 2024
23ae349
making the proto changes backwards compatable
franciscojavierarceo Mar 18, 2024
1d598d2
trying to make this backwards compatible
franciscojavierarceo Mar 20, 2024
81c6f82
caught a bug and fixed the linter
franciscojavierarceo Mar 20, 2024
7687e23
actually linted
franciscojavierarceo Mar 20, 2024
6507808
updated ui component
franciscojavierarceo Mar 20, 2024
f44c227
accidentally commented out fixtures
franciscojavierarceo Mar 20, 2024
dd2a5ca
Updated
franciscojavierarceo Mar 22, 2024
9ac6793
incrementing protos
franciscojavierarceo Mar 22, 2024
5a1db09
updated tests
franciscojavierarceo Mar 22, 2024
e6bf1e9
fixed linting issue and made backwards compatible
franciscojavierarceo Mar 22, 2024
0daf027
feat: Renaming OnDemandTransformations to Transformations
franciscojavierarceo Mar 24, 2024
9417006
updated proto name
franciscojavierarceo Mar 24, 2024
eff1497
renamed substrait proto
franciscojavierarceo Mar 24, 2024
ae19919
renamed substrait proto
franciscojavierarceo Mar 24, 2024
e34b604
updated
franciscojavierarceo Mar 24, 2024
9cd0ebe
updated
franciscojavierarceo Mar 25, 2024
7b9f180
updated integration test
franciscojavierarceo Mar 25, 2024
19544f4
missed one
franciscojavierarceo Mar 25, 2024
41524c9
updated to include Substrait type
franciscojavierarceo Mar 25, 2024
7de39ab
linter
franciscojavierarceo Mar 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
updated proto name
Signed-off-by: Francisco Javier Arceo <franciscojavierarceo@users.noreply.github.com>
  • Loading branch information
franciscojavierarceo committed Mar 24, 2024
commit 94170066c30d1a3948da12a82422c282de3d97d0
5 changes: 2 additions & 3 deletions protos/feast/core/Transformation.proto
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,12 @@ message UserDefinedFunctionV2 {

// A feature transformation executed as a user-defined function
message FeatureTransformationV2 {
// Note this Transformation starts at 5 for backwards compatibility
oneof transformation {
UserDefinedFunctionV2 user_defined_function = 1;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I know this isn't ready, but let me suggest some names. What if we call this PythonTransformation instead of UserDefinedFunctionV2. We could reuse that message type both for pandas_transformation and upcoming python_transformation fields and V2 in the naming (I think) will no longer be necessary. wdyt?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I tend to like stating V2 so that people understand it's a replacement for the deprecated proto. Are you thinking of making PythonTransformation an enum as well with Pandas and Python as elements? Feel free to suggest what you're thinking to make it a little more concret if you want.

My guess is something like

message FeatureTransformationV2 {
    oneof PythonTransformation {
        NativePython native_python = 1;
        Pandas pandas = 2;
    }
    SubstraitTransformationV2 substrait_transformation = 3;
}

Or something else?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

No, that would leave the possibility of having both python and substrait fields set, so probably not the best approach. I was thinking more like this (I'll omit V2s here just for brevity).

message FeatureTransformation {
    oneof transformation {
        PythonTransformation pandas_transformation  = 1;
        SubstraitTransformation substrait_transformation = 2;
        PythonTransformation python_transformation  = 3;
    }
}

note that pandas_transformation and python_transformation fields share the message type but that's just incidental because it just so happens that they need same type of information. If in the future we see that that's no longer the case, we could introduce PandasTransformation message as well and the first field of transformation will become PandasTransformation pandas_transformation = 1;

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I like the UDF structure as it's a common industry pattern/convention especially for Spark.

@HaoXuAI any thoughts?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I'm not specifically against UDFs, but the way I like to think about it all these options are sort of udfs anyway, so calling the message just UDF without any quilifier seems redundant, if it was called PythonUserDefinedFunction then it would be okay. I guess what I'm saying is I'm equally okay with the trio of (PythonTransformation, SubstraitTransformation, PandasTransformation) and with that of (PythonUDF, SubstraitUDF and PandasUDF).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@jeremyary @etirelli any opinions here? I am in favor of user_defined_function and the code for this PR is ready otherwise.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Lazy consensus will win here. I'm going to merge as is since everything's covered now.

OnDemandSubstraitTransformationV2 on_demand_substrait_transformation = 2;
SubstraitTransformationV2 substrait_transformation = 2;
}
}

message OnDemandSubstraitTransformationV2 {
message SubstraitTransformationV2 {
bytes substrait_plan = 1;
}