需要协助连接列中包含汇总值的两个数据框

时间:2019-03-07 08:53:46

标签: python-2.7 apache-spark dataframe pyspark apache-spark-sql

在pyspark中,我们尝试合并两个数据帧。 我们正在将一个数据框架与另一个框架连接在一起(它本身是由join生成的)

result3 = result2.join(df3, df3.mktg_id == result2."max(acct_mkt_id)").select('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').groupBy('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').agg(sum("result2.bskt_sum"))

错误消息

SyntaxError: invalid syntax

但是,我收到语法错误。 现在result2.schema确实具有max(acct_mkt_id)字段,但是如果我尝试不带引号

result3 = result2.join(df3, df3.mktg_id == result2.max(acct_mkt_id)).select('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').groupBy('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').agg(sum("result2.bskt_sum"))

错误消息-

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/hdp/2.5.3.0-37/spark/python/pyspark/sql/dataframe.py", line 842, in __getattr__
    "'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
AttributeError: 'DataFrame' object has no attribute 'max'

能否让我知道,我缺少什么或者如何绕过此错误。

1 个答案:

答案 0 :(得分:0)

在以下情况下,请使用col来引用该列:

import org.apache.spark.sql.functions.col

result2.col("max(acct_mkt_id)")

在PySpark中,您可以通过以下方式简单地引用该列:

result2["max(acct_mkt_id)"]