在Spark SQL中,是否可以为分组字段分配别名?
所以,例如,我想做这样的事情:
SELECT some_func(field_a) AS field_b
FROM table
GROUP BY some_func(field_a)
不支持,而是我必须这样做:
some_func
如您所见,我需要两次致电def func_1(a, b=1, c=None):
code here
,这有点烦人。
答案 0 :(得分:1)
如果使用某些聚合函数,则可以使用子查询:
SELECT field_b, SOME_AGG(field_c) FROM (
SELECT *, SOME_FUNC(field_a) field_b FROM table
) tmp GROUP BY field_b
或DSL:
table.groupBy(some_func($"field_a").alias("field_b"))
.agg(some_agg($"field_c"))
如果您不使用聚合distinct
子句将具有相同的效果:
SELECT DISTINCT some_func(field_a) field_b FROM table
与DSL等效:
table.select(some_func($"field_a").alias("field_b")).distinct