Description
We run into an issue where a customer created a column with an expensive PythonUDF call and build a very complex logic on the the top of that column as new derived columns. Due to `CollapseProject` and `ExtractPythonUDFs` rules the UDF is called ~1000 times for each row which degraded the performance of the query significantly.
The `ExtractPythonUDFs` rule could deduplicate deterministic UDFs so as to avoid performance degradation.