dtenedor commented on code in PR #42663: URL: https://github.com/apache/spark/pull/42663#discussion_r1310566256
########## python/pyspark/sql/tests/pandas/test_pandas_udf_grouped_agg.py: ########## @@ -575,6 +575,128 @@ def mean(x): assert filtered.collect()[0]["mean"] == 42.0 + def test_named_arguments(self): + df = self.data + weighted_mean = self.pandas_agg_weighted_mean_udf + + with self.tempView("v"): + df.createOrReplaceTempView("v") + self.spark.udf.register("weighted_mean", weighted_mean) + + for i, aggregated in enumerate( + [ + df.groupby("id").agg(weighted_mean(df.v, w=df.w).alias("wm")), + df.groupby("id").agg(weighted_mean(v=df.v, w=df.w).alias("wm")), + df.groupby("id").agg(weighted_mean(w=df.w, v=df.v).alias("wm")), + self.spark.sql("SELECT id, weighted_mean(v, w => w) as wm FROM v GROUP BY id"), + self.spark.sql( + "SELECT id, weighted_mean(v => v, w => w) as wm FROM v GROUP BY id" + ), + self.spark.sql( + "SELECT id, weighted_mean(w => w, v => v) as wm FROM v GROUP BY id" + ), + ] + ): + with self.subTest(query_no=i): + assertDataFrameEqual(aggregated, df.groupby("id").agg(mean(df.v).alias("wm"))) + + def test_named_arguments_negative(self): + df = self.data + weighted_mean = self.pandas_agg_weighted_mean_udf + + with self.tempView("v"): + df.createOrReplaceTempView("v") + self.spark.udf.register("weighted_mean", weighted_mean) + + with self.assertRaisesRegex( + AnalysisException, + "DUPLICATE_ROUTINE_PARAMETER_ASSIGNMENT.DOUBLE_NAMED_ARGUMENT_REFERENCE", + ): + self.spark.sql( + "SELECT id, weighted_mean(v => v, v => w) as wm FROM v GROUP BY id" Review Comment: thanks for this test! In addition could we add a negative test case where we provide a positional argument matching the first parameter of the function, then a named argument with the same name as that first parameter? It should return an error in that case. Same for the window functions testing. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org