1

我正在做多列的SUM,这些列想要包含在SELECT列表中。如何在Dataframe SELECT列表中通过别名列获得组

下面是我的工作:

val df=df0 
          .join(df1, df1("Col1")<=>df0("Col1")) 
          .filter((df1("Colum")==="00") 
          .groupBy(df1("Col1"),df1("Col1")) 
          .agg(sum(df1("Amount").alias("Amount1")),sum(df1("Amount2").alias("Amount2"))) 
          .select(
             df1("Col1").alias("co11"), 
             df1("Col2").alias("Col2"), 
             Amount1, Amount2 --getting error here 
             ) 

如何在select列表中的别名列?

回答

1

使用col功能或'

import org.apache.spark.sql.functions._ 
import spark.implicits._ 
val df=df0 
    .join(df1, df1("Col1")<=>df0("Col1")) 
    .filter((df1("Colum")==="00") 
    .groupBy(df1("Col1"),df1("Col1")) 
    .agg(sum(df1("Amount")).alias("Amount1"),sum(df1("Amount2")).alias("Amount2")) 
    .select(
     df1("Col1").alias("co11"), 
     df1("Col2").alias("Col2"), 
     col("Amount1"), 'Amount2 
    ) 
+0

我试过,但收到错误 “User类抛出异常:org.apache.spark.sql.AnalysisException:无法解析 ''Amount1'' 给定的输入栏” – sks

+0

@sks - 我纠正了我的答案。别名顺序错了,它必须在总和上完成,而不是源列 –

+0

我使用的是别名列而非源列,但仍然是相同的错误。无法解析金额1。 – sks