我在sparksql/pyspark for scala中尝试了本文unpivot中描述的内置堆栈函数,对于用包含字母的代码标识的每一列都可以很好地工作,但对于那些代码只是一个数字的列则不行。
我有一个像这样的Dataframe
我申请了链接答案中提到的:
val result = df.select($"Id", expr("stack(3, '00C', 00C, '0R5', 0R5, '234', 234)"))
结果就是这个
我想要的是,第234行的值应该是0。
我在sparksql/pyspark for scala中尝试了本文unpivot中描述的内置堆栈函数,对于用包含字母的代码标识的每一列都可以很好地工作,但对于那些代码只是一个数字的列则不行。
我有一个像这样的Dataframe
我申请了链接答案中提到的:
val result = df.select($"Id", expr("stack(3, '00C', 00C, '0R5', 0R5, '234', 234)"))
结果就是这个
我想要的是,第234行的值应该是0。
1条答案
按热度按时间s71maibg1#
因为234是数字&在sql中,如果您选择任何数字,它将返回与值相同的数字,您需要告诉编译器234是列名而不是数字,为此您必须在数字周围使用反勾号(`),即“234”。
检查以下代码。